地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvOS8=
f12进入了debugger,右击选择一律不在此处暂停, 点击继续执行
首先就是复制curl,然后到网站进行请求是什么加密
可以看到加密的'm': '1f284f2cc0aa0c4621d8cee0fb7fcd6a51661bd9', 'tt': 'MTc0NDQzNjIyNDU4Mg==',
然后就是hook一下m
var code = function(){
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async){
if (url.indexOf("m")>-1){
debugger;
}
return open.apply(this, arguments);
};
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
hook后可以看到获取到了,然后我们查看调用堆栈
然后就会发现断住了,然后往上找
到这里就会发现,m的值实在这里生成的,很明显这里经过了混淆,发现这里没有显示m的生成位置,往上找,你就会发现
找个解混淆工具看看
这里就有一个n.data.m = t.MqmaW(c, t[r(1881)](t[r(489)], f)),还有一个n[r(1939)].tt = btoa(f);,可以确定了,这里就是m还有tt的加密位置
js代码
const CryptoJS=require('crypto-js');
function c(n){
if(n){
return CryptoJS.HmacSHA1('9527'+n,"xxxooo").toString();
}
}
function run(){
let f =new Date()['getTime']();
let tt= btoa(f);
f=c(time)
return {
m:f,
tt:tt
}
}
console.log(run())