首页
社区
课程
招聘
Python爬虫&js逆向&sm4逆向案例
发表于: 2024-5-24 20:11 1639

Python爬虫&js逆向&sm4逆向案例

2024-5-24 20:11
1639

文章声明

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除!

概要

1
2
3
4
5
- 该篇文章是基于医保局的加密分析
- 不分析所有加密参数, 只分析 sm4算法
- 用到的工具 360浏览器
- 用到的在线加密测试网址
    https://lzltool.cn/SM4

逆向目标

1
请求参数 encData,响应参数 encData

开始整活

抓包

1
打开F12 选择XHR请求 定位到搜索数据包

参数定位及分析

  • 直接搜索关键词,这里推荐搜索encType因为这个词出现的地方大概率是加密的位置

  • 其实加密的算法请求体都已经告知了encType: "SM4"

  • 通过关键字搜索最终定位到了这里(很好搜,总共就两处)

  • l.toUpperCase()就是生成的请求体密文

  • 技巧1:像这种参数和响应数据都是加密的,我遇到的最多的就是这几种AES, DES, 现在多了个 SM4

  • 技巧2:SM4算法的加密模式也分CBC, ECB同样分是否有iv两种情况

1
2
3
4
5
6
在上图中我们可以看到 请求体的数据在此处还是明文状态
而 l 就是加密后的请求体,经过查看一番后,锁定了加密处就是 s = y(u, c) 和 l = b(s, a);
直接断点到 l = b(s, a) 处, 这时候我们先大胆猜想一下, 既然 sm4 是有两种加密模式,如果是cbc模式,那应该有 key, iv, 加密的明文 这三个数据;
而这里却只有 s, a 两个数据,这不得不让我们怀疑使用的是 ecb模式加密的
先把请求体复制下来
    {"addr":"","regnCode":"320200","medinsName":"","businessLvOutMedOtp":"","pageNum":6,"pageSize":10,"queryDataSource":"es"}
  • 在控制台分别输出 s, a, 发现原始数据都被转成了字节数组

  • 字节数组a 其实就是上面复制的明文请求体(e.data.data)转成的字节数组

  • 那么s就一定是加密的密钥了,为了安全我这里就不暴露了

  • 然后就开始测试, 测试网站: https://lzltool.cn/SM4

  • 发现加密结果一致,说明我们分析的没有问题,然后放开断点测试下响应数据的解密

  • 也是能正常解密的,至此就分析结束了

总结

1
2
3
4
5
6
7
8
9
10
- sm4 加密算法之前都没遇到过,第一次搞得时候也是一脸懵,还好这是第二次...
- 请牢记文章中的两个小技巧,有时候这些不起眼的小技巧能让你事半功倍
- 然后打个广告,如果有需要流量的可以联系我哈,下面介绍一下详细信息
1. 物联ka不能接打电话,月租13.9元999G
2. 长期卡,可以一直用,不需要预存费用,也不需要首充,没有任何套路。
3. 999G 时间30天,按当天开始算
4. 不限制app!!!
5. 不限速!不限速!不限速!
6. 可以开热点!!!
7. 可以放备用机用,也可以单独买一个设备几十块钱插卡用

贴一下我的名片


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//