江西财经大学智慧江财登录分析

news/2025/2/12 23:52:25/

先抓包看看

  • 发现提交登录的参数

如图,提交的参数

  • 然后试着搜索这些参数,看哪里用到了,关键的是password是怎么加密的,全局搜索ctrl+shift+f来进行代码搜索,定位在如下图

  • 然后我们就知道了加密方式

逻辑总结

  • 我就懒得写了,直接引用@K哥爬虫
  1. 加密入口可以在 index 首页找到,用到了 rsa.js 里面的三个加密函数 RSAKey()setPublic()encrypt()
  2. rsa.js 里的 BigInteger() 函数依赖 jsbn.js,SecureRandom() 函数依赖 rng.js;
  3. rng.js 里的变量 rng_psize 在 prng4.js 中定义,prng_newstate() 函数也依赖 prng4.js

提交方式

前置知识

  • 表单的name作用:name 属性用于对提交到服务器后的表单数据进行标识

  • 注意:只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。

  • 简单来说,name就是提交到后台的索引,比如在复选框中都要设置成name="hobby"说明几个复选框都在爱好下。

  • 查看网页源代码发现,是在网页通过form表单提交的,并不是通过axios或者加jQuery进行js提交,可以看看下面的代码,通过form表单提交到/cas/login

<form id="fm1" action="`" method="post" autocomplete="off"><div id="errorMessage" class="error" style="display:none;"><div class="error-massage"></div></div><table cellpadding="0" cellspacing="0"><tr><td colspan="2"><input id="username" name="username" type="text" class="user" placeholder="校园卡号/首次登录请激活" value="" /><input type="text" class="user" style="display: none;" /></td></tr><tr><td colspan="2"><input id="passwordEnc" name="password" type="hidden" value="" /><input id="password" type="password" class="pw" placeholder="统一身份认证密码" /><input type="text" class="pw" style="display: none;" /></td></tr><tr id="imageCode" style="display:none;"><td colspan="2" style="position:relative;"><input id="errors" name="errors" type="hidden" value="0" /><input id="imageCodeName" name="imageCodeName" type="text" size="4" class="yzm" placeholder="验证码" /><input type="text" class="yzm" style="display: none;" /><div style="position:absolute; top:5px; right:0;"><img width="100" style="height:2.5rem;" src='/cas/codeimage' style="cursor: pointer;" onclick="this.src='/cas/codeimage?'+Math.floor(Math.random()*100)" /></div></td></tr><tr style="display:none;" id="rememberPwd"><td colspan="2" style="height: 15px;"><input id="ckbRememberPP" name="rememberMe" type="checkbox" value="true"/><input type="hidden" name="_rememberMe" value="on"/><label for="ckbRememberPP" style="vertical-align: middle;height: 13px;">记住密码,2周内自动登录</label></td></tr><tr><td colspan="2"><input type="submit" value="登 录" onclick="javascript:return checkInput();" /></td></tr><tr><td colspan="2"><a href='https://ssl.jxufe.edu.cn/uid/activateAuth?t=20161208120000' class="zhjh-a" target="_blank">账号激活</a><a href='https://ssl.jxufe.edu.cn/uid/forget?t=20161208120000' class="wjmm-a" target="_blank">忘记密码</a></td></tr><tr><td class="line" width="60%"><a href="pages/account_activate.html?t=20161208120000" class="zhjh">统一认证账号激活攻略</a><div class="clear-1"></div><a href="pages/password_forget.html?t=20161208120000" class="mmzh">信息门户密码找回攻略</a></td>	<td class="line" align="right" width="40%"> <div align="center" class="ewm"><img src="images/ewm.jpg" width="70"><br>移动门户二维码</div></td></tr></table><input type="hidden" name="cryptoType" value="1" /><input type="hidden" name="lt" value="_c4ECACA77-B52F-B3C8-EF78-7F2DE9C616E0_k8175C76F-F064-D984-F521-22035A30AD09" /><input type="hidden" name="_eventId" value="submit" /></form>

加密示例代码

  • 其他依赖github看看就可以 https://github.com/superBiuBiuMan/jxufe_loginRSA

关键代码

//RSA加密
const {RSAKey
} = require("./tools/rsa");var rsa = new RSAKey();
//如果下面二个参数变动了,就去官网看看源代码就可以
var n = "5598e3b75d21a2989274e222fa59ab07d829faa29b544e3a920c4dd287aed9302a657280c23220a35ae985ba157400e0502ce8e44570a1513bf7146f372e9c842115fb1b86def80e2ecf9f8e7a586656d12b27529f487e55052e5c31d0836b2e8c01c011bca911d983b1541f20b7466c325b4e30b4a79652470e88135113c9d9";
var e = "10001";//密码加密
rsa.setPublic(n, e);
var encodedPassword = rsa.encrypt('123456789');
//输出加密的密码
console.log(encodedPassword);

注意

二个参数可能会发生变动,就去官网看看源代码就可以

