最近看到这个参数花了点时间研究了一下通过对这段字符串 “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