通过抓包找到jd试用的网址:aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20vbWFsbC9hY3RpdmUvRzdzUTkydldTQnNUSHprNGU5NTNxVUdXUUo0L2luZGV4Lmh0bWw
F12开发者模式,搜索
h5st
,最后找到
main.6d****82.js
文件
分别给
c.h5st = y
和
w.h5st = y
附近多打几个断点,然后滑动页面加载下一页
可以看出y就是h5st,而
y = this[o(81, 0, 25) + t(0, 920, 0, 1148)](f, s, g);
挨个分析
this中包含了
_appId
和
_fingerprint
和
_token
和
_timestamp
和
_version
等信息,都是h5st中用到的 //_fingerprint=JSON.parse(localStorage.WQ_vk1_8f1e3).v
8个参数,现在就剩下5和8了,再往上看,找到了调用参数
(f, s, g)
f为第五个参数,g为第八个
继续往上看,
g=v[t(0, 1269, 0, 1201)][t(0, 1121, 0, 1110)]()
可以得出参数8的加密方式、key和iv等信息
而iv和key又可由hex解码解出
ivkey0102030405060708wm0!@w_s#ll1flo(
然后我们解出参数8的明文
协议头和fp等参数组成,所以判断参数8几乎为固定的
{"sua":"Linux; Android 11; Pixel 5","pp":{},"fp":"4975599160384842"}
接下来继续往上翻,看参数5
f = Jd.HmacSHA256(l, n)[o(93, 0, -78)](Jd[t(0, 812, 0, 820)][t(0, 1335, 0, 1533)])
可以看出f是又HmacSHA256得来的,我们断点
Jd.HmacSHA256
,F8继续执行脚本,并随便点一个类目
可以看出t是加密文本,n(token)是key,使用HMAC SHA 256加密
//我们翻堆栈能看到一个test
补充:test函数的获取
补充:感谢@幽溪左畔 的提醒,原来这个test函数,是通过ajax请求拿到的,所以说每次清空cookie之后的算法都是不一样的。
(接口:*.*.com/request_algo?g_ty=ajax,有多种加密,每次访问可能都不同)
通过抓包又发现一个加密参数
expandParams
data: JSON[p(0, 964, 945)]({
version: s,
fp: i,
appId: a,
timestamp: Date[f(775, 0, 753)](),
platform: r[p(0, 1003, 965)],
expandParams: c
}),
往上翻,拿到c
c = e[o(1191, 0, 1170)]; //也就是e.env
[attachimg]2542164[/attachimg]
通过分析,我们拿到key和iv,是和刚才的一模一样的信息
ivkey0102030405060708wm0!@w-s#ll1flo(
[attachimg]2542172[/attachimg]
明文中,包括了很多信息…cookie、ua、页面宽高信息、url、Origin、appid、fp等信息。
boby参数
我们继续执行脚本,发现有又执行了一次
Jd.HmacSHA256
,此次得到的结果就是第五个参数key就是刚才HMAC SHA 256加密的结果,那么t(加密文本)中有一个boby是64位的未知数,我们看看boby是如何来的
我们搜
body:
,发现一个可疑的json
c = {
functionId: t.functionId,
clientVersion: i,
appid: s,
client: u,
body: Br.a.sha256_digest(JSON.stringify(a)).toString()
},
我们下断点,F8继续执行脚本,并随便点一个类目
能看出body的密文其实的post的时候的body的参数进行了SHA256加密
h5st参数大致流程
functionid等,是根据api的functionid变化的
[/md]
版权归原作者 闷骚小贱男 所有, 如有侵权,请联系我们删除。