附带下登录的js

  • 本来想写一个查询成绩的,后面发现不会,抓包分析也不会…跳来跳去的那个认证…

ts版本


const axios = require('axios');
const qs = require('qs');
const { RSAKey } = require("./tools/rsa");
const cheerio = require("cheerio");const nDefault = '5598e3b75d21a2989274e222fa59ab07d829faa29b544e3a920c4dd287aed9302a657280c23220a35ae985ba157400e0502ce8e44570a1513bf7146f372e9c842115fb1b86def80e2ecf9f8e7a586656d12b27529f487e55052e5c31d0836b2e8c01c011bca911d983b1541f20b7466c325b4e30b4a79652470e88135113c9d9';
const eDefault = '10001';class LoginAndGet {n: string;e: string;userName: string;passWord: string;encodedPassword: string;//加密过后的密码constructor(userName: string, passWord: string, n: string = nDefault, e: string = eDefault) {this.n = n;this.e = e;this.userName = userName;this.passWord = passWord;this.getRSAPassword(this.passWord);}/* 获取加密后的密码 */getRSAPassword(originPass: string): void {let rsa = new RSAKey();//设置加密rsa.setPublic(this.n, this.e);//进行加密this.encodedPassword = rsa.encrypt(originPass);}/* 开始 */start() {this.getIt();}/* 获取it参数 */getIt(): void {axios({method: 'get',url: 'https://ssl.jxufe.edu.cn/cas/login',headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',}}).then((data) => {var Data = [];Data.push(data.headers['set-cookie'][0].toString().match(/\w*(?=\.)/m).join()); //获取JSESSIONIDData.push(data.headers['set-cookie'][1].toString().match(/\w*(?=;)/m).join()); //获取sessoinMapKeyData.push(cheerio.load(data.data)(":input[name='lt']").attr('value')); //获取It// )console.log("载入页面获取的东西", Data);return Data;}).then(data => {// console.log(data);// JSESSIONID 0索引和 sessoinMapKey 1 和It 2this.loginF(data[2], data[1], data[0], this.userName, this.encodedPassword);});}/* 登录 */loginF(lt: string, sess: string, jsess: string, userName: string, encodedPassword: string) {//传送的数据var data = qs.stringify({'username': userName,'password': encodedPassword,'errors': '0','_rememberMe': 'on','cryptoType': '1','_eventId': 'submit','imageCodeName': '','lt': lt});//axios配置var config = {method: 'post',url: 'https://ssl.jxufe.edu.cn/cas/login?jsessionid=' + jsess + '.cas_app_2',// url: 'https://ssl.jxufe.edu.cn/cas/login',headers: {'Content-Type': 'application/x-www-form-urlencoded','User-Agent': ' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36','Cookie': 'JSESSIONID=' + jsess + '.cas_app_2;sessoinMapKey=' + sess + '; jxufe_username=' + userName,'Referer': 'https://ssl.jxufe.edu.cn/cas/login','Origin': 'https://ssl.jxufe.edu.cn',},data: data};//发送请求axios(config).then(function (response) {var result = cheerio.load(response.data)(".error-massage span").text();console.log("登录结果为:" + result);console.log('cookie1为',response.headers);}).catch(function (error) {console.log(error);});}}//测试代码
var test = new LoginAndGet('2202140875', 'superBiuBB');
test.start();
  • 转换后的js
var axios = require('axios');
var qs = require('qs');
var RSAKey = require("./tools/rsa").RSAKey;
var cheerio = require("cheerio");
var nDefault = '5598e3b75d21a2989274e222fa59ab07d829faa29b544e3a920c4dd287aed9302a657280c23220a35ae985ba157400e0502ce8e44570a1513bf7146f372e9c842115fb1b86def80e2ecf9f8e7a586656d12b27529f487e55052e5c31d0836b2e8c01c011bca911d983b1541f20b7466c325b4e30b4a79652470e88135113c9d9';
var eDefault = '10001';
var LoginAndGet = /** @class */ (function () {function LoginAndGet(userName, passWord, n, e) {if (n === void 0) { n = nDefault; }if (e === void 0) { e = eDefault; }this.n = n;this.e = e;this.userName = userName;this.passWord = passWord;this.getRSAPassword(this.passWord);}/* 获取加密后的密码 */LoginAndGet.prototype.getRSAPassword = function (originPass) {var rsa = new RSAKey();//设置加密rsa.setPublic(this.n, this.e);//进行加密this.encodedPassword = rsa.encrypt(originPass);};/* 开始 */LoginAndGet.prototype.start = function () {this.getIt();};/* 获取it参数 */LoginAndGet.prototype.getIt = function () {var _this = this;axios({method: 'get',url: 'https://ssl.jxufe.edu.cn/cas/login',headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}}).then(function (data) {var Data = [];Data.push(data.headers['set-cookie'][0].toString().match(/\w*(?=\.)/m).join()); //获取JSESSIONIDData.push(data.headers['set-cookie'][1].toString().match(/\w*(?=;)/m).join()); //获取sessoinMapKeyData.push(cheerio.load(data.data)(":input[name='lt']").attr('value')); //获取It// )console.log("载入页面获取的东西", Data);return Data;}).then(function (data) {// console.log(data);// JSESSIONID 0索引和 sessoinMapKey 1 和It 2_this.loginF(data[2], data[1], data[0], _this.userName, _this.encodedPassword);});};/* 登录 */LoginAndGet.prototype.loginF = function (lt, sess, jsess, userName, encodedPassword) {//传送的数据var data = qs.stringify({'username': userName,'password': encodedPassword,'errors': '0','_rememberMe': 'on','cryptoType': '1','_eventId': 'submit','imageCodeName': '','lt': lt});//axios配置var config = {method: 'post',url: 'https://ssl.jxufe.edu.cn/cas/login?jsessionid=' + jsess + '.cas_app_2',// url: 'https://ssl.jxufe.edu.cn/cas/login',headers: {'Content-Type': 'application/x-www-form-urlencoded','User-Agent': ' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36','Cookie': 'JSESSIONID=' + jsess + '.cas_app_2;sessoinMapKey=' + sess + '; jxufe_username=' + userName,'Referer': 'https://ssl.jxufe.edu.cn/cas/login','Origin': 'https://ssl.jxufe.edu.cn'},data: data};//发送请求axios(config).then(function (response) {var result = cheerio.load(response.data)(".error-massage span").text();console.log("登录结果为:" + result);console.log('cookie1为', response.headers);})["catch"](function (error) {console.log(error);});};return LoginAndGet;
}());
//测试代码
var test = new LoginAndGet('2202140875', 'superBiuBB');
test.start();

http://www.ppmy.cn/news/837897.html

相关文章

JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十二)脚本更新3.1

目录 Web安全——易班优课YOOC课群在线测试自动答题解决方案 更新日志 1、实现简单课程视频立刻完成&#xff1b; 2、集成禁止打开控制台解决方案&#xff1b; 3、修复因易班更新导致的一些问题&#xff1b; 4、添加自动刷题时答案来源页面选择设置。 解决方案 // UserSc…

【华清远见】培训的第9周

复习: 网络编程 重要知识点: 1 udp 和 tcp 的区别 2 如何实现udp传输 int fd socket(, SOCK_DGRAM, ); bind(fd, (struct sockaddr *)&myaddr, sizeof(myaddr)); recvfrom(); sendto(); close(fd); 3 如何实现tcp 服务器 int fd socket(, SOCK_STREAM, ); bind(); li…

用户登录

0 引言 在我们的日常生活中&#xff0c;很多时候都要进行用户的登录的操作。 1 问题 输入用户名和密码&#xff0c;判断用户名和密码是否正确&#xff08;’name’’root’&#xff0c;’password’’1234’&#xff09;。为了防止暴力破解&#xff0c;登录仅有三次机会&#x…

【青书学堂】统计学(高起专) 第一学期 作业

【青书学堂】统计学(高起专) 第一学期 作业 第1题 单选题 下列关于标准差的说法中错误的是( )。 选项&#xff1a; A&#xff1a; 标准差一定大于0 B&#xff1a; 标准差和方差属于描述变异程度的同类指标 C&#xff1a; 同一资料和标准差一定小于均数 D&#xff1a; 标准差常…

智学.com查成绩 html,智学网成绩查询入口:https://www.zhixue.com/login.html

温馨提示&#xff1a;学生用户&#xff0c;用户名和初始密码均为准考证号 家长用户&#xff0c;请使用注册时的手机号登录。 智学网成绩查询步骤是什么 1、打开网页&#xff0c;进入智学网登录界面&#xff0c;按右上角的登录&#xff1b; 2、登录界面中的账号与密码上均输入你…

学生选课管理系统 选课信息管理系统管理端

学生选课管理系统——学生选课信息管理系统管理端 面向对象程序设计——课程设计&#xff08;c&#xff09; 不懂的地方可以咨询我&#xff1a;809267697qq.com。 ps: 编程环境为vs&#xff0c;使用dev c会报错。 目录 学生选课管理系统——学生选课信息管理系统管理端一、项…

【学生管理系统】权限管理之用户管理

目录 6. 权限管理 6.1 环境搭建 6.1.1 数据库 6.1.2 后端环境 6.2 用户管理 6.2.1 查询所有用户&#xff08;关联角色&#xff09; 6.2.2 核心1&#xff1a;给用户授予角色 6. 权限管理 6.1 环境搭建 6.1.1 数据库 权限管理的5张表的关系 添加4张表 # 权限表…

信息学奥赛一本通 1371:看病

【题目链接】 ybt 1371&#xff1a;看病 【题目考点】 1. 堆 2. 大量数据输入输出 当输入数据量达到 1 0 6 10^6 106规模&#xff0c;或输出数据量达到 1 0 5 10^5 105规模时&#xff0c;有以下两种输入输出方法&#xff1a; 用scanf/printf解除IO同步&#xff0c;IO解绑…