本文档中的信息仅用于学术研究和交流学习之目的,不涉及任何商业或非法用途。我们已对可能涉及的敏感信息,如抓包数据、特定网址、数据接口等,进行了必要的脱敏处理,以确保信息安全。任何未经授权的转载或修改后的二次传播均被严格禁止。
若擅自使用本文所述技术而引发的任何不良后果或意外,本文作者不承担任何责任。若认为本文内容涉及侵权,请通过公众号【小马哥逆向】与我们取得联系,我们将立即进行处理。感谢您的理解和配合。
网站:aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/Y2FsbGJhY2s9c2hpZWxkJmZyb209YW50aXNwYW0=
字段:dlnfo.sessionld,info,responseld,data
加密方式:AES
滑块部分我们通过滑动产生的接口为解析入口
如图:data,dlnfo.sessionld,responseld都是加密字段
其中我们先对值进行搜索
sessionld是在页面源码就有的值
其中
responseld是在getInfoTp中得到
我们先去逆向getInfoTp接口
我们先处理字符dlnfo,进行搜索处理,
发现都是在一个js文件中,共四处,直接全部下断点,进行测试,清除cookie,刷新页面
断点信息得到_0x9yl[67]是AESEncrypt
,基本确认加密是AES,并且(0, _nRa)()方法执行后是,可以写成固定的;_wwj[_0x9yl[64]]就是sessionId
AESEncrypt = function(_Ala, _hly) {
_hly = _hly['split']('')['reduce'](function(_V3Y, _cwX, _G3W) {
if (8 * 564 << 5 > 0)
return _G3W % 2 == 0 ? _V3Y + '' : _V3Y + _cwX;
}, ''),
_hly = CryptoJS.enc.Utf8.parse(_hly),
_Ala = 'string' == typeof _Ala ? _Ala : JSON['stringify'](_Ala),
_Ala = CryptoJS.AES['encrypt'](_Ala, _hly, {
iv: _hly,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}),
_hly = _cHG[_0x9yl[108]](_Ala[_0x9yl[169]]);
if (0 * (3 >> 2 > 0) + (405 % 8 / 7 <= 1))
return (0,
encodeURIComponent)(_hly);
else {
var _0xjv1mra = {
_0xq88qhs: function(_0xmvvmdh, _0x6r4ljl) {
return _0xmvvmdh | _0x6r4ljl;
}
};
var _0xy0px = _0xjv1mra._0xq88qhs(409 << 532, 52);
}
}
我们对关键代码进行处理,例如:iv,mode,padding
然后将函数放在标准算法继续计算,如果结果一样,那么就是标准算法,我们就得到了代码;如不是那就继续扣
得到responseId
var CryptoJS = require('crypto-js')
function AESEncrypt(_Ala, _hly) {
_hly = _hly['split']('')['reduce'](function(_V3Y, _cwX, _G3W) {
if (8 * 564 << 5 > 0)
return _G3W % 2 == 0 ? _V3Y + '' : _V3Y + _cwX;
}, ''),
_hly = CryptoJS.enc.Utf8.parse(_hly),
_Ala = 'string' == typeof _Ala ? _Ala : JSON['stringify'](_Ala),
_Ala = CryptoJS.AES['encrypt'](_Ala, _hly, {
iv: _hly,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encodeURIComponent(_Ala.toString())
}
function u() {
return {
"sdkv": "3.0.1",
"busurl": "https://www.anjuke.com/captcha-verify/?callback=shield&from=antispam",
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"clienttype": "1"
}
}
function getDInfo(sessionId){
return AESEncrypt(u(), sessionId)
}
// 测试样例
var sessionId = "69035526a9094716a54f56088f114ebc"
console.log(getDInfo(sessionId))
data传值是在_5Fj,进行跟栈
得到_5Fj,轨迹,sessionId进行AES加密
_zTb有三个值组成x是水平滑动距离,track轨迹里分别为x,y,时间间隔,p为定值
那么我们伪造一个轨迹就可以了。
结果:
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。