闷骚小贱男 发表于 2022-7-30 21:55

京东试用h5st参数

本帖最后由 闷骚小贱男 于 2022-8-2 13:03 编辑


# 网址
通过抓包找到jd试用的网址:aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20vbWFsbC9hY3RpdmUvRzdzUTkydldTQnNUSHprNGU5NTNxVUdXUUo0L2luZGV4Lmh0bWw

---
# 开始操作
F12开发者模式,搜索 `h5st`,最后找到`main.6d****82.js`文件

分别给 `c.h5st = y` 和 `w.h5st = y` 附近多打几个断点,然后滑动页面加载下一页


可以看出y就是h5st,而 `y = this(f, s, g);`
挨个分析
this中包含了 `_appId` 和 `_fingerprint` 和`_token`和`_timestamp`和`_version`等信息,都是h5st中用到的
[在电脑浏览器登录京东试用的时候,cookie中sfstoken就是token]


8个参数,现在就剩下5和8了,再往上看,找到了调用参数`(f, s, g)`
f为第五个参数,g为第八个


继续往上看, `g=v()`

可以得出参数8的加密方式、key和iv等信息

而iv和key又可由hex解码解出

| iv| key|
| ------------- |:-------------:|
| 0102030405060708   | wm0!@w_s#ll1flo( |

然后我们解出参数8的明文


协议头和fp等参数组成,所以判断参数8几乎为固定的
~~~json
{
"sua": "Linux; Android 11; Pixel 5",
"pp": {},
"fp": "4975599160384842"
}
~~~


接下来继续往上翻,看参数5 `f = Jd.HmacSHA256(l, n)(Jd)`

可以看出f是又HmacSHA256得来的,我们断点`Jd.HmacSHA256`,F8继续执行脚本,并随便点一个类目

可以看出t是加密文本,n(token)是key,使用HMAC SHA 256加密

{我们翻堆栈能看到一个test}


---
# 补充:test函数的获取
补充:感谢@幽溪左畔 的提醒,原来这个test函数,是通过ajax请求拿到的,所以说每次清空cookie之后的算法都是不一样的。(接口:*.*.com/request_algo?g_ty=ajax)
通过抓包又发现一个加密参数`expandParams`
~~~JavaScript
                  data: JSON({
                        version: s,
                        fp: i,
                        appId: a,
                        timestamp: Date(),
                        platform: r,
                        expandParams: c
                  }),
~~~~
往上翻,拿到c
~~~JavaScript
c = e;      //也就是e.env
~~~


通过分析,我们拿到key和iv,是和刚才的一模一样的信息

| iv| key|
| ------------- |:-------------:|
| 0102030405060708   | wm0!@w-s#ll1flo( |


明文中,包括了很多信息....cookie、ua、页面宽高信息、url、Origin、appid、fp等信息。



---
# boby参数

我们继续执行脚本,发现有又执行了一次`Jd.HmacSHA256`,此次得到的结果就是第五个参数key就是刚才HMAC SHA 256加密的结果,那么t(加密文本)中有一个boby是64位的未知数,我们看看boby是如何来的


我们搜 `body:` ,发现一个可疑的json,和刚才的t参数拼接后是一样的
~~~JavaScript
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变化的


lxk0301 发表于 2022-8-2 10:37

本帖最后由 lxk0301 于 2022-8-2 13:23 编辑

更新的expandParams的加密key 是 【wm0!@w-s#ll1flo( 】, 文本中好像写错了

幽溪左畔 发表于 2022-7-31 13:31

闷骚小贱男 发表于 2022-7-31 12:29
有不少都不是固定的。
body不同 加密的参数内容也会都不同的,
获取列表、获取试用信息、参加试用等 第 ...
有个ajax结尾的请求 是根据这个请求的返回值判断用什么算法,追码的时候会到一个vm区 那个就是动态算法的部分,不同平台也不太一样 比如京喜的某些接口h5st的加密参数拼接方式就不太一样 但是流程是一样的

闷骚小贱男 发表于 2023-1-11 20:11

本帖最后由 闷骚小贱男 于 2023-1-11 20:53 编辑

zyzyzyzy 发表于 2023-1-11 15:37
楼主有没有新的某手跳一跳
。哪里有跳一跳?我怎么没看到
--------------------------------------
看到了。和去年一样,用fiddlerScript操作改写JSON的pedestalDistance=100和pedestalSize=5即可

heart8619 发表于 2022-7-30 22:09

膜拜大神!!1.81大批返回空白,如何继续使用?非常感谢大佬的作品中了好几个,希望大神更新下。

ljx588 发表于 2022-7-30 22:43

支持。希望继续更新软件

BlackSpace 发表于 2022-7-30 22:50


膜拜大神!!

polyneices 发表于 2022-7-31 00:02

谢谢大佬分享

霸气公爵 发表于 2022-7-31 06:36

希望软件可以继续更新,对你还是很信任的,软件也很好用,楼主加油

tjtjtj 发表于 2022-7-31 07:48

看看学习学习

wuming6534 发表于 2022-7-31 08:19

不错 写的很详细

゛雨雨゛ 发表于 2022-7-31 08:25

太高深,小白看不懂。等成品

゛雨雨゛ 发表于 2022-7-31 08:28

现在在用小京京1.7.10对付着
反正好久不中了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 京东试用h5st参数