2023年最新京东web端h5st3.0/3.1/4.1/4.2算法分析


h5st4.2分析:https://blog.csdn.net/danran550/article/details/133807065

前言

最近无聊研究某东网页发现多了个h5st加密参数,在这里分析一下逆向步骤,跟大家共同学习。
在这里插入图片描述

一、初步分析

完整的h5st参数如下:

20230219224055580;5811449597265311;e74d9;tk03wcfbd1cf518nqRluIyVqoO3ZcU5_YjoyK6HaF5Uvu91Pw_n3CLkPNYwLCNnmOYXdUlaamGl4YPbvD44UlrYdKzJ1;e9f18b65b5dba7c539b5fb5763028acc4998d813777609e98d2edfd16fea5d6;3.1;1676817655590;7414c4e56278580a133b60b72a30beb2764d2e61c57578e838e06644d1bfb42fb163d6a52f55d09ff54fee9e3891067180b7c78b36624b9de20052173f4c8c1f943d87ef61426c8b78481ea08de41b170af01ec0b144dd000ce230c23576589db168527c175bfe295e0d58f1ff946207c73e8470ce581ada47c27a437d5a8938998888b05d80aa484ef0965a4f0

参数根据分号可以分成8段数据,在这里给大家简单讲解一下每段数据含义,后面会分析

第?段数据含义获取
1yyyyMMddhhmmss 格式的时间可以自行生成
2fp 浏览器指纹参考文章生成
3function的id接口处获取
4tk接口处获取
5appid+body+tk+rd+function等进行一次加密的返回数据
6加密算法的版本目前常用3.0和3.1,4.1
713位时间戳可以随机生成
8浏览器ua+pin+fp 的加密如果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

在这里插入图片描述
用js解密试了一下,可以解密出第8段加密,搞定收工。


总结

h5st加密,其实比较关键的也就第5段和第8段,其他基本都是明文,不难解决,最后尝试了一下算法用易语言还原出来,结果完全可以用难度不大
在这里插入图片描述

2023.7.31 更新: 随机生成Fp已失效,需要扣代码计算,后面发新文章讲解

技术交流 5LyB6bmFNTM0NjE1Njk=(base64解码)

### 调用京东H5ST签名文件的方法 为了成功调用京东H5ST签名文件,需遵循特定流程并准备必要参数。此过程涉及使用指定API接口来获取所需签名。 #### 使用的API 用于请求H5ST签名的主要API路径为`/open/api/sign/h5st/generate`[^1]。该API负责生成针对具体业务场景优化后的H5ST签名字符串。 #### 参数说明 当发起API请求时,应提供如下关键参数: - `appKey`: 应用程序密钥,由开发者平台分配给每个应用实例。 - `timestamp`: 时间戳,精确到毫秒级别的时间表示形式。 - `nonceStr`: 随机数字符串,建议长度不少于8位字符。 - `bizType`: 业务类型编码,定义了当前操作所属的具体服务类别。 - `body`: 请求体内容,通常包含JSON格式的数据结构描述实际业务逻辑需求。 这些参数共同作用于构建安全可靠的通信环境,确保每次交互的安全性和唯一性[^2]。 #### 示例代码 以下是Python语言实现的一个简单示例,展示了如何通过HTTP POST方法向上述API发送请求,并处理返回的结果。 ```python import requests import json import time from hashlib import sha256 def generate_h5st_signature(app_key, biz_type, body_data): timestamp = str(int(time.time() * 1000)) nonce_str = "randomString" params = { 'appKey': app_key, 'timestamp': timestamp, 'nonceStr': nonce_str, 'bizType': biz_type, 'body': json.dumps(body_data), } response = requests.post( url='https://api.jd.com/open/api/sign/h5st/generate', headers={'Content-Type': 'application/json'}, data=json.dumps(params) ) result = response.json() if result['success']: h5st_sign = result['data'] print(f"H5ST Signature Generated Successfully: {h5st_sign}") else: error_msg = result.get('message', '') raise Exception(f"Failed to Generate H5ST Sign. Error Message: {error_msg}") if __name__ == '__main__': try: app_key_example = 'your_app_key_here' biz_type_example = 'exampleBizTypeCode' sample_body = {"key": "value"} generate_h5st_signature(app_key_example, biz_type_example, sample_body) except Exception as e: print(e) ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值