
本著述中通盘内容仅供学习交流使用,无须于其他任何处所,不提供齐备代码,握包内容、明锐网址、数据接口等均已作念脱敏处理,严禁用于生意用途和作恶用途,不然由此产生的切成果均与作家关!
绪言
近收到私信,接洽对于某程滑块的解法,难度不大。经过分析,可以通过 AI 来完成逆向,本文将对该站进行关系分析。
握包分析
握包可知触发考据码是由 captcha/v4/risk_inspect 接口触发的,如下:
参与肯求的值有 dimensions、extend_param、sign。考据后接口复返 token、rid 以及图片信息。考据接口比拟图片接口多了个verify_msg 参数:
通过校验后 token 被激活:
古法逆向
从 risk_inspect 包进口参加,定位到如下地:
发现了载荷中要找的几个值,生成逻辑如下:
r = _0x342058(_0x311148[_("0x72")](n), 0),
a = {百色有粘钢绞线
resolution_width: M[_("0xa5")],
resolution_height: M.scrH,
language: P
},
c = _0x342058(_0x311148.stringify(a), 0),
o = _0x110baa[_("0x97")]("appid=" + s + _("0x10e") + f + "&version=" + D[_("0x4d")] + _("0x74") + r + _("0x3a") + c),
G(H[_("0x75")] + H[_("0x6c")], {
extend_param: encodeURIComponent(c),
appid: s,
business_site: f,
version: D[_("0x4d")],
dimensions: encodeURIComponent(r),
sign: o[_("0xad")]
个参数 extend_param 是通过 c = _0x342058(_0x311148.stringify(a), 0) 生成的,a 为常见的信息:
{
"resolution_width": 1512,
"resolution_height": 982,
"language": ""
}
同期 dimensions 生成式交流,亦然通过 r = _0x342058(_0x311148[_("0x72")](n), 0) 生成。
n 大部分为指纹信息,这里作念脱敏处理:
{
"rt": "fp=44779A-738C77-EF371C&vid=1779266823753.8bb8R2qxntXk&pageId=10320670296&r=06fed28fb6c0464c9201df7d452ba538&ip=223.104.124.240&rg
"ua":
**********************脱敏处理***********************************
"p": "pc",
"fp": "44779A-738C77-EF371C",
"vid": "1779266823753.8bb8R2qxntXk",
"identify": "a44779A-738C77-EF371C",
"guid": "09031151214445559123",
"h5_duid": null,
"pc_duid": null,
"hb_uid": null,
"pc_uid": null,
"h5_uid": null,
"infosec_openid": null,
**********************脱敏处理***********************************
"client_type": "PC",
"site": {
"type": "PC",
"url": "",
"ref": "https://www.ctrip.com/",
"title": "登录页",
"keywords": ""
},
"device": {
"width": 1512,
"height": 982,
"os": "",
"pixelRatio": 2,
"did": ""
},
"user": {
"tid": "",
"uid": "",
"vid": ""
}
}
sign 则是通过 o = _0x110baa[_("0x97")]("appid=" + s + _("0x10e") + f + "&version=" + D[_("0x4d")] + _("0x74") + r + _("0x3a") + c) 生成的,经过分析 _0x110baa[_("0x97")] 为 md5 算法。
是以刻下就剩 _0x342058 需要分析,单步跟进可以发现是 new 了个法,然后经过 n 函数终身成的:
n = new _0x254c65(128,1e3);
return 0 === e ? n[t("0xcd")](i, x) : n[t("0x108")](i, x)
参加 n 函数中,发现是通过 encrypt 生成的,该 aes 也未经过魔改,轨范算法:
return e[x("0x86")][x("0xcd")] = function(e, t) {
var i = x;
return _0x110baa[i("0x94")].encrypt(t, this.key, {
iv: _0x110baa[i("0xae")][i("0x2d")][i("0x2c")](e)
})[i("0x123")][i("0xad")](_0x110baa[i("0xae")][i("0xf")])
}
,
后个校验函数与上述历程雷同,多了个 verify_msg 参数,定位到下图处,钢绞线雷同也曾由 n 函数生成:
_0x13f650 包含了轨迹以及少部分浏览器信息,这些处置后即可将通盘考据码过掉。
篇外
履行上,手动登陆淌若每次清空缓存是不会弹出考据码的,粗俗后出考据码。经过相干发现,dimensions 中的 fp 与 rt(即 rmstoken) 指纹参数很伏击,决定了是否会触发考据码。
定位 rt 相对浅显,rt 和 fp 参数都是从 M 中取值的,朝上定位 M:
rt: M[_("0x71")],
ua: M.userAgent,
p: i,
fp: M.FP,
终找到下图位置:
跟进后发现终身成逻辑是挂到 getRmsToken 上的:
同期还挂载到 window 内部,径直调用 rmstoken = window.RMS.getRmsToken 即可:
rms 的定位也大同小异,trigger 中发现其被当参数传进去的,不息朝上跟:
终定位到下图处,由 cfp 函数生成:
至此,咱们把环境补王人,径直调用这几个函数即可生成关系参数:
AI 逆向
对于 AI 逆向的话,能不行搞出来取决于教唆词,岂论是 mcp 也曾静态分析都是可以的法,雷同也曾丢教唆词:
再然后就可以自若双手了,等个几分钟看下按捺:
经过考据,与古法分析的按捺致。
按捺考据
手机号码:13302071130相关词条:铝皮保温施工 隔热条设备 钢绞线 玻璃棉卷毡 保温护角专用胶
1.本网站以及本平台支持关于《新广告法》实施的“极限词“用语属“违词”的规定,并在网站的各个栏目、产品主图、详情页等描述中规避“违禁词”。
2.本店欢迎所有用户指出有“违禁词”“广告法”出现的地方,并积极配合修改。
3.凡用户访问本网页,均表示默认详情页的描述百色有粘钢绞线,不支持任何以极限化“违禁词”“广告法”为借口理由投诉违反《新广告法》,以此来变相勒索商家索要赔偿的违法恶意行为。