游乐游手机版
首页/AI教程/文章详情

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

时间:2026-06-30 16:08
声明 本篇文章所有内容仅供学习与交流使用,不涉及任何商业用途或非法目的,不提供完整项目代码。所有抓包数据、敏感网址及接口信息均已进行脱敏处理。严禁将本文内容用于商业或非法活动,否则由此产生的一切后果均由使用者自行承担,与原作者无关! 前言 近期收到了许多朋友的私信,纷纷询问关于某程滑块验证码的逆向方

声明

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

前言

近期收到了许多朋友的私信,纷纷询问关于某程滑块验证码的逆向方法。说实话,这类滑动验证码的技术难度并不高,核心逻辑也相对清晰。经过深入分析后发现,该验证码的逆向过程完全可以借助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
上一篇AIOps与传统运维监控的区别详解 下一篇基于DAMA知识体系的数据中台架构设计与治理落地
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软Copilot插件安装全流程:浏览器与扩展市场配置
AI教程 · 2026-07-01

微软Copilot插件安装全流程:浏览器与扩展市场配置

围绕MicrosoftCopilot在浏览器、编辑器和扩展市场中的安装与配置,梳理账号准备、安装步骤、权限检查、常见故障及安全使用边界,适合新手快速完成AI办公工具部署。

Microsoft Copilot Docker 一键部署指南:镜像拉取、端口映射与数据目录配置
AI教程 · 2026-07-01

Microsoft Copilot Docker 一键部署指南:镜像拉取、端口映射与数据目录配置

围绕Copilot类AI办公工具的Docker部署流程,说明镜像选择、拉取校验、端口映射、数据目录挂载、环境变量配置、更新回滚与常见故障处理。

微软Copilot API密钥注册获取与国内网络配置
AI教程 · 2026-07-01

微软Copilot API密钥注册获取与国内网络配置

围绕MicrosoftCopilot相关接口接入流程,梳理账号准备、Azure资源创建、密钥获取、环境变量配置、国内网络连通性优化、常见报错处理与安全管理要点。

微软Copilot Linux部署:环境准备到后台运行全流程
AI教程 · 2026-07-01

微软Copilot Linux部署:环境准备到后台运行全流程

MicrosoftCopilot不适合按本地模型方式安装,Linux服务器更常见的是部署企业入口或集成服务。流程需完成账号授权、运行环境、服务配置、反向代理、进程守护与日志监控,并注意数据权限、访问控制和合规边界。

Microsoft Copilot macOS安装教程:Apple Silicon与Intel配置步骤
AI教程 · 2026-07-01

Microsoft Copilot macOS安装教程:Apple Silicon与Intel配置步骤

MicrosoftCopilot在Mac上可通过网页应用、Edge侧边栏或Microsoft365组件使用,AppleSilicon与Intel机型重点在系统版本、浏览器、账号授权和隐私设置。