某平台登录参数扣代码

查看 73|回复 9
楼主
作者:Ceciliana   

aHR0cHM6Ly93d3cuY252ZC5vcmcuY24vdXNlci9kb0xvZ2luL2xvZ2luRm9ybQ==

各位老师傅早上、上午、中午、下午、晚上好啊
最近逆向不顺,jsvmp日志看不懂,补环境过不了,混淆看眼花
赶紧来一个简单的扣代码来稳住道心
1. 登录抓包
登录输入固定:email= [email protected],password= 123456


loginTest.png (79.09 KB, 下载次数: 3)
下载附件
2025-10-8 22:04 上传

多次抓包测试,发现携带参数动态变化,我们模拟参数生成错误的情况下请求


copycURL.png (354.16 KB, 下载次数: 3)
下载附件
2025-10-8 22:05 上传



quickget.png (233.52 KB, 下载次数: 3)
下载附件
2025-10-8 22:05 上传



errorData.png (96.79 KB, 下载次数: 3)
下载附件
2025-10-8 22:05 上传

确定了参数正确加密,状态码 200,返回 HTML 文档,否则 404
2. 寻参
由 document 发出的请求,不能用常用的 xhr 断点,幸运的是,此站没有混淆,可以直接全局搜关键词


searchWord.png (58.64 KB, 下载次数: 3)
下载附件
2025-10-8 22:06 上传



parse.png (89.75 KB, 下载次数: 3)
下载附件
2025-10-8 22:07 上传

得知加密逻辑就在返回的文档中
3. 扣代码
初步扣下代码
function encrypt(value,aesKey){
    var key = CryptoJS.enc.Utf8.parse(aesKey);
    var srcs = CryptoJS.enc.Utf8.parse(value);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
    return encrypted.toString();
}
var rsa = new RSAKey()
rsa.setPublic(RSADo.modulus, RSADo.publicExponent)
var encryptStr = rsa.encrypt(RSADo.aesKey);         // 这个就是用于发送的 aesKey 字段值
var passwordHidden = encrypt("123456",RSADo.aesKey);  // $("#passwordHidden").val(encrypt($("#password").val(),RSADo.aesKey));
把 RSADo.aesKey 固定住,引入 crypto-js 包,passwordHidden 参数就生成成功了,接下来要解决 RSADo 对象的生成
在寻参过程中发现,RSADo 对象的赋值,是在jQuery的ajax请求成功的回调函数中进行的
$.ajax({
    type: "post",
    url: "/user/publicKey",
    async : false,
    success: function (data) {
        if(data != null){
            var json = $.parseJSON(data);
            RSADo.modulus = json.modu;      // 在这里
            RSADo.publicExponent = json.g;
            RSADo.aesKey = json.aesKey;
        }
    }
});
也就是说,RSADo 对象的参数都由服务器下发,接口为 /user/publicKey,这样 RSADo 对象的属性值也解决了
然后是解决 RSAKey 的实例化对象 rsa,这个对象调用 rsa.encrypt 方法,传入 RSADo.aesKey,得到用于发送的 aesKey 字段值


RSAKey.png (65.99 KB, 下载次数: 3)
下载附件
2025-10-8 22:09 上传



rsa.png (76.64 KB, 下载次数: 2)
下载附件
2025-10-8 22:09 上传

可以看到跟进了 rsa.js 文件,百来行,直接全扣下来,将构造函数 RSAKey 以 Nodejs 模块导出
// 扣下的全部 rsa.js
module.exports = {
    RSAKey: RSAKey
}


bigInteger.png (174.13 KB, 下载次数: 3)
下载附件
2025-10-8 22:10 上传

试执行,rsa.js 缺了 BigInteger


Big.png (63.15 KB, 下载次数: 3)
下载附件
2025-10-8 22:11 上传



jsbn.png (66.61 KB, 下载次数: 3)
下载附件
2025-10-8 22:11 上传

跟上面一样的步骤,全扣下,以 Nodejs 模块导出,谁缺东西就导出给它(如 rsa.js 缺 BigInteger,就在 rsa.js 内导入 BigInteger)
就这样一直扣,直到正确出值,要扣下 rsa.js、jsbn.js、rng.js、prng.js 共4个文件
运行时会出现 navigator 等对象未定义,新建一个 envs.js,在里面定义好缺失的环境,再将此文件引入缺了环境的模块中


success.png (86.14 KB, 下载次数: 3)
下载附件
2025-10-8 22:12 上传

4. 图文验证码
此站的验证码很简单,获取验证码图片的二进制数据,然后使用 ddddocr 识别即可
from ddddocr import DdddOcr
# ......
ocr = DdddOcr(show_ad=False)
codeImg = requests.get('https://www.cnvd.org.cn/common/myCodeNew', cookies=cookies, headers=codeHeaders)
ocrCode = ocr.classification(codeImg.content)
还有,拿验证码图片和 publicKey 时,cookie 会过期而拿不到东西,记得更新一下 cookie


finally.png (165.14 KB, 下载次数: 1)
下载附件
2025-10-8 22:13 上传


cnvd.zip
(10.82 KB, 下载次数: 8)
2025-10-8 22:13 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB

下载次数, 下载附件

沙发
lance1077   

初学WEB逆向,跟大佬学习
3#
ligsh0270   

谢谢分享,学习了。
4#
buluo533   

这个网站好像是加速乐,大佬可以研究一下呢
5#
Victor365   

很详细,跟着学习一下
6#
Free4All   

有点牛bee~
7#
huliji   

感谢分享
8#
homyang   

学习了 谢谢看看怎么样
9#
Foticing   

牛的,学习一下
10#
xlinux   

不错不错认真学习
您需要登录后才可以回帖 登录 | 立即注册

返回顶部