高校教务系统登录页面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…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
