某音a_bogus

1,578 阅读1分钟

最近看到这个参数花了点时间研究了一下通过对这段字符串 “Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe” charAt得到最终的44位字符串,代码如下

    for (var i = 0; i <= 30; i += 3) {
        var charCodeAtNum0 = garbledString.charCodeAt(i);
        var charCodeAtNum1 = garbledString.charCodeAt(i + 1);
        var charCodeAtNum2 = garbledString.charCodeAt(i + 2);
        var baseNum = charCodeAtNum2 | charCodeAtNum1 << 8 | charCodeAtNum0 << 16;
        // 依次生成四个字符
        var str1 = short_str[(baseNum & 16515072) >> 18];
        var str2 = short_str[(baseNum & 258048) >> 12];
        var str3 = short_str[(baseNum & 4032) >> 6];
        var str4 = short_str[baseNum & 63];
        ABogus += str1 + str2 + str3 + str4;
    }

其中garbledString是乱码字符串,通过对时间戳、userAgent、请求的参数等进行计算得到 计算过程中需要一个4位数组和29位数组,以及一些方法调用,这里通过多次插桩分析日志可以还原调用的函数,数组的计算方法 还是有一点难度的 算法还原完 大概56百行左右 感兴趣的可以交流一下 在线测试地址:

https://www.postman.com/lunar-module-geologist-24561262/workspace/textapi/request/29239632-f5309b2d-c703-44bc-bfce-cdaf5a92a468

2aa72628b1da475688657569371a1b0b.png