仅供研究学习使用。
今天带来的是某团headers中mtgsig参数的逆向。
目标站:商家后台登陆 --> 传送门
目前大部分h5的算法都更新至1.2了 只有商家版后台还多为1.1的。
废话不多说直接开干
mtgsig: {"a1":"1.1","a2":1741916388817,"a3":"z0u89y82y7xw599w021x55v507v835448057y35v7uw9795864z8z9zu","a5":"Th0orxZzYh0ZXe+pBUBrPj+76C/HwcrP","a6":"h1.5z8Lbkh4D/SJax6K/k+Zd9u+3R4tPZU3wbPUHiGt/LyvmIf/fUTjT3yqkuOjCpsY7HzaCmgkUvrWOaiSyB/Rpz166brpcXHldVTwITgaT47mFCZCtQerceGUDaFEU2Dp7dECDUFJjS3UFV0A81ULHxY2ZwrOvOasJZo+K+ht4ftU0B2MxsfeFQxKhH2jVswdorFMpx7yAXHT4qvGC19d5RXEcNMv/YD6Ar4j2dozKkjED2isCXXDSmnTFejxYJ1OHatJaeoyBUynvqQTJvnTW9APzB81UWQq7MUx36uaaCjoiuvMCJYMkJg96JwSheMRB38a36cOnLa7oE0LQksGOwApM+N420Xkyxw2a89mh4SNqXGKeNeTjJAWf5in4+HVC7L39K56s1gpHnsPl1H9PQA==","x0":4,"d1":"44339d845fc1562ef39a80651bf2cbae"}
这里抓包后可以清晰看到 mtgsig明显是一个加密参数,根据经验先瞄一眼a1 a2 …a6
其中
a1: 版本号
a2: 时间戳
a3: cookie相关
a5: 未知
a6:未知
x0:固定值
d1: 未知字符串取md5
这里先从js入手 可以从network中看到
这里看到整个js是一个自运行函数 其中算法部分基本上都是混淆加密了 且有控制流在里面
控制台打印可以看到 window.H5guard这个被赋值了 所以这里我们就可以考虑利用补环境来完成。
这里贴一部分需要检测的环境
const jsdom = require("jsdom");
const {JSDOM} = jsdom;
const dom = new JSDOM("<!DOCTYPE html><p>Hello world</p>", {
url: ["https://h5.waimai.meituan.com/waimai/mindex/home", "https://verify.meituan.com/v2/web/general_page"],
runScripts: 'dangerously',
resources: 'usable',
fetchOptions: {
credentials: 'include'
},
})
const {
performance, PerformanceObserver,
} = require('perf_hooks');
window = dom.window;
Window = dom.window;
self = window.self
document = window.document
navigator = window.navigator = {}
Navigator = window.Navigator = {}
navigator['userAgent'] = ''
location = window.location
sessionStorage = window.sessionStorage
XMLHttpRequest = window.XMLHttpRequest;
document.cookie = ''
screen = {
"availWidth": 391,
"availHeight": 855,
"width": 391,
"height": 855,
"colorDepth": 24,
"pixelDepth": 24,
"availLeft": 0,
"availTop": 0,
"orientation": {},
"onchange": null,
"isExtended": false
}
location = {
"ancestorOrigins": {},
"href": "",
"origin": "https://h5.waimai.meituan.com",
"protocol": "https:",
"host": "h5.waimai.meituan.com",
"hostname": "h5.waimai.meituan.com",
"port": "",
"pathname": "/waimai/mindex/home",
"search": "",
"hash": ""
}
实际上也可以自己把代码拷下来在nodejs里面运行 缺什么补什么即可
setInterval = function(){
return this
}