高校教务系统登录页面JS分析——西安科技大学

news2024/11/27 2:48:27

高校教务系统密码加密逻辑及JS逆向

本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。

本文仅供交流学习,勿用于非法用途。

一、密码加密基本概念

密码加密是一种保护信息安全的技术手段,它通过将明文(原始信息)转换为密文(加密后的信息),以防止未经授权的访问和篡改。常见的密码加密算法有MD5、SHA-1、SHA-256等。

1.1 加密过程

加密过程通常包括以下步骤:

  1. 密钥扩展:将密钥扩展为多个轮值,每个轮值都与明文的一部分有关。
  2. 初始轮值生成:将扩展后的密钥与轮常数进行某种运算,生成第一轮加密的密文。
  3. 多轮迭代:对密文进行多轮迭代操作,每轮操作都包括非线性函数、模运算和轮常数的变换。
  4. 最终密文:经过多轮迭代后,得到最终的密文。

1.2 解密过程

解密过程与加密过程相反,通过反向操作来恢复原始明文。通常需要知道加密时使用的密钥和算法。

二、高校教务系统密码加密逻辑分析

2.1 抓包

我们首先打开西安科技大学的教务系统的登录页面,我们直接百度搜索这个学校的教务系统就可以看到,点进去之后,我们可以看到,只有学号和密码,有的高校会有验证码,或者有的高校是错误一次密码,会验证验证码。

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

2.2 分析加密参数

我们接下来,就是来分析这个密码是怎么加密的。我们全局搜索password。定位到加密的位置。我们这里只有这个密码参数被加密了。

我们可以看到,这里把encrypt的值赋给了password。我们只要找到encrypt这个值就可以了。

三、JS逆向分析方法

逆向分析是指从已知的加密文本或程序中还原出原始信息的过程。在本例中,我们将使用JavaScript编写一个简单的逆向分析工具,用于逆向高校教务系统的密码。

环境使用

  • python 3.9
  • pycharm
  • node

我们全局搜索encrypt,我们就很容易定位到一个函数,我们不难发现其加密原理。

key = CryptoJS.enc.Utf8.parse('8a9386555b3ecbff0c509e02deb2feb1'.substr(0,16));
iv = CryptoJS.enc.Utf8.parse('8a9386555b3ecbff0c509e02deb2feb1'.substr(0,16));
var encrypted = CryptoJS.AES.encrypt(str, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return encrypted;

这段代码是使用JavaScript加密库CryptoJS来对一个字符串进行AES加密。

代码实现

var CryptoJS = require('crypto-js')


var __token__ = '2cd3c46b571239f3bed7041af9527031'
password = encrypt('12345').toString();



function encrypt(str) {
key = CryptoJS.enc.Utf8.parse(__token__.substr(0,16));
iv = CryptoJS.enc.Utf8.parse(__token__.substr(0,16));
var encrypted = CryptoJS.AES.encrypt(str, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return encrypted;
}
console.log(password)

这段代码的主要功能是使用CryptoJS库对一个字符串进行AES加密。现在我将为您逐行解释:

  1. var CryptoJS = require('crypto-js'): 这一行导入了名为"crypto-js"的Node.js模块,这个模块提供了JavaScript实现的加密算法。
  2. var __token__ = '2cd3c46b571239f3bed7041af9527031': 这里定义了一个全局变量__token__,并赋值为一个固定的字符串。这个字符串被用作AES加密的密钥。
  3. password = encrypt('12345').toString();: 这一行调用了上面定义的encrypt函数,将'12345'作为参数传递进去,并将返回的加密结果转换为字符串,然后赋值给变量password。
  4. function encrypt(str) { ... }: 这里定义了一个名为encrypt的函数,这个函数接受一个字符串参数str。
  5. key = CryptoJS.enc.Utf8.parse(__token__.substr(0,16));: 在encrypt函数内部,使用CryptoJS的Utf8解析方式将__token__的前16个字符解析为一个密钥key。
  6. iv = CryptoJS.enc.Utf8.parse(__token__.substr(0,16));: 同样地,使用CryptoJS的Utf8解析方式将__token__的前16个字符解析为一个初始化向量iv。
  7. var encrypted = CryptoJS.AES.encrypt(str, key, { ... });: 使用之前解析的密钥key和初始化向量iv,对参数str进行AES加密,并将加密结果赋值给变量encrypted。
  8. return encrypted;: 返回加密后的结果。
  9. console.log(password): 在控制台输出password的值,也就是我们前面加密后的结果。

需要注意的是,这里使用了CBC模式和ZeroPadding填充方式进行AES加密,并且密钥和初始化向量都是从__token__这个字符串中取出的前16个字符。

我这里直接把代码给大家,大家感兴趣可以先尝试直接去写,可以和我写的做比较。今天的js代码就比较简单了。 

实现效果

大家可以看到加密的结果和网页一模一样,这个token就是网页返回的值,我们拿到token就能加密密码,从而就能实现模拟登录。 

安装crypto-js库

使用npm或yarn来安装crypto-js:(如果提示缺少crypto-js库,大家可以安装一下)

npm install crypto-js

四、总结

本文介绍了高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的方法。通过学习这些知识,你可以更好地理解密码加密技术的原理,并掌握一定的逆向分析技巧。请注意,逆向分析可能涉及到法律问题,请在合法范围内进行研究和实践。

五、累计更新

争取到到底早日更新30所高校,到目前,已经累计更新了16所高校,后面可能会一个星期一更,不会这么频繁了。大家可以在评论区留言。前期更的可能会多一点,有的学校教务系统都没有加密,我这里就不写了,还有,部分学校的教务系统已经和我之前写的是一样的,我也不重复赘述了。

往期作品可以查看专栏👇👇👇

全国高校教务系统登录页面JS分析_爱吃饼干的小白鼠的博客-CSDN博客

6adf31c8c5dd4e6a83314f4805b30bc1.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

42908-2023 纺织染整助剂产品中有机卤素含量的测定

1 范围 本文件描述了纺织染整助剂产品中有机卤素含量的测定方法。 本文件适用于各类纺织染整助剂中有机卤素含量的测定,包括有机氟、有机氯、有机溴。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日…

自然语言处理---Transformer模型

Transformer概述 相比LSTM和GRU模型,Transformer模型有两个显著的优势: Transformer能够利用分布式GPU进行并行训练,提升模型训练效率。 在分析预测更长的文本时,捕捉间隔较长的语义关联效果更好。 Transformer模型的作用 基于seq…

香港科技大学广州|先进材料学域博士招生宣讲会—上海专场!!!(暨全额奖学金政策)

香港科技大学广州|先进材料学域博士招生宣讲会—上海专场!!!(暨全额奖学金政策) “跨学科融合创新,引领新兴与未来行业的突破与发展——先进材料学域” ���…

深入理解多线程编程和 JVM 内存模型

文章目录 1. 理解进程和线程的概念进程(Process)线程(Thread) 2. 理解竞态条件和死锁竞态条件(Race Condition)死锁(Deadlock) 3. JVM 内存模型堆(Heap)栈&am…

正规文法、正规式、确定的有穷自动机DFA、不确定的有穷自动机NFA 的概念、区分以及等价性转换【我直接拿下!】

文章目录 正规文法正规式有穷自动机确定的有穷自动机——DFA不确定的有穷自动机——NFADFA 与 NFA 的区分 正规式转换为正规文法正规文法转换为正规式NFA 转换为 DFANFA 最小化 NFA 转换为正规式正规式转换为 NFA正规文法转换为 NFANFA 转换为正规文法 前言: 在学习…

C语言--程序环境和预处理(宏)

目录 前言 本章重点: 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境​编辑 2.2 编译本身也分为几个阶段 2.3 运行环境 3. 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define 定义宏 2.2.3 #define 替换规则 …

fetch网络请求详解

一:三种常见的网络请求对比: AJAX:基于XMLHttpRequest收发请求,使用较为繁琐,代码量会比较多axios:基于promise的请求客户端,在浏览器和node中均可使用,使用便捷,功能强…

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第五部分:支付系统

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第五部分:支付系统前言如何学习支付系统信用卡为什么被称为“银行最赚钱的产品”?VISA/万事达卡如何赚钱?步骤说明为什么开证行应该得到补偿 当我们在商家…

Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)

文章目录 1. Linux软件包管理器——yumyum 语法yum 常用命令安装 yum 仓库源 2. Linux编辑器——vimvim 的五种常用模式模式切换vim 基本操作命令模式命令集(1)光标命令(2)复制粘贴命令(3)撤销与重做&#…

深度学习---卷积神经网络

卷积神经网络概述 卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域。往往输入的图像都很大,使用全连接网络的话,计算的代价较高。另外图像也很难保留原有的特征,导致图像处理的准确率不高。 卷积神经网络&#xff0…

安全多方计算框架最全合集(持续更新)

安全多方计算框架 本文对现有安全多方计算/学习框架进行了全面、系统的梳理。 目前大部分安全多方计算框架主要基于秘密共享、同态加密、混淆电路以及相关基本模块的组合。通常使用定制的协议来支持特定数量的参与方(一般为两方或三方),导致…

我发现用StarUML来画UML也挺香的

2023年10月22日,周日晚上 我已经决定以后都用StarUML来画UML了,因为这个软件不仅免费,而且太适合画UML图了 我之前主要用plantUML和draw.io来画UML, plantUML虽然是通过文本来生成UML图,但是排版不是不好看&#xff…

“智能文件批量改名工具:轻松管理文件名,一键去除特殊符号“

你是否曾经在面对一堆文件名中包含特殊符号,而感到困扰,不知道如何快速、准确地处理它们?现在,我们为你带来了一款智能文件批量改名工具,它可以轻松地帮助你去除文件名中的特殊符号,让你的文件管理更加规范…

【试题002】C语言有关于sizeof的使用

1.说明&#xff1a;sizeof()是测量数据类型所占用的内存字节数&#xff0c;字符串常量在存储时除了要存储有效字节外&#xff0c;还要存储一个字符串结束志‘\0’。 2.代码举栗子&#xff1a; #include <stdio.h> int main() {char str[] "book";printf(&qu…

网络协议--Traceroute程序

8.1 引言 由Van Jacobson编写的Traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具。尽管不能保证从源端发往目的端的两份连续的IP数据报具有相同的路由&#xff0c;但是大多数情况下是这样的。Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过…

开源LLEMMA发布:超越未公开的顶尖模型,可直接应用于工具和定理证明

深度学习自然语言处理 原创作者&#xff1a;Winnie 今天向大家介绍一个新的开源大语言模型——LLEMMA&#xff0c;这是一个专为数学研究而设计的前沿语言模型。 LLEMMA解数学题的一个示例 LLEMMA的诞生源于在Proof-Pile-2数据集上对Code Llama模型的深度训练。这个数据集是一个…

Java 8 新特性 Ⅱ

方法引用 举例: Integer :: compare 理解: 可以看作是基于lambda表达式的进一步简化 当需要提供一个函数式接口的实例时, 可以使用lambda表达式提供实例 当满足一定条件下, 可以使用方法引用or构造器引用替换lambda表达式 实质: 方法引用作为函数式接口的实例 (注: 需要熟悉…

【AOA-VMD-LSTM分类故障诊断】基于阿基米德算法AOA优化变分模态分解VMD的长短期记忆网络LSTM分类算法(Matlab代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

人大金仓获评“2023年度软件和信息技术服务名牌企业”

近日&#xff0c;中国电子信息行业联合会在2023世界数字经济大会暨第十三届智慧城市与智能经济博览会上&#xff0c;发布了“2023年度软件和信息技术服务名牌企业”&#xff0c;凭借在企业规模、技术创新、市场影响力等方面的突出表现&#xff0c;人大金仓成功入选。 此次评选在…