逆向分析某度旋转验证码v2加密算法:从抓包到代码实现

某度旋转验证码v2的加密算法更新后,对于爬虫挑战带来了新的难度。本文将详细介绍如何通过抓包分析和逆向工程的方式,分析出验证码加密算法,并用代码实现整个过程。

抓包分析:
首先,我们需要抓包分析验证码请求和响应,以便了解加密算法的实现细节。在抓包过程中,我们可以观察到验证码请求和响应中的参数,以及它们的关系和变化。

发起验证码初始化请求:


const ver = 1;
const timestamp = Date.now();
const referer = "https://example.com";
const ak = "your_ak_value";

const initParams = {
    ver: ver,
    _: timestamp,
    refer: referer,
    ak: ak
};

// 发起初始化请求
const initResponse = await makeInitRequest(initParams);
获取验证码初始化响应参数:

javascript
Copy code
const as = initResponse.as;
const tk = initResponse.tk;
发起验证码样式请求:


const styleParams = {
    tk: tk,
    _: timestamp,
    otherParams: "other values"
};

// 发起样式请求
const styleResponse = await makeStyleRequest(styleParams);
获取验证码样式响应参数:


const path = styleResponse.path;
const backstr = styleResponse.backstr;
发起验证码提交请求:


const submitParams = {
    tk: tk,
    as: as,
    fs: encryptedFs,
    _: timestamp,
    url: "https://submitted-url.com"
};

// 发起提交请求
const submitResponse = await makeSubmitRequest(submitParams);
逆向分析:
通过对抓包过程的分析,我们可以了解到验证码请求中的加密参数fs的生成方式,进而进行逆向分析。

构造第一个fs参数:


const common_en = JSON.stringify({ path: path, backstr: backstr });
const firstFs = encrypt(common_en, secondHandle);
构造第二个fs参数:

javascript
Copy code
const finalFs = encrypt(JSON.stringify({ common_en: firstFs, backstr: backstr }), { key: newKey, as: as, method: "aes-ecb" });
加密函数实现:


function encrypt(data, params) {
    let encryptedData;
    switch (params.method) {
        case "aes-ecb":
            encryptedData = AES.encrypt(data, params.key).toString();
            break;
        // Add other encryption methods here
        default:
            throw new Error("Unsupported encryption method");
    }
    return encryptedData;
}
计算密钥值:


function getNewKey(as) {
    // Calculate key based on 'as'
    // Example implementation
    const key = CryptoJS.MD5(as + "appsapi2").toString().slice(0, 16);
    return key;
}
AES加密模块初始化:


const AES = {
    encrypt: (data, key) => CryptoJS.AES.encrypt(data, key).toString(),
    // Add other AES encryption methods here
};

如果上述代码遇到问题或已更新无法使用等情况可以联系Q:1436423940或直接访问www.ttocr.com测试对接(免费得哈)

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值