吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1502|回复: 35
收起左侧

[Web逆向] 【JS逆向入门】国*医*服务平台 国密SM4、SM2加密解密分析

[复制链接]
ShawDS 发表于 2026-3-14 12:25
本帖最后由 ShawDS 于 2026-3-14 12:41 编辑

1、抓包看请求与响应
1.png
包含5个参数:x-tif-nonce、x-tif-signature、x-tif-timestamp、x-tingyun、x-tif-Paasid
其中x-tif-Paasid的值恒为undefined,x-tif-timestamp的值为时间戳,实际发包请求头为空也能收到正常响应,服务器只检查请求体
6.png
请求体包含encData、appCode、version、encType、signType、timestamp、signData
其中appCode、version、encType、signType为固定值,timestamp为时间戳,encData、signData为密文
2.png
响应体包含signData、encType、encData、version、timestamp、message、type,只需关注密文encData即可
2、逆向请求体逻辑
全局搜索encData找到加密逻辑

多次F5后发现c与u为固定值,s也为固定值,a为字符串{"addr":"","regnCode":"110000","medinsName":"","medinsLvCode":"","medinsTypeCode":"","outMedOpenFlag":"","pageNum":7,"pageSize":10,"queryDataSource":"es"},包含页数与单页显示数量
进入函数b后发现是将传入的a进行n.concat(new Array(i).fill(i));后送去加密
7.png
F9单步进入加密函数
9.png
标准的SM4加密
直接调用sm-crypto算出密文

[JavaScript] 纯文本查看 复制代码
var sm4=require("sm-crypto").sm4;
var mingwen={
    "addr":"",
    "regnCode":"450100",
    "medinsName":"",
    "medinsLvCode":"",
    "medinsTypeCode":"",
    "outMedOpenFlag":"",
    "pageNum":1,
    "pageSize":10,
    "queryDataSource":"es"
};
mingwen=JSON.stringify(mingwen);
var key_my=Buffer.from([67,51,65,69,53,56,55,51,68,48,56,52,49,56,68,65]).toString("hex");
var result=sm4.encrypt(mingwen,key_my).toUpperCase();
console.log(result);


全局搜索signData找到加密逻辑
3.png
doSignature是SM2算法的加密函数,多次F5后发现d为固定值,r为'appCode=T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ&data={"pageNum":"2","pageSize":"10","queryDataSource":"es","regnCode":"450100"}&encType=SM4&signType=SM2×tamp=1773461619&version=1.0.0&key=NMVFVILMKT13GEMD3BKPKCTBOQBPZR2P'
包含页数、单页显示数量与时间戳,其余值都为固定值
直接调用sm-crypto算出密文
[JavaScript] 纯文本查看 复制代码
var sm2=require("sm-crypto").sm2;

var plaintext='appCode=T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ&data={"pageNum":"5","pageSize":"10","queryDataSource":"es","regnCode":"450100"}&encType=SM4&signType=SM2×tamp=1773447985&version=1.0.0&key=NMVFVILMKT13GEMD3BKPKCTBOQBPZR2P';
var private_key_sm2="9c4a35d9aca4c68f1a3fa89c93684347205a4d84dc260558a049869709ac0b42";
var signData=sm2.doSignature(plaintext,private_key_sm2,{"hash":true,"publicKey":"04429ac3742d737d4b1bf8533c714f96b88ab809ff9f34d697c2e24712f0e22422494232ba0969b45c4d91d0a2357717be4a931fbf5187f036b04154ea18de2b79","der":false});
signData=Buffer.from(signData,"hex").toString("base64");

console.log(signData);

4.jpg
request成功出响应体
因为SM4为对称加密,故可直接调用sm-crypto进行解密
[JavaScript] 纯文本查看 复制代码
var sm4=require("sm-crypto").sm4;
var key_my=[67,51,65,69,53,56,55,51,68,48,56,52,49,56,68,65];
key_my=Buffer.from(key_my).toString("hex");
var miwen="密文字符串";
var result=sm4.decrypt(miwen,key_my);
console.log(result);

5.jpg
结束。

免费评分

参与人数 9吾爱币 +5 热心值 +9 收起 理由
caiji114514 + 1 谢谢@Thanks!
allspark + 1 + 1 用心讨论,共获提升!
menyu001 + 1 用心讨论,共获提升!
AlexAux + 1 + 1 谢谢@Thanks!
Trexrush + 1 + 1 谢谢@Thanks!
springlu + 1 我很赞同!
test20222022 + 1 + 1 用心讨论,共获提升!
liuxuming3303 + 1 + 1 我很赞同!
sealoyal + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

douzi432 发表于 2026-3-15 01:09
学习学习
萌哒哒小乐天 发表于 2026-3-15 15:05
pixiaoxiao 发表于 2026-3-15 18:09
haohaoyu 发表于 2026-3-15 19:17
哇,新人来学习了
ycxy 发表于 2026-3-15 19:44
这么刺激的嘛
ybj2026 发表于 2026-3-15 20:33
国家的东西慎重点
Trexrush 发表于 2026-3-16 08:29
学习一手
istat 发表于 2026-3-16 08:34
谢谢分享。
BugSrc 发表于 2026-3-16 08:46
太牛了 楼主是e保领域吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-3-18 05:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表