高校教务系统登录页面JS分析——巢湖学院

2023-10-21 22:45

本文主要是介绍高校教务系统登录页面JS分析——巢湖学院,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

一、密码加密基本概念

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

1.1 加密过程

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

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

1.2 解密过程

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

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

2.1 抓包

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

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

2.2 分析加密参数

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

我们可以看到这里就调用了一个加密函数,不是很复杂。

三、JS逆向分析方法

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

环境使用

  • python 3.9
  • pycharm
  • node

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

//密码加密
function encryptPassword(pwd0) {try{var pwd1 = encryptAES(pwd0,pwdDefaultEncryptSalt);$("#casLoginForm").find("#passwordEncrypt").val(pwd1);}catch(e){$("#casLoginForm").find("#passwordEncrypt").val(pwd0);}
}

这段代码是一个JavaScript函数,主要用于密码加密。下面是对其的逐行解释:

  1. function encryptPassword(pwd0) {: 定义一个名为 encryptPassword 的函数,它接受一个参数 pwd0。这个参数预期是要被加密的密码。
  2. try{: 开始一个 try 块。try 块用于捕获可能出现的异常。
  3. var pwd1 = encryptAES(pwd0,pwdDefaultEncryptSalt);: 调用一个名为 encryptAES 的函数,使用 pwd0(要加密的密码)和 pwdDefaultEncryptSalt(默认的加密盐)作为参数,并将返回的结果(加密后的密码)存储在变量 pwd1 中。
  4. $("#casLoginForm").find("#passwordEncrypt").val(pwd1);: 使用 jQuery 的 val 方法将 pwd1(加密后的密码)设置为 ID 为 passwordEncrypt 的元素的值。这个元素可能是一个表单字段。
  5. }catch(e){: 如果在 try 块中的代码出现了异常,那么会执行 catch 块中的代码。
  6. $("#casLoginForm").find("#passwordEncrypt").val(pwd0);: 如果出现异常,那么不加密原始密码,直接将其设置为 ID 为 passwordEncrypt 的元素的值。
  7. }: 结束 catch 块。
  8. }: 结束 encryptPassword 函数。

这个函数的目的是将输入的密码进行加密,然后保存到一个指定的位置。如果出现任何错误或异常(比如加密函数 encryptAES 未定义,或者密码参数为空等),它将不会进行加密,而是直接将原始密码保存到指定位置。

 

代码实现

var CryptoJS = require("crypto-js");function encryptPassword(pwd0) {var pwdDefaultEncryptSalt = 'L5IGscL956g2gynT'//网页返回的var pwd1 = encryptAES(pwd0, pwdDefaultEncryptSalt);return pwd1
}function encryptAES(data, aesKey) { //加密if (!aesKey) {return data;}var encrypted = getAesString(randomString(64) + data, aesKey, randomString(16)); //密文return encrypted;
}//AES-128-CBC加密模式,key需要为16位,key和iv可以一样
function getAesString(data, key0, iv0) {//加密key0 = key0.replace(/(^\s+)|(\s+$)/g, "");var key = CryptoJS.enc.Utf8.parse(key0);var iv = CryptoJS.enc.Utf8.parse(iv0);var encrypted = CryptoJS.AES.encrypt(data, key,{iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return encrypted.toString();    //返回的是base64格式的密文
}var $aes_chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
/****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
var aes_chars_len = $aes_chars.length;function randomString(len) {var retStr = '';for (i = 0; i < len; i++) {retStr += $aes_chars.charAt(Math.floor(Math.random() * aes_chars_len));}return retStr;
}console.log(encryptPassword(12345))

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

实现效果

oYI1+Qu4HMtz7gRVZJlK51yyUxy8HDnHIdBdbX1WAImF+33JNtX82yhQLrg5RiFuaa8U9iKxd+sHlSz+bw/qYcztae85PoPtT8YKlT5FjVE=

这里特别要注意的是pwdDefaultEncryptSalt ,这个是返回的值,每次都不一样。

var pwdDefaultEncryptSalt = 'qukV9eRfjb2SDVac'//网页返回的

四、总结

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

五、累计更新

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

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

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

6adf31c8c5dd4e6a83314f4805b30bc1.jpg

这篇关于高校教务系统登录页面JS分析——巢湖学院的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257456

相关文章

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、