当前位置: 首页 > news >正文

25年7月最新版本利用标准算法库对医保服务平台js逆向之signData进行分析

上面是分析流程,完整js代码在文末获取

1、对当前网页进行药店信息解析

2、开始抓包分析,发现只需要逆载荷中的encData,signData这两个参数就可以成功拿到数据,不用携带headers中的加密值

可以看到我的headers中去掉x-tif-nonce,x-tif-paasid,x-tif-signature一样可以请求。

3、直接搜索加密参数signData,发现虽然有4个位置,但是有两个是变量,两个是函数,只分析函数的那两个值。

4、打上断点后刷新,发现只有下面这个是断住的,只分析这个参数

5、从尾巴依次往上分析

6、可以先拿e.from(a, "hex").toString("base64")去问ai是怎么生成的有替换的方法就不用扣代码

7、所以我们直接复制替换

signData = Buffer.from(a, "hex").toString("base64")

8、然后就依次缺什么函数就去扣

直到一个o函数有点像标准算法库的就去问ai替换

9、有一些值可以固定直接可以写死

10、最终就是signData参数的影响只有下面这三个值。

11、解析成功

完整js代码如下,需要自己安装一下sm-crypto包

const sm = require('C:/Users/Chambliss/node_modules/sm-crypto').sm2;c = "NMVFVILMKT13GEMD3BKPKCTBOQBPZR2P"
d = "AJxKNdmspMaPGj+onJNoQ0cgWk2E3CYFWKBJhpcJrAtC"
const timestamp = Math.floor(Date.now() / 1000);function v(e) {var t = [];for (var n in e)if (e.hasOwnProperty(n) && (e[n] || "".concat(e[n])))if ("data" === n) {var i = Object.assign({}, e[n]);for (var r in i) {if ("number" != typeof i[r] && "boolean" != typeof i[r] || (i[r] = "" + i[r]),Array.isArray(i[r]) && !i[r].length && delete i[r],Array.isArray(i[r]) && i[r].length > 0)for (var o = 0; o < i[r].length; o++)i[r][o] = p(i[r][o]);null != i[r] && i[r] || delete i[r]}var a = p(i);t.push("".concat(n, "=").concat(JSON.stringify(a)))} elset.push("".concat(n, "=").concat(e[n]));return t.push("key=".concat(c)),t.join("&")
}function p(e) {var t = new Array, n = 0;for (var i in e)t[n] = i,n++;var r = [].concat(t).sort(), o = {};for (var a in r)o[r[a]] = e[r[a]];return o
}e = {"appCode": "T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ","data": {"addr": "","regnCode": "450100",//城市编码"medinsName": "","businessLvOutMedOtp": "","pageNum": 2,//页码"pageSize": 10,"queryDataSource": "es"},"encType": "SM4","signType": "SM2","timestamp": timestamp,"version": "1.0.0"
}function smms(e) {r = v(e)a = sm.doSignature(r, d, {hash: !0});signData = Buffer.from(a, "hex").toString("base64")return signData
}console.log(smms(e))

第二篇开始分析encData。可以到我主页看

http://www.dtcms.com/a/284364.html

相关文章:

  • SiLM6000S:高集成智能光伏关断器,集成SunSpec PLC接收,助力安全合规
  • python Flask 框架入门
  • Kotlin 属性委托 observable 的实现原理
  • 使用Leaflet实现地图高亮点标记功能 渲染本地icon图片
  • 集成算法学习学习
  • Qt 监控串口设备热插拔的方法
  • javaweb学习开发代码_HTML-CSS-JS
  • [RAG] 文档格式化 | 知识库摄入 | VectorDB.faiss | BM25索引.pkl
  • 松材线虫检测仪在林业的作用
  • 【Lua】题目小练1
  • 九学王资源apk应用名称整理
  • 【机器学习实战【七】】机器学习特征选定与评估
  • ELN:生物医药科研的数字化引擎——衍因科技引领高效创新
  • 多线程(一) --- 线程的基础知识
  • 使用位运算优化 Vue.js 应用:高效状态管理技巧
  • Oracle 19.28 RU 升级最佳实践指南
  • 装饰器模式及优化
  • 大模型Agent应用开发实战:从框架选型到行业落地
  • 十六进制与嵌入式系统及通信系统
  • yolo8+ASR+NLP+TTS(视觉语音助手)
  • 基于Rust Softplus 函数实践方法
  • 【通识】网络的基础知识
  • 学习日志预告
  • 【测试100问】为什么要做接口测试?
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GoodCheapFast(Good - Cheap - Fast三选二开关)
  • 区块链之Casper协议背景、演变发展、运作机制和潜在风险
  • 周志华《机器学习导论》第8章 集成学习 Ensemble Learning
  • 2025开源组件安全工具推荐OpenSCA
  • LVS(Linux virtual server)
  • AWS Lambda 最佳实践:构建高效无服务器应用的完整指南