gzns

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

抓包分析

没看出来有啥

image-20241204152642336

随便找个包跟栈断点

l为发送的加密数据,由e.data

image-20241204153522601

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

image-20241204153642351

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

image-20241204154010234

加密

猜测是SM系列的加密

image-20241112104532123

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

image-20241204154513026

m是请求参数json转str后的值

加密函数,没看出来是SM的哪个加密,扣下来

image-20241112104812980

直接把这个自运行函数整体扣下来

补出来window下的crypto和navigator的appName即可,需要整体替换$Fw.为""或者加个$Fw={}

const crypto = require('crypto');
window = {
    crypto: crypto
}
navigator = {
    appName: "Netscape",
}

image-20241204154918776

解密

加解密的key需要是同一个key

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

image-20241112104850389

posted @ 2024-12-04 15:58  逍遥子D  阅读(76)  评论(0)    收藏  举报