← 返回文章列表

极验4代滑块验证码逆向实战:混淆定位突破到AES+RSA混合加密还原

极验4代滑块验证码采用了动态混淆和PoW机制,传统截图方法失效。本文从抓包定位加密参数入手,通过定位定位和调试还原出w参数生成逻辑,涉及AES+RSA混合加密还原。最后分享了可轻松对接的破解和自动化API平台,助您稳定应对极验验证码识别需求。

极验4代滑块验证码逆向实战:混淆定位突破到AES+RSA混合加密还原

前言

作为国内主流的验证码服务商,极验4代滑块验证码的逆向分析一直是个技术难题。它结合了动态混淆策略、前端PoW工作量证明以及AES和RSA混合加密机制,形成了坚固的防护体系。传统通过截图或简单打码平台破解的方式早已无法奏效,只有深入协议层进行解析,才能实现稳定突破。

这里以某马拉雅登录过程中触发的极验4代滑块验证码为例,详细拆解整个验证流程,包括资源加载、缺口识别、参数构造以及核心加密字段w的生成逻辑。用大白话讲解,即使你是逆向新手,跟着操作也能复现出结果。

" }

逆向目标和准备工作

我们的主要目标是逆向分析验证提交请求中的w参数。这个参数是服务器用来判断是否为真人的关键,由p和u两部分拼接而成,w等于p加上u。整个验证流程分为两个主要接口:初始化加载接口,用于获取背景图、滑块图、challenge参数以及公钥信息;验证提交接口,则携带加密轨迹和设备指纹发起验证。

准备工作很简单,Chrome或Edge浏览器就够用了,支持JavaScript调试。F12打开开发者工具后,Network面板就能观察到请求细节。Python环境也非常方便,后续算法实现可以直接用它来测试。

抓包分析和参数定位

在Network面板中跟踪马拉雅登录的请求,就能看到随机的验证码可能是滑块也可能是点选,但处理思路类似。加载接口返回的固定值包括captcha_id为4f9ca589ee31bd384760d8d1cec5c675,challenge为f015e71e-4aeb-4a7c-bccb-6ada6e0d76d6,由UUID函数动态生成,client_type为web,lang为zh-cn。

滑动滑块验证时,verify接口的参数中包含lot_number、payload、process_token和核心的w参数。captcha_id保持不变,lot_number来自加载接口返回。w参数就是需要重点逆向的部分,它直接决定了提交是否成功。

w参数逆向分析

直接搜索lot_number关键词,能在4个地方找到匹配项。进入查看后,发现这里没有直接断点,但可以在上一层的case语句上打断点。断下后还原出关键代码:var_ᖉᖉᖄᖁ = (_ᕿᕴᖁᖈ[_ᖉᕿᖃᖉ(52)])(_ᖂᕷᖗᖚ[_ᖉᕿᖃᖉ(52)][_ᖉᕿᖃᖉ(581)](_ᕿᖀᕶᕴ),_ᖘᕺᖁᖀ)。

还原后的代码变成var_ᖉᖉᖄᖁ = _ᕿᕴᖁᖈ['default'](_ᖂᕷᖗᖚ['default']['stringify'](_ᕿᖀᕶᕴ),_ᖘᕺᖁᖀ)。查看入参_ᕿᖀᕶᕴ对象,包括setLeft为84(滑动距离)、passtime为386(经过时间)、userresponse为85.5034329189089(滑动时间)、device_id为空、lot_number为80449b24edca4a569df98ef930b195b2、pow_msg为1|0|md5|...、pow_sign为a1f4fbd7f1642abd3d182d14e6563e77、geetest为captcha、lang为zh、ep为123、biht为1426265548。

经过stringify处理后,对象变成一个JSON字符串。w参数的生成就是围绕这些字段进行的,涉及加密算法和逆向技巧。

混淆定位和算法还原

混淆定位的核心在于找到加密轨迹的来源。通过跟踪函数调用和变量流动,就能定位到PoW消息的处理部分。逆向思路是先从可视化界面入手,观察滑块在浏览器中的行为,然后抓取网络请求中的原始数据。

AES和RSA混合加密的还原过程涉及密钥协商和对称加密步骤。首先用RSA公钥对部分参数加密,再用AES对轨迹数据加密。这些步骤在加载接口和验证接口中反复出现,需要耐心调试JavaScript环境。

代码实现示例

var payload = {
  "setLeft": 84,
  "passtime": 386,
  "userresponse": 85.5034329189089,
  "lot_number": "80449b24edca4a569df98ef930b195b2",
  "pow_msg": "1|0|md5|...",
  "pow_sign": "a1f4fbd7f1642abd3d182d14e6563e77