js逆向 -某电商网站最新h5st解析

本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除!

目标网站:aHR0cHM6Ly93d3cuamQuY2tLw==

目标接口:Cmh0dHBzOi8vYXBpLm0uamQuY29tLz9hcHBpZD1pdGVtLXYz

一、抓包:如下,请求url中有h5st, x-api-eid-token是加密的,x-api-eid-token是jstk接口返回,具体分析请看下一篇文章,今天我们重点来看h5st这个参数

js逆向 -某电商网站最新h5st解析_第1张图片

二、分析h5st

将h5st以分号分割,共有八段,我们具体看看

1、格式化的时间:20230720154922365;

2、fp(具体分析查看后面的文章):7899079095634169;
3、固定:fb5df
4、algo返回:tk03w97751bde18n9JQjKU8OwbfcH8q3cQteXhWncEGOJA9J47ScVS3xmKjrrB4vIaVWXsB9IhEAOQsiFMhjYy1Jr-Si; 

5、密文:8df44b4103487f6d902b3906ad9264fe778e38ac4e9be6cf41b02c7e79d71398;
6、固定:3.1;
7、13位时间戳:1689839362365;

8、密文:24c9ee85e67cf80746dd82817ecbeafc7a829b35c7f446a4c7d476cc9faa1d8834a93323ad7bce9bef1bba682b93d2e345f072ee0a83acebbfefcc8d4a845796a189aeca0879454b9961893fb2338472499cf863bd5c77d3126dfdbe88ca8a72

我们今天主要目标在第4,第5,第8段

三、第4段,tk生成

这段密文由request_algo接口(需要清除cookie才能抓到)返回:

js逆向 -某电商网站最新h5st解析_第2张图片

 在这个接口的url中有个expandParams参数是需要生成的,我们直接全局搜索,找到关键位置,打下断点,

js逆向 -某电商网站最新h5st解析_第3张图片

 查看右侧的调用栈,往上找定位到该参数的生成位置,注意这行代码: 

p = d[n(0, 0, 236, 183)][n(0, 0, 427, 643)]()

js逆向 -某电商网站最新h5st解析_第4张图片

我们直接在输出栏调用,直接就打印出参数值,和请求中的比对一模一样,继续查看 d, 非常明显的AES加密特征,我们直接用js还原

 js逆向 -某电商网站最新h5st解析_第5张图片

 js逆向 -某电商网站最新h5st解析_第6张图片

四、第5段加密:我们很容易猜想到该参数也是加密得到,我们直接搜索encrypt字段调试,直接将断点打到加密模块再逆向分析,入参n中除了body外都是明文,跟栈继续调试

 js逆向 -某电商网站最新h5st解析_第7张图片

 定位到 d.doby = SHA256(s) 这行代码,查看值和我们n中的body一致,非常明显的SHA256加密特征。js逆向 -某电商网站最新h5st解析_第8张图片

在来看看入参 r, 跟栈调试定位到这行重点代码:跟进去发现也是个SHA256

s = this[c(0, -807, 0, -887)](h, x, v, d, rr)[c(0, -291, 0, -48)]() || "";

js逆向 -某电商网站最新h5st解析_第9张图片

 将该参数的解密流程串联起来,共有两次SHA256加密,一次HmacSHA256后,得到正确值。

 五、第8段加密:

同样的,我们将断点打在加密方法处:很容易得到加密文本,key, iv的值(注意key与之前参数值有细微区别)

js逆向 -某电商网站最新h5st解析_第10张图片

 js逆向 -某电商网站最新h5st解析_第11张图片同样,我们直接还原得到结果。

js逆向 -某电商网站最新h5st解析_第12张图片

你可能感兴趣的:(爬虫,爬虫,python,算法)