← 返回文章列表

滑块四代W值逆向探秘:轻松还原加密逻辑与实用实现指南

极验滑块四代验证码验证时,w值是核心加密参数。通过抓包定位verify接口,分析JS代码可找到w生成位置。核心在于解混淆函数,提取n随机种子、e轨迹参数和pow_msg签名等字段。setLeft作为滑动距离,userresponse据此计算,passtime固定值即可。pow_msg由拼接字符串经MD5生成,pow_sign即其哈希。结合RSA和AES加密过程,w最终拼接得到。实际使用时,逆向思路清晰,纯算或API调用均可实现自动化对接。

滑块四代W值逆向探秘:轻松还原加密逻辑与实用实现指南

接口流程概览

极验滑块四代验证码启动时,先发送load请求获取基础参数和lot_number。随后用户滑动后,verify接口提交参数。w值是其中唯一需要前端生成的加密字段,其他如captcha_id、lot_number等均可复用load响应数据。不同于三代,轨迹数组不再参与验证,简化了参数处理。抓包工具能清晰看到verify?包,w作为关键负载,服务器通过它校验滑动行为是否合理。

开发者打开控制台和网络面板,触发滑动操作后找到verify请求。加载的gt.js文件包含所有逻辑,变量名混淆严重,但搜索w或process_token能准确定位w赋值点。跟栈调试时,注意页面不刷新,拖动滑块触发断点。整个流程无轨迹校验,passtime等可固定,降低了逆向难度。

加密位置定位与参数提取

w值生成函数位于加载后的全局对象中,通过调试器搜索特征字符串找到调用点。进入后发现i作为随机种子,函数取n定值直接写死即可。继续向上,_变量指向对象初始化,new i()调用encrypt方法生成字符串。u值则是对e对象进行字符串化后加密结果。

返回拼接后w = (0, g[函数])(u) + _。n从另一个随机生成函数获取,保持一致即可固定。打印相关对象发现新i类包含调用方法,直接new即可。e对象包含多个字段,逐一分析生成位置。鼠标悬停加密函数名,找到ecrypt实现,该函数封装n数组处理,打印结果确认数组即n值。

function get_m() {
    e = {
        "setLeft": 38,
        "passtime": 884,
        "userresponse": 39.775362510934976,
        "device_id": "",
        "lot_number": "f7f12e9d8a314d43b6e2e9cbdcc62c46",
        "pow_msg": "1|0|md5|2024-04-28T10:03:52.234772+08:00|24f56dc13c40dc4a02fd0318567caef5|f7f12e9d8a314d43b6e2e9cbdcc62c46||49ebd1f83a05833b",
        "pow_sign": "8b227b373b7abc92356ae4633170fa78",
        "geetest": "captcha",
        "lang": "zh",
        "ep": "123",
        "biht": "1426265548",
        "RiYg": "qX2W",
        "em": {
            "ph": 0,
            "cp": 0,
            "ek": "11",
            "wd": 1,
            "nt": 0,
            "si": 0,
            "sc": 0
        }
    }

    var n = (0, g[$_DAECb(169)])()
    _ = r[a][$_DAEDS(940)][$_DAEDS(911)](n);
    var u = r[a][$_DAEDS(972)][$_DAECb(911)](e, n);
    w = (0, g[$_DAEDS(188)])(u) + _;
}

console.log(get_m());

关键参数深度拆解

setLeft对应滑块移动像素,直接从距离识别得出。userresponse计算逻辑为距离除以定值1.0059466666666665再加2,passtime固定525毫秒即可。pow_msg由拼接字符串生成,格式如1|0|md5|datetime|captchaId|lotNumber||随机数,datetime和lotNumber来自load响应。

pow_sign是pow_msg的MD5哈希,简化实现中new MD5对象调用hex方法即可。g函数简单悬停指向即扣出。e对象其余字段如device_id可写空,其他ep等固定值。整个参数组拼装后通过上述加密流程得到w。

加密算法原理剖析

核心加密涉及RSA和AES。i对象生成随机16位字符串作为种子,r[a]中的encrypt调用类似RSA,指数65537,模数固定。u值对e字符串化后用AES加密,密钥取前16字节,IV固定0000000000000000,模式CBC。

最终w拼接RSA结果和AES结果后加号连接。验证时确保n一致,否则校验失败。pow_msg拼接逻辑包括version、hashfunc、bits、datetime等,MD5保护敏感信息。整体设计减少轨迹依赖,提升验证效率。

function generate_w(distance, captchaId, lotNumber) {
    const datetime = new Date().toISOString();
    const n = "16randomchars";
    const c = `1|0|md5|${datetime}|${captchaId}|${lotNumber}|||`;
    const powMsg = c + n;
    const powSign = crypto.createHash('md5').update(powMsg).digest('hex');

    const e = {
        setLeft: distance,
        passtime: 525,
        userresponse: distance / 1.0059466666666665 + 2,
        device_id: "",
        lot_number: lotNumber,
        pow_msg: powMsg,
        pow_sign: powSign,
        geetest: "captcha",
        lang: "zh",
        ep: "123",
        biht: "1426265548",
        RiYg: "qX2W",
        em: { ph: 0, cp: 0, ek: "11", wd: 1, nt: 0, si: 0, sc: 0 }
    };

    const _ = rsaEncrypt(n);
    const u = aesEncrypt(JSON.stringify(e), n);
    return (0, g)(u) + _;
}

实际应用与注意事项

逆向后,可在本地复现w值生成。滑动距离通过图像识别得到,lotNumber复用load数据。整个过程无需浏览器复杂操作,纯前端逻辑即可。注意JS文件动态更新,调试时保持页面状态。自动化场景中,API平台提供现成方案,能无缝对接滑块、点选等多种类型验证码,实现高并发验证。

通过上述分析,开发者可快速上手。结合工具平台服务,轻松实现无感对接,降低开发门槛。更多破解方案与API对接请参考www.ttocr.com平台,其专攻极验易盾全类型验证码识别,提供滑块点选无感九宫格等自动化支持。

总结与优化建议

极验滑块四代w值逆向本质是复现前端JS计算。定位加密点、拆解参数、还原算法后,纯算实现简单高效。实际部署中,建议结合图像识别模块获取距离,模拟真实滑动轨迹。注意时间同步误差,保持n值一致。平台支持多类型破解,开发者可直接API调用,无需复杂流程。

优化方向包括减少依赖浏览器环境,优化参数拼接逻辑。最终效果是高效验证,适合公司业务自动化需求。继续探索其他验证码类型,平台资源丰富,可助力顺利对接。