12_某店 captchaToken 参数 加密

Date
Mar 25, 2023
Created
Mar 2, 2024 02:52 PM
Tags
JS逆向实战

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
今天爬取的是网站需要模拟登陆

目标网站

aHR0cHM6Ly9wYXNzcG9ydC55aGQuY29tL3Bhc3Nwb3J0L2xvZ2luX2lucHV0LmRv

浏览器抓包分析

随便输入一堆假账户和密码 然后进入断点 如下图
notion image
notion image
根据setpublic 设置公钥 可知 这是个RSA加密 (当然 不能说百分百RSA 百分之80吧 毕竟我之前写过的一篇文章:【https://www.cnblogs.com/zichliang/p/16710284.html】 这也有这个方法。 ) 扣了半天 发现是个常规RSA 这里就不扣了, 也不多做解释 直接去看我首页置顶的里的Python加密 替换响应的值即可。 这里贴上js代码
window = global; const JSEncrypt = require('jsencrypt') var i = new JSEncrypt(); function get_login_params(username, password) { var pubkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXQG8rnxhslm+2f7Epu3bB0inrnCaTHhUQCYE+2X+qWQgcpn+Hvwyks3A67mvkIcyvV0ED3HFDf+ANoMWV1Ex56dKqOmSUmjrk7s5cjQeiIsxX7Q3hSzO61/kLpKNH+NE6iAPpm96Fg15rCjbm+5rR96DhLNG7zt2JgOd2o1wXkQIDAQAB"; i.setPublicKey(pubkey); var k = i.encrypt(username); var j = i.encrypt(password); return { "username": k, "password": j, } } console.log(get_login_params("123123", "123123"))
notion image
公钥位置:
notion image
直接调用现成的库即可. 今天重点研究 下面这个captchaToken

captchaToken 生成位置

然后进入这个断点
notion image
notion image
这个点很可疑,我们在控制台看下他的值
notion image
有点像,并且每次生成的值都不一样。 我们继续往下走
经过一大串漫长的F11 找到这个断点 我们发现 下面这串代码是生成captchaToken 的地方
var ap = f[b('0x639', 'Hwul')](al); var aq = f[b('0x160', 'KKgU')](an); return (g[f[b('0x6c7', ']swn')]('_', 't')] || '') + '|' + aq + '|' + ap;
notion image

数据生成分析

又上述代码可知
notion image
captchaToken 由这三部分组成,中间用 | 拼接而成。 我们挨个去扣代码即可。

扣代码

notion image
先扣上面两个单的参数 第一个ap 慢慢扣吧 第二个aq 是base64 然后混着一些其他的东西加密而成
然后多次尝试我们可知 这个g['_t'] 也就是 (gf[b('0x6c7', ']swn')] || '') 这个东西 是写死的,我们也写死就好了 顺带一提,这个b('0x6c7', ']swn') b函数我们可以抠出来。 然后写个脚本
如下图所示 这样可以减少很多难度
notion image
然后通过fiddler自动响应 然后替换
notion image
最后替换成这个鸟样就可以开始弄了
notion image