前言:仅做技术交流分享,如有侵权,联系删除!!
网址:aHR0cDovLzIwMi42MS44OS4xNjE6MTIwMjEvc3Vic2lkeU9wZW4=


请求载荷加密。

响应data加密

请求头Sign加密,时间戳加密,Source固定
跟栈分析


往上走了两步就摘到了

传入e(密文)调用Object(r["c"])-->返回请求头参数,继续往上看看e怎么来的

请求参数--> parameter: Object(m["b"])(JSON.stringify(i))
javascript
// 明文字典对象
i = {
"applyType": 1,
"year": 2026,
"buyerName": "",
"code": "",
"areaCode": "",
"status": "",
"distributor": "",
"enterpriseId": "",
"factoryNumber": "",
"machineCode": "",
"purchaseDateStart": "",
"purchaseDateEnd": "",
"pageNum": 3,
"pageSize": 20
}
(JSON.stringify(i))// 把字典对象转为字符串
'{"applyType":1,"year":2026,"buyerName":"","code":"","areaCode":"","status":"","distributor":"","enterpriseId":"","factoryNumber":"","machineCode":"","purchaseDateStart":"","purchaseDateEnd":"","pageNum":3,"pageSize":20}'


将上面的字符串传到这里进行加密,
将上面加密方法扣下来:然后补补
s = "30062AFC48C0E7B5B0918851C0445A37",s(密钥)是固定的,sm4算法也是标砖的

直接导模块就可以解决,

但是为了加深扣代码还有对webpack的理解,而且有时候不是标准的索性都做了
javascript
var l = n("8060").sm4--->webpack
- 找n加载器
- 8068 模块
在var l = n("8060").sm4-打上断点刷新页面,
// 先定义自执行函数然后将n函数体复制进自执行函数中
javascript
!function xxx(c){
function t(e){
if(u[e])
return u[e].exports;
var n=u[e]={
i:e,
l:!1,exports:{}
};
console.log(e)//查看调用了哪些模块,哪些模块还差
return c[e].call(n.exports,n,n.exports,t),
n.l= !0 ,
n.exports
}
window.zy = t;
}({// 这里补模块
8060: function(t, e, n) {
t.exports = {
sm2: n("526b"),
sm3: n("72fa"),
sm4: n("10d1")
}
}
// 同理补上其他模块 sm2/sm3可以先注释掉,但是后面发现都要补
})
var l = window.zy("8060").sm4;
window.zy就是n,然后找到全局找8086模块在后面补上,把10d1模块补上就出结果了

现在请求载荷就拿到了,还差headers以及响应加密处理
请求头扣代码:
传入上面拿到的e

f方法拿下来

将上面e传入,缺啥补啥补
注意一下 return a = "object" === Object(i["a"])(n) ? JSON.stringify(n) : n,三元表达式是对n类型判断,

到这里请求相关参数就都解决了,下一步模拟请求获取密文,解密密文、
可以拿到数据 可用

最后将密文解密
解密密文:
传入密文

调用


解密最后的,其实前面就扣过了,直接调用就行

这样就能获取到数据了,