高校教务系统登录页面JS分析——长沙理工大学教务系统
高校教务系统密码加密逻辑及JS逆向

本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。
本文将是本专栏最后一篇文章,我看了绝大多数高校的网站都差不多,甚至,有的学校用的系统都是一样的,我们就不去一一介绍了,今天这个网站,我还是第一次遇到,感谢大家的支持。
本文仅供交流学习,勿用于非法用途。
一、密码加密基本概念
密码加密是一种保护信息安全的技术手段,它通过将明文(原始信息)转换为密文(加密后的信息),以防止未经授权的访问和篡改。常见的密码加密算法有MD5、SHA-1、SHA-256等。
1.1 加密过程
加密过程通常包括以下步骤:
- 密钥扩展:将密钥扩展为多个轮值,每个轮值都与明文的一部分有关。
- 初始轮值生成:将扩展后的密钥与轮常数进行某种运算,生成第一轮加密的密文。
- 多轮迭代:对密文进行多轮迭代操作,每轮操作都包括非线性函数、模运算和轮常数的变换。
- 最终密文:经过多轮迭代后,得到最终的密文。
1.2 解密过程
解密过程与加密过程相反,通过反向操作来恢复原始明文。通常需要知道加密时使用的密钥和算法。我最近更新了两篇关于解密的文章,大家感兴趣可以查看。
〖Python网络爬虫实战㊲〗- JavaScript 逆向实战(一)
〖Python网络爬虫实战㊳〗- JavaScript 逆向实战(二)
二、高校教务系统密码加密逻辑分析
2.1 抓包
我们首先打开长沙理工大学的教务系统的登录页面,我们直接百度搜索这个学校的教务系统就可以看到,点进去之后,我们可以看到,只有学号和密码,有的高校会有验证码,或者有的高校是错误一次密码,会验证验证码。

我们打开开发者工具,尝试登录抓包,网页会返回这样的数据接口。我们用户名和密码都是默认输入1234,你也可以输入其他的。

2.2 分析加密参数
我们接下来,就是来分析这个密码是怎么加密的。我们全局搜索encoded。定位到加密的位置。我们这里只有这个参数被加密了。我们猜测这个包含了用户的账号和密码信息。

我们看到这里加密逻辑不难,我们直接扣下来。
三、JS逆向分析方法
逆向分析是指从已知的加密文本或程序中还原出原始信息的过程。在本例中,我们将使用JavaScript编写一个简单的逆向分析工具,用于逆向高校教务系统的密码。
环境使用
- python 3.9
- pycharm
- node
实现代码
//!NODE.JS 18.16
// _*_ coding: utf-8 _*_
//
// Copyright (C) 2022 - 2023 BROKEN, Inc. All Rights Reserved
//
// @Time : 2023/11/10 22:34
// @Author : 爱吃饼干的小白鼠
// @File : 长沙理工大学.JS
// @IDE : PyCharm
// @Blog : https://broken.blog.csdn.net/var dataStr = 'b1xw317225n2q82m080193i24ja9ea20qmmc7LLYXG#31323121312313313213'
var scode=dataStr.split("#")[0];
var sxh=dataStr.split("#")[1];
var userAccount = '1234' //账号
var userPassword = '1234'
var code=userAccount+"%%%"+userPassword;
var encoded="";
for(var i=0;i<code.length;i++){if(i<20){encoded=encoded+code.substring(i,i+1)+scode.substring(0,parseInt(sxh.substring(i,i+1)));scode = scode.substring(parseInt(sxh.substring(i,i+1)),scode.length);}else{encoded=encoded+code.substring(i,code.length);i=code.length;}
}console.log(encoded)
这行代码是在将 code 字符串和 scode 字符串的一部分拼接到 encoded 字符串上。
具体来说:
code.substring(i,i+1)是从code字符串中提取一个子字符串,从索引i开始,长度为1。scode.substring(0,parseInt(sxh.substring(i,i+1)))是从scode字符串中提取一个子字符串,从索引0开始,长度为parseInt(sxh.substring(i,i+1))。sxh.substring(i,i+1)提取sxh中的一部分子字符串,然后parseInt()将其转换为整数。
然后,这两个子字符串被拼接起来,并附加到 encoded 字符串的末尾。
我们这里只要简单修改一下就可以了,这里的dataStr每次的值都不一样,目前我还没有找到是怎么生成的,等后面找到了,我会补齐这一块。
四、总结
本文介绍了高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的方法。通过学习这些知识,你可以更好地理解密码加密技术的原理,并掌握一定的逆向分析技巧。请注意,逆向分析可能涉及到法律问题,请在合法范围内进行研究和实践。
五、累计更新
争取到到底早日更新30所高校,大家可以在评论区留言。前期更的可能会多一点,有的学校教务系统都没有加密,我这里就不写了,还有,部分学校的教务系统已经和我之前写的是一样的,我也不重复赘述了。
往期作品可以查看专栏👇👇👇
全国高校教务系统登录页面JS分析_爱吃饼干的小白鼠的博客-CSDN博客

相关文章:
高校教务系统登录页面JS分析——长沙理工大学教务系统
高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文将是本专栏最后一篇文章,我看了绝大多数高…...
element-ui的form校验失败
数值与字符串混淆 数值 <el-input type"number" v-model.number"form.averageFruitWeight" placeholder"请输入平均单果重"/>字符串 fruitDevelopmentStage: [{pattern: ^[-\\]?([0-9]\\.?)?[0-9]$, message: 输入必须为数字, trigge…...
java数据结构--阻塞队列
目录 一.概念 二.生产者消费者问题 三.阻塞队列接口BlockingQueue 四.基于数组实现单锁的阻塞队列 1.加锁方式 2.代码实现 3.解释说明 (1).offer添加元素 (2)poll取出元素 4.timeout超时时间 5.测试 五.基于数组实现双锁的阻塞队列 1.问题 …...
使用p2p实现Linux内网快速分发文件
安装opentracker 方法一:编译安装 参考如下官方文档进行操作即可,国内下载源码会比较慢 https://erdgeist.org/arts/software/opentracker/ 编译完成后会生成可执行文件opentracker和opentracker.debug 可以直接./opentracker.debug进行验证 方法二&a…...
Android Studio报错:connect refused
参考链接: https://blog.csdn.net/qq_43213783/article/details/113936012 参考文章中说报错主要是由于代理导致的,在文件->设置->外观与行为->系统设置->HTTP代理。 方法一: 查看打开代理(前提是代理可以通网&#x…...
ubuntu 源码编译安装make过程很慢问题解决
一般下载的时候有两种方式 使用wget 下载后使用tar命令解压直接git clone 源代码 下载完成之后,进入目录,新建一个文件夹build,防止影响码源结构第三步,进入到build目录,使用cmake编译 cmake ..第四步直接make编译 …...
深度学习 opencv python 实现中国交通标志识别 计算机竞赛
文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…...
希尔排序原理
目录: 一、希尔排序与插入排序 1)希尔排序的概念 2)插入排序实现 二、希尔排序实现 一、希尔排序与插入排序 1)希尔排序的概念 希尔排序(Shells Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Incremen…...
测试用例的设计方法(全):判定表驱动分析方法
目录 判定表驱动分析方法 一. 方法简介 二. 实战演习 判定表驱动分析方法 一. 方法简介 1.定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。 2.判定表的优点 能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此…...
node 第十七天 使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa
什么是非对称加密 加密过程需要两个钥匙, 公钥和私钥 其中公钥用于加密明文, 私钥用于解密公钥加密的密文, 解密只可以用私钥 公钥和私钥是一对一的关系 公钥可以发送给用户, 不用担心泄露 私钥需要保存在服务端, 不能泄露 例如: 战场上,B要给A传递一条消息…...
Spring-依赖注入findAutowireCandidates源码实现
findAutowireCandidates()实现 1、找出BeanFactory中类型为type的所有的Bean的名字,根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象 2、把resolvableDependencies中key为type的对象找出来并添加到result中 3、遍历根据type找出的b…...
单页面应用与多页面应用的区别?
单页面应用(SPA)与多页面应用(MPA)的主要区别在于页面数量和页面跳转方式。单页面应用只有一个主页,而多页面应用包含多个页面。 单页面应用的优点有: 用户体验好:内容的改变不需要重新加载整…...
模型预处理的ToTensor和Normalize
模型预处理的ToTensor和Normalize flyfish import torch import numpy as np from torchvision import transformsmean (0.485, 0.456, 0.406) std (0.229, 0.224, 0.225)# data0 np.random.randint(0,255,size [4,5,3],dtypeuint8) # data0 data0.astype(np.float64) da…...
nodejs express multer 保存文件名为中文时乱码,问题解决 originalname
nodejs express multer 保存文件名为中文时乱码,问题解决 originalname 一、问题描述 用 express 写了个后台,在接收文件并保存的时候 multer 接收到的文件名为乱码。 二、解决 找了下解决方法,在 github 的 multer issue 中找到了答案 参…...
大数据之LibrA数据库系统告警处理(ALM-12035 恢复任务失败后数据状态未知)
告警解释 执行恢复任务失败后,系统会自动回滚,如果回滚失败,可能会导致数据丢失等问题,如果该情况出现,则上报告警,如果下一次该任务恢复成功,则恢复告警。 告警属性 告警ID 告警级别 可自动…...
汽车生产RFID智能制造设计解决方案与思路
汽车行业需求 汽车行业正面临着快速变革,传统的汽车制造方式正在向柔性化、数字化、自动化和数据化的智能制造体系转变,在这个变革的背景下,汽车制造企业面临着物流、生产、配送和资产管理等方面的挑战,为了应对这些挑战…...
讲解机器学习中的 K-均值聚类算法及其优缺点。
K-均值聚类算法是一种无监督学习算法,常用于对数据进行聚类分析。其主要步骤如下: 首先随机选择K个中心点(质心)作为初始聚类中心。 对于每一个样本,计算其与每一个中心点的距离,将其归到距离最近的中心点…...
开源DB-GPT实现连接数据库详细步骤
官方文档:欢迎来到DB-GPT中文文档 — DB-GPT 👏👏 0.4.1 第一步:安装Minicoda https://docs.conda.io/en/latest/miniconda.html 第二步:安装Git Git - Downloading Package 第三步:安装embedding 模型到…...
java学习part01
15-Java语言概述-单行注释和多行注释的使用_哔哩哔哩_bilibili 1.命令行 javac编译出class文件 然后java运行 2. java文件每个文件最多一个public类 3.java注释 单行注释 // 多行注释 文档注释 文档注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文…...
渗透测试学习day3
文章目录 靶机:DancingTask 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8 靶机:RedeemerTask 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9Task 10Task 11 靶机:AppointmentTask 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9T…...
Seraphine终极指南:如何通过智能BP系统快速提升英雄联盟段位
Seraphine终极指南:如何通过智能BP系统快速提升英雄联盟段位 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于LCU API开发的免费开源英雄联盟战绩查询与辅助工具,它…...
航空特色学校建设实施方案
【核心亮点】1. "三维一体"课程体系:● 基础课(航空原理/飞行启蒙) 专项课(模拟飞行、航模制作、无人机编程) 学科融合课(航空物理/美术/编程),覆盖全学段。● 自主研发校…...
从dbus-send到busctl:手把手教你迁移到更现代的D-Bus调试工具链
从dbus-send到busctl:现代D-Bus调试工具链迁移实战指南 如果你曾经在Linux系统中与D-Bus打交道,那么对dbus-send这个老牌命令行工具一定不陌生。它就像一把瑞士军刀,虽然功能全面但用起来总有些笨拙——复杂的参数构造、晦涩的输出格式、缺乏…...
手把手教你搞定EMC EFT测试:从电源线到信号线的完整整改实战(附常见失败原因分析)
EMC EFT测试实战指南:从诊断到整改的完整技术路线 最近在帮一家智能家居厂商做网关产品的EMC认证时,遇到了典型的EFT测试失败问题——设备在测试中频繁重启,通信模块出现异常。这种场景对于硬件工程师来说再熟悉不过了。EFT(电快速…...
【通义千问(Qwen)】视频分析与多模态模型汇总
通义千问(Qwen)视频分析与多模态模型汇总 整理日期:2026-04-21 数据来源:阿里 Qwen 官方博客、HuggingFace、arXiv 技术报告、DashScope 文档 ⚠️ 标注说明:✅ 已确认 / ⚠️ 部分确认 / ❌ 不支持或未开源 亲爱的朋友…...
torch.cuda.is_available()返回False?手把手教你从驱动到环境逐项排查
深度学习环境配置:系统性解决PyTorch GPU识别问题全指南 当你在终端输入torch.cuda.is_available(),期待看到True却得到False时,那种挫败感每个深度学习开发者都深有体会。这不是简单的安装问题,而是涉及驱动、环境、版本匹配等多…...
Day05:大模型安全与合规科普笔记:守护AI时代的数据安全防线
文章目录大模型安全与合规科普笔记:守护 AI 时代的数据安全防线引言:AI 时代的安全挑战一、数据隐私:涉密数据的安全防护1.1 涉密及客户数据必须脱敏加密的原因1.2 严禁直接传入公共大模型的影响1.3 数据脱敏和加密的技术原理与实施方式二、内…...
不止于可视化:用MATLAB分析克拉尼图形中的振动模态与频率响应
克拉尼图形工程化分析:MATLAB振动模态与频率响应的深度实践 当金属板上撒落的细沙在声波作用下自发排列成神秘图案时,我们见证的不仅是物理学的美学呈现,更是振动系统内在规律的直观表达。这种被称为克拉尼图形的现象,早已从实验室…...
5分钟快速上手:xrdp开源远程桌面服务器完整配置指南
5分钟快速上手:xrdp开源远程桌面服务器完整配置指南 【免费下载链接】xrdp xrdp: an open source RDP server 项目地址: https://gitcode.com/gh_mirrors/xrd/xrdp 你是否需要在Linux服务器上搭建一个稳定高效的远程桌面环境?xrdp作为一款开源的R…...
保姆级教程:用STM32CubeIDE搞定STM32F407的USB虚拟串口(CDC)通信与速度测试
STM32F407 USB CDC通信实战:从零构建高速串口通道 引言 在嵌入式开发领域,可靠的数据传输始终是核心需求。传统UART串口受限于115200bps的速率天花板,而USB CDC(Communication Device Class)技术则为我们打开了高速通信…...
