高校教务系统登录页面JS分析——重庆交通大学

news/2024/7/19 9:45:45 标签: 网络, javascript, pycharm, 爬虫

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

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

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

一、密码加密基本概念

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

1.1 加密过程

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

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

1.2 解密过程

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

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

2.1 抓包

我们首先打开教务系统的登录页面,我们可以看到,只有学号和密码,有的高校会有验证码,或者有的高校是错误一次密码,会验证验证码。

我们打开开发者工具,尝试登录抓包,网页会返回这样的数据接口。

2.2 分析加密参数

我们接下来,就是来分析这个密码是怎么加密的。我们全局搜索encoded。定位到加密的位置。

我们可以看到这里,定义了encoded是怎么生成的,是把我们的用户名和密码拼接了在一起,这个还是第一次遇到。

javascript">            var account = encodeInp(xh);
			var passwd = encodeInp(pwd);
			var encoded = account+"%%%"+passwd;

三、JS逆向分析方法

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

环境使用

我们全局搜索encodeInp,我们这个函数找不到,我们去控制台输入encodeInp,发现它可以帮我们定位到这个函数,我们接下来就是扣这个函数吗,看缺什么补什么。这个就比较简单了,直接扣下来就可以了。

代码实现

我们先把这些代码扣下来,运行看看缺什么补什么。

javascript">//http://jwgl.cqjtu.edu.cn/jsxsd/xk/LoginToXk

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encodeInp(input) {
    var output = "";
    var chr1, chr2, chr3 = "";
    var enc1, enc2, enc3, enc4 = "";
    var i = 0;
    do {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);
        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;
        if (isNaN(chr2)) {
            enc3 = enc4 = 64
        } else if (isNaN(chr3)) {
            enc4 = 64
        }
        output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
        chr1 = chr2 = chr3 = "";
        enc1 = enc2 = enc3 = enc4 = ""
    } while (i < input.length);
    return output
}
var account = encodeInp('1234');
var passwd = encodeInp('1234');
var encoded = account+"%%%"+passwd;


console.log(encoded)

 

  • 这段代码是用于将输入的字符串进行Base64编码的。这个编码过程主要依赖于字符的ASCII码值,将每3个字节转化为4个Base64字符。
  • 这段代码中的encodeInp函数接收一个字符串input作为参数,然后对这个字符串进行Base64编码,并返回编码后的字符串。
  • 在编码过程中,函数先取得输入字符串的每个字符的ASCII码值,然后使用这些ASCII码值计算出4个Base64字符的索引,最后从keyStr字符串中取出相应的Base64字符。
  • 如果输入的字符串长度不足3个字符,那么对于缺失的字符,会将其ASCII码值设为64(在Base64编码中代表无效字符)。

实现效果

javascript">MTIzNA==%%%MTIzNA==

我们可以发现,这个结果和网页的结果一样的,说明我们逆向成功了,这个并不是常规的加密,但是,这里的加密没有太复杂,一个函数就搞定了。 

四、总结

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

五、累计更新

争取到到底早日更新30所高校,大家可以在评论区留言。到目前为止,我已经更新了8篇了,我还在努力更新中,看的人好少,突然就不想更新了。

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

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

6adf31c8c5dd4e6a83314f4805b30bc1.jpg


http://www.niftyadmin.cn/n/5091749.html

相关文章

华为云云耀云服务器L实例评测|企业项目最佳实践之计划任务与Queue队列实践 (十)

十一、计划任务与Queue队列实践&#xff1a; 1. 计划任务&#xff1a; Linux环境下定时或者周期性的执行一些任务通常由cron这个守护进程来完成&#xff0c;这是一个系统自带的相对也比较方便的系统工具。 sudo apt-get install cron // 默认自带目录结构&#xff1a; 目录说…

比特听命:补码的产生过程与整数在计算机中的存储

文章目录 参考环境声明八位二进制加法器八进制数值 原码概念正负数与零正数与负数的运算 反码概念一步之遥 补码概念唯一的零加法运算 补码的优缺点优点简化算术运算一眼辨别正负性运算过程中无需对符号位进行处理 缺点不易阅读 参考 项目描述搜索引擎Bing、GoogleAI 大模型文…

【消息队列】消息队列常见面试题总结

目录 一、谈谈你对消息队列的理解 二、消息队列的应用场景 三、常见的消息队列有哪些 四、如何保证可靠性传输&#xff08;消息不丢失&#xff09; 五、如何保证消息的完整性 六、如何保证消息不重复消费 七、如何保证消息的顺序性 一、谈谈你对消息队列的理解 消息队列…

vue-按键修饰符

按键修饰符&#xff1a;主要用于监听键盘上的按钮被按下时&#xff0c;可触发对应的事件函数 v-on:keyup.修饰符.修饰符】、 .enter .tab .delete(针对delete和backspace两个按键) .esc .space .esc .space .up .down .left .right 系统修饰符必须按下才触发 .ctrl .alt .shift…

【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全、容器部署安全

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

23.10.15 《CLR via C#》 笔记6

第八章 方法 实例构造器方法&#xff08;引用类型&#xff09; 分配内存->初始化附加字段(类型对象指针、同步块索引)->调用类型实例构造器调用实例构造器之前,内存被归零(使没有显示重写的字段获得0或者null值)实例构造器不能被继承一个类型可以定义多个实例构造器;在访…

端口被谁占用如何解决?

## 如何查看端口被谁占用了&#xff1f;你好,我是Hasity 今天分享的内容是&#xff1a;Windows/Linux端口被占用如何解决? 问题出现 Description:Web server failed to start. Port 8082 was already in use.Action:Identify and stop the process thats listening on port 8…

【Eclipse】设置自动提示

前言&#xff1a; eclipse默认有个快捷键&#xff1a;alt /就可以弹出自动提示&#xff0c;但是这样也太麻烦啦&#xff01;每次都需要手动按这个快捷键&#xff0c;下面给大家介绍的是&#xff1a;如何设置敲的过程中就会出现自动提示的教程&#xff01; 先按路线找到需要的页…