2023年最新京东M端h5st算法分析
前言
最近无聊研究某东网页发现多了个h5st加密参数,在这里分析一下逆向步骤,跟大家共同学习。
一、初步分析
完整的h5st参数如下:
20230219224055580;5811449597265311;e74d9;tk03wcfbd1cf518nqRluIyVqoO3ZcU5_YjoyK6HaF5Uvu91Pw_n3CLkPNYwLCNnmOYXdUlaamGl4YPbvD44UlrYdKzJ1;e9f18b65b5dba7c539b5fb5763028acc4998d813777609e98d2edfd16fea5d6;3.1;1676817655590;7414c4e56278580a133b60b72a30beb2764d2e61c57578e838e06644d1bfb42fb163d6a52f55d09ff54fee9e3891067180b7c78b36624b9de20052173f4c8c1f943d87ef61426c8b78481ea08de41b170af01ec0b144dd000ce230c23576589db168527c175bfe295e0d58f1ff946207c73e8470ce581ada47c27a437d5a8938998888b05d80aa484ef0965a4f0
参数根据分号可以分成8段数据,在这里给大家简单讲解一下每段数据含义,后面会分析
第?段 | 数据含义 | 获取 |
---|---|---|
1 | yyyyMMddhhmmss 格式的时间 | 可以自行生成 |
2 | fp 浏览器指纹 | 可自行随机生成 |
3 | function的id | 接口处获取 |
4 | tk | 接口处获取 |
5 | appid+body+tk+rd+function等进行一次HmacSHA256加密的返回数据 | |
6 | 加密算法的版本 | 目前常用3.0和3.1 |
7 | 13位时间戳 | 可以随机生成 |
8 | 浏览器ua+pin+fp 的Aes加密 | 如果fp不变可写死 |
二、详细分析
就拿收藏商品接口来说吧
接口上基本包含了 functionid,appid,body,加密版本,等几个重要参数
至于tk,rd这些参数就在这个接口,至于接口里面这段代码就关乎到了第五段加密,根据我分析其实就是tk+fp+ts+ai+rd 一起然后sha256加密一下返回的数据就是第五段内容HmacSHA256 加密的key
function test(tk,fp,ts,ai,algo)
{
var rd='4EKPameSb';
var str=`${tk}${fp}${ts}${ai}${rd}`;
return algo.SHA512(str)
}
然后第八段我分析到一个Aes加密,断点到关键位置发现了iv和key
控制台输出看看
这个肯定不太对的需要HEX转一下
得出结果
key:wm0!@w-s#ll1flo(
iv:0102030405060708
总结
h5st加密,其实比较关键的也就第5段和第8段,其他基本都是明文,不难解决,最后尝试了一下算法用易语言还原出来,结果完全可以用难度不大