Js逆向入门之sm加解密分析

Js逆向入门之sm加解密

地址:
aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuL25hdGlvbmFsSGFsbFN0LyMvc2VhcmNoL21lZGljYWw/Y29kZT05MDAwMCZmbGFnPWZhbHNlJmdiRmxhZz10cnVlCiA=(base64)

加密参数

1. payloadList item
2. responseList item

3. 如图
在这里插入图片描述

4. 目标数据在这里插入图片描述

加密位置

1. signDataList item
2. encData
在这里插入图片描述

3.其他参数
**
x-tif-nonce: N7unnPrD
x-tif-signature: 6de8df9e7e64500718720eab273b959a88aa601eaa6afdcf190ee7a5985c51aa
x-tif-timestamp: 1656150301**在这里插入图片描述

方法一:webpack 模块导出

在这里插入图片描述
这里只测试了是否可调用

方法二:python 还原

def main():
    timestamp = int(time.time())
    c, u = ret_u(timestamp)
    headers.update({'x-tif-signature': get_sha256(u)})
    headers.update({'x-tif-nonce': c})
    headers.update({'x-tif-timestamp': str(timestamp)})
    encData = data_encryption(
        '{"addr":"","regnCode":"110000","medinsName":"","medinsLvCode":"","medinsTypeCode":"","openElec":"","pageNum":1,"pageSize":10}')
    data = 'appCode=T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ' \
           '&data={"pageNum":"1","pageSize":"10","regnCode":"110000"}' \
           '&encType=SM4&signType=SM2' \
           f'&timestamp={timestamp}' \
           '&version=1.0.0&key=NMVFVILMKT13GEMD3BKPKCTBOQBPZR2P'
    signData = js_code.call('get_sign', data)
    # signData = sm2_sign(data)
    payload = {
        'data':
            {
                "data": {
                    "encData": encData
                },
                "appCode": "T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ",
                "version": "1.0.0",
                "encType": "SM4",
                "signType": "SM2",
                "timestamp": timestamp,
                "signData": signData
            }
    }
    response = requests.post(url='https://fuwu.nhsa.gov.cn/ebus/fuwu/api/nthl/api/CommQuery/queryFixedHospital',
                             json=payload, headers=headers)
    print('res::', response.text)
    print('res::', json.loads(data_decryption(response.json()['data']['data']['encData'])))


if __name__ == '__main__':
    main()

以上只是部分代码
sm2签名也不是python版本
不够完美

测试结果:

在这里插入图片描述

结束

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值