当前位置:   article > 正文

h5st 4.7.3 纯算分析_h5st4.7.3

h5st4.7.3

该文章主要提供交流学习使用。严禁用于商业用途,否则由此产生一切后果与作者无关,如有侵权请联系作者进行删除。

某东视频发布h5st 4.7.3

一. 初探

97d6d89444fdc07d8ae8a2cd347bf998.png

图1

828ebe3e8e09d336f07bf3351bbddf91.png

图2

ff6ed28cc107634a996f3ff717c21228.png

图3

1.全局搜索h5st打上断点找到赋值的地方。

2.发现是t.sign(r)的异步函数生成出来的,r的值一个json,字段分别是appid,body,client,functionId,其中body是加密的。往上看发现加密方式SHA256标准加密。

3.t.sign方法跟进去图3,发现l=new window.ParamsSignMain构造了函数。然后调用sign的方法传入上面的json最后生成了h5st。

4.最后l.sign单步跟进去发现又是vmp。。。。

二. 切入点

ce4c89f331764423132d8d3b0a9d8225.png

1.日志断点把有方法调用的都打上。

654f58c3f30fb5347325a44533a80e13.png

2.分析第一遍日志,发现有部分结果出来了,但是不知道生成过程,方法点进去继续打断点,后面都是类似操作。

8d7adf903e86b7bb797c6b4938ed6d85.png

3.可以看到最后的结果总共有八部分拼接而成。直接从头往下分析一一找出来。

cdd583f389fb9d76facab9b6b1b071ef.png

5202e974d6352701430d60307f168c7c.png

44d9c39f8c8dbc9e358a8af7cf4036c8.png

47b3417966f2ea8138ccfab2111e912c.png

3.长tk开头是最后结果的第八部分。用的AES加密,key是_M6Y?dvfN40VMF[X,iv是0102030405060708

加密内容是fp第二部分,fp是随机生成的可以固定,版本号和一些校验的值,p2的值是cookie中的pin。

ps:这边的AES加密是魔改的不是标准算法。

57084082af55224a5509660bda483efa.png

4.生成一个时间戳第七部分,在调用方法传入时间戳和格式生成第一部分。

48bf3f12e09cfa1e521b340768b9df9c.png

2e9dd4b690468581719de6423aba6468.png

ps:request_algo这个接口拿到token,rd和加密方式。加密方式是动态的有md5,HmacMD5,HmacSHA512等

token是第四部分

799c6403534ee995d3166c432912ba24.png

5.用test方法传入token,fp,上面生成的时间+78,appid,要求的加密方式生成字符串1,然后在把最早传进来的json转成特定的字符串2,在用m.HMAC.init(e,字符串2).finalize(字符串1)生成第五部分

396b27eacc712f2e4d8f467084b95d6a.png

6.最后把八个部分拼接出来。

三. 总结

97fe019b2da31d90cf47f4a922ce0b9a.png

1.时间戳转换

ec02d7ac5e2017d5a0d41830e7e8f4c6.png

2.fp的随机生成,可以固定,generateVisitKey这方法生成

3.appId.每个接口对应一个id自己找下。

4.token.request_algo这个接口返回的内容带上fp去请求。

5.看上面第5的方法。

6.版本号,目前4.7

7.时间戳。

8.看上面第3的方法。

最后拼成h5st

四. 测试

b4df6c04767f41899216ed81d24a5bec.png

成功200.

代码自取:微信公众号Bug攻防

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/986810
推荐阅读
相关标签
  

闽ICP备14008679号