高校教务系统密码加密逻辑及JS逆向
本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。
本文仅供交流学习,勿用于非法用途。
一、密码加密基本概念
密码加密是一种保护信息安全的技术手段,它通过将明文(原始信息)转换为密文(加密后的信息),以防止未经授权的访问和篡改。常见的密码加密算法有MD5、SHA-1、SHA-256等。
1.1 加密过程
加密过程通常包括以下步骤:
- 密钥扩展:将密钥扩展为多个轮值,每个轮值都与明文的一部分有关。
- 初始轮值生成:将扩展后的密钥与轮常数进行某种运算,生成第一轮加密的密文。
- 多轮迭代:对密文进行多轮迭代操作,每轮操作都包括非线性函数、模运算和轮常数的变换。
- 最终密文:经过多轮迭代后,得到最终的密文。
1.2 解密过程
解密过程与加密过程相反,通过反向操作来恢复原始明文。通常需要知道加密时使用的密钥和算法。
二、高校教务系统密码加密逻辑分析
2.1 抓包
我们首先打开教务系统的登录页面,我们可以看到,只有学号和密码,以及验证码,有的高校会有验证码,或者有的高校是错误一次密码,会验证验证码。
我们打开开发者工具,尝试登录抓包,网页会返回这样的数据接口。
我们看到只有密码被加密了,有的高校会加密用户名也就是学号,我们后面遇到再说。
2.2 分析加密参数
我们接下来,就是来分析这个密码是怎么加密的。我们全局搜索password。定位到加密的位置。
我们可以看到这里是常规加密,没有什么特殊的地方。接下来,我们就看看这个加密方法在哪里。
"Password" : encryptByDES($("#inputPassword").val(), SecretKey),
三、JS逆向分析方法
逆向分析是指从已知的加密文本或程序中还原出原始信息的过程。在本例中,我们将使用JavaScript编写一个简单的逆向分析工具,用于逆向高校教务系统的密码。
环境使用
- python 3.9
- pycharm
- node
我们全局搜索encrypt,我们可以定位到这个函数,我们接下来就是扣这个函数吗,看缺什么补什么。
代码实现
我们先把这些代码扣下来,运行看看缺什么补什么。
var CryptoJS = require('crypto-js')
var SecretKey="F4&JF5*13$W7+C96C=6E4@1E9B#EAEA&4C1J#7A*FT2(B9U!C5)F0%3L^0C4B4";
function encryptByDES(message, key){
var keyHex = CryptoJS.enc.Utf8.parse(key);
var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString();
}
var password = encryptByDES('1234', SecretKey)
console.log(password)
我们运行之后,发现没有报错,说明,没有套用其他函数,我们看看其返回的结果是不是一样的。
bba51d1098035be6
安装crypto-js库
使用npm或yarn来安装crypto-js
:
npm install crypto-js
解密的过程
在这里,我简单和大家补充一下,这个密码解密的过程,我们发现在加密函数的下面,还有一个解密函数,这个实际上就是解密函数。
var CryptoJS = require('crypto-js')
var SecretKey="F4&JF5*13$W7+C96C=6E4@1E9B#EAEA&4C1J#7A*FT2(B9U!C5)F0%3L^0C4B4";
function decryptByDES(ciphertext, key){
var keyHex = CryptoJS.enc.Utf8.parse(key);
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var result_value = decrypted.toString(CryptoJS.enc.Utf8);
return result_value;
}
var jiem = decryptByDES('bba51d1098035be6',SecretKey)
console.log(jiem)
我们把刚刚加密后的密码放进去,我们看看得到解密的值是不是1234,如果是的话,说明我们找到了这个解密函数。
1234
运行之后的结果和我们预料的是一样的,到这里,我们就成功实现加密和解密的过程。
四、总结
本文介绍了高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的方法。通过学习这些知识,你可以更好地理解密码加密技术的原理,并掌握一定的逆向分析技巧。请注意,逆向分析可能涉及到法律问题,请在合法范围内进行研究和实践。
五、累计更新
争取到到底早日更新30所高校,大家可以在评论区留言。前期更的可能会多一点,有的学校教务系统都没有加密,我这里就不写了,还有,部分学校的教务系统已经和我之前写的是一样的,我也不重复赘述了。
往期作品可以查看专栏👇👇👇
全国高校教务系统登录页面JS分析_爱吃饼干的小白鼠的博客-CSDN博客