文章目录
- 医保局案例
- 1. 接口分析
- 2. 请求加密
- 3. 响应加密
- 4. 关键代码
本代码仅供学习、研究和交流使用,禁止用于任何商业用途或非法用途。使用者应对其行为负责,作者不对代码的滥用或不当使用承担任何责任。
医保局案例
页面: aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuL25hdGlvbmFsSGFsbFN0LyMvc2VhcmNoL21lZGljYWw=
接口: aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuL2VidXMvZnV3dS9hcGkvbnRobC9hcGkvQ29tbVF1ZXJ5L3F1ZXJ5Rml4ZWRIb3NwaXRhbA==
1. 接口分析


通过观察发现请求和相应都是加密的,并且大致的结构都是一样的,我们通过搜索关键字encData查找加密位置:

第一个文件是响应,直接去第二个js文件里面找,会找到多个结果,我们可以都打上断点,然后点击翻页会停到如图位置:(实际上就调用了function f(t) )

向上查看堆栈,看看是哪里调用了这个方法

实际上是在Object(u.a)(e)位置进去的,并且查看e的值中就包含了加密前的请求参数,执行方法得到的参数也确实是接口中看到的加密参数:


2. 请求加密
找到了加密位置,那我们就还原u.a就好了,这种u.a的调用方式并查看u的定义位置u = n("7d92"),很明显就是webpack打包了, 还原出n,就可以通过n调用内部的方法了

以下是webpack还原的大致步骤:
- 在
u = n("7d92")位置打上断点并刷新页面 - 进入
n里面,里面是一个自执行方法,全部复制出来 - 将
webpack导出给全局变量使用



导出使用

请求代码

3. 响应加密
我们在刚刚请求断点的基础上继续跟栈,找到如图所示位置,e中就是响应的加密结果, 执行Object(u.b)("SM4", e.data)后得到的就是明文结果


在请求代码的基础上就可以得到解密代码

4. 关键代码
本案例只展示了部分重要技术点,关键部分在于webpack的还原,如需要系统采集接口需要自行补充完成代码!
9651

被折叠的 条评论
为什么被折叠?



