gzns
aHR0cHM6Ly9jZG4ubW9iaWxlYmFuay5ncmNiYW5rLmNvbS93ZWJTaGFyZS9zaGFyZS9pbmRleC5odG1sIy9wYWdlcy9maW5hbmNpYWwvYnV5RmluYW5jaW5nL2J1eUZpbmFuY2luZz9QRF9DRD1MQ0NKWlhKQjAxJlBST0RfTk09JUU5JTg3JTkxJUU3JUIxJUIzJUU1JTk4JTg5JUU1JUFGJThDJUU3JThFJUIwJUU5JTg3JTkxJUU1JUFFJTlEMSVFNSU4RiVCNyVFNSU4NyU4MCVFNSU4MCVCQyVFNSU5RSU4QiVFNyU5MCU4NiVFOCVCNCVBMiZERVRBSUxfU0VDX0FCQlI9JUU1JTk4JTg5JUU1JUFGJThDJUU3JThFJUIwJUU5JTg3JTkxJUU1JUFFJTlEMSVFNSU4RiVCNyZ0aW1lU3RhbXA9MTczMTMwNDI1MTU0Ng==
本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
抓包分析
没看出来有啥

随便找个包跟栈断点
l为发送的加密数据,由e.data来

往上点几个栈能看到o = p.a.post(t.url, t.data, b)这里有点像加密前的数据

基本就能确定这个地方在加密了

加密
猜测是SM系列的加密

d是生成的加密key,就是一个随机的uuid,可以写死

m是请求参数json转str后的值
加密函数,没看出来是SM的哪个加密,扣下来

直接把这个自运行函数整体扣下来
补出来window下的crypto和navigator的appName即可,需要整体替换$Fw.为""或者加个$Fw={}
const crypto = require('crypto');
window = {
crypto: crypto
}
navigator = {
appName: "Netscape",
}

解密
加解密的key需要是同一个key
解密函数,这个函数就在上面加密抠出来的自运行函数里面,直接调用即可


浙公网安备 33010602011771号