当前位置: 首页
AI教程
古法与AI某程滑块验证码逆向分析技术

古法与AI某程滑块验证码逆向分析技术

热心网友 时间:2026-06-30
转载

声明

本篇文章所有内容仅供学习与交流使用,不涉及任何商业用途或非法目的,不提供完整项目代码。所有抓包数据、敏感网址及接口信息均已进行脱敏处理。严禁将本文内容用于商业或非法活动,否则由此产生的一切后果均由使用者自行承担,与原作者无关!

前言

近期收到了许多朋友的私信,纷纷询问关于某程滑块验证码的逆向方法。说实话,这类滑动验证码的技术难度并不高,核心逻辑也相对清晰。经过深入分析后发现,该验证码的逆向过程完全可以借助AI工具来辅助完成。今天我就把整个分析思路拆解开来,逐一讲解,供大家参考学习。

Nhhjy7.pngNhhjy7.png

抓包分析

根据抓包结果可知,验证码的触发入口由接口 captcha/v4/risk_inspect 发起,具体如下:

Ngh44j.pngNgh44j.png

请求时需要携带三个关键参数:dimensionsextend_param 以及 sign。验证通过后,接口会返回 token、rid 以及滑块图片信息。值得注意的是,验证接口相比图片接口多了一个 verify_msg 参数:

Ng8mMJ.pngNg8mMJ.png

只有当校验通过时,该 token 才会被真正激活生效:

Ng8L3G.pngNg8L3G.png

古法逆向

risk_inspect 数据包的入口处开始追踪,很快便能定位到关键代码位置:

NhbA2O.pngNhbA2O.png

此处直接找到了载荷中的几个核心字段,其生成逻辑大致如下:

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_paramc = _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 函数生成:

Nhbccf.pngNhbccf.png

这里的 _0x13f650 包含了滑动轨迹和少量浏览器信息,把这些都搞定,整个验证码的逆向难题也就迎刃而解了。

篇外

在实际操作中还会发现一个有趣的现象:如果每次手动登录都清空浏览器缓存,则不会弹出验证码;但若频繁点击登录,验证码就一定会出现。经过研究,关键点在于 dimensions 中的 fprt(即 rmstoken)这两个指纹参数,它们直接决定了验证码是否会被触发。

定位 rt 相对简单。rt 和 fp 都是从 M 对象中取值的,向上定位 M:

rt: M[_("0x71")],ua: M.userAgent,p: i,fp: M.FP,

最终可以追溯到下图的位置:

Nhb4nZ.pngNhb4nZ.png

跟进后发现,其最终的生成逻辑挂载在 getRmsToken 上:

NhbJLU.pngNhbJLU.png

同时它也被挂载到了 window 对象上,直接调用 rmstoken = window.RMS.getRmsToken() 就能拿到结果:

NhbXxq.pngNhbXxq.png

rms 的定位思路也类似。在 trigger 中发现它被当作参数传入,继续向上回溯:

NhbI9a.pngNhbI9a.png

最终定位到下图所示的位置,由 cfp 函数生成:

NhbMK7.pngNhbMK7.png

至此,补全执行环境后,直接调用这几个函数,即可生成所有相关参数:

Nhbf1I.pngNhbf1I.png

AI 逆向

那么AI逆向该如何操作呢?能否成功,很大程度上取决于提示词的设计。无论是使用 MCP 还是静态分析,都是可行的方案。同样,直接把通用提示词输入进去:

Nhg0aQ.pngNhg0aQ.png

之后就可以解放双手,等待几分钟,观察结果:

Nhg3If.pngNhg3If.png

经过验证,AI 分析得出的结果与手工逆向分析完全一致。

结果验证

Nhg70c.pngNhg70c.png

来源:https://cloud.tencent.com.cn/developer/article/2700246

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Continue Windows 本地安装配置教程 2026 最新版 下载地址与环境要求

Continue Windows 本地安装配置教程 2026 最新版 下载地址与环境要求

Continue是面向VSCode与JetBrains的AI编程插件,可连接云端或本地模型。Windows安装需准备编辑器、运行环境与模型服务,配置时应重点处理接口、索引、隐私与性能问题。

时间:2026-07-02 06:42
Tabnine新手从下载到首次运行保姆级安装教程

Tabnine新手从下载到首次运行保姆级安装教程

Tabnine是面向开发者的AI编程工具,适合在常见代码编辑器中辅助补全代码。安装前需确认环境、账号与编辑器版本,首次运行应完成登录、项目索引、补全测试和隐私设置。

时间:2026-07-02 06:41
Tabnine安装失败常见报错、日志排查与升级回滚方案

Tabnine安装失败常见报错、日志排查与升级回滚方案

Tabnine安装异常通常与编辑器版本、网络连接、权限、缓存或插件冲突有关。可按环境检查、日志定位、重装清理、版本切换和回滚流程逐步处理,并注意代码隐私与插件来源安全。

时间:2026-07-02 06:41
Tabnine插件安装配置全流程:浏览器编辑器扩展市场

Tabnine插件安装配置全流程:浏览器编辑器扩展市场

Tabnine适合在主流编辑器中提供代码补全与生成辅助。安装前需确认官方来源、账号策略和编辑器版本,按扩展市场或离线包方式完成配置,并注意隐私、授权与兼容问题。

时间:2026-07-02 06:41
Tabnine本地模型运行全攻略:下载配置与性能优化

Tabnine本地模型运行全攻略:下载配置与性能优化

Tabnine可在本地运行代码补全模型,适合重视代码隐私、网络环境不稳定或企业内网开发场景。配置重点包括版本确认、模型下载、路径设置、资源分配、IDE检查与性能调优。

时间:2026-07-02 06:41
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