[JS逆向] 某医保服务平台数据获取

目录

声明

目标 

前言

一、页面分析

二、加密参数解析 

1.headers的模块加密

X-Tingyun参数

X-Tif-Signature参数

X-Tif-Nonce参数

X-Tif-Timestamp参数

2. 请求参数加密

encData参数

signData参数

3.返回参数

encData

4、运行成功案例

总结


声明



        本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
        本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!

目标 


        目标:某医保服务平台数据加密
        网址:aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuL25hdGlvbmFsSGFsbFN0LyMvc2VhcmNoL2RydWctZGlyZWN0b3J5P2NvZGU9OTAwMDAmZmxhZz1mYWxzZSZnYkZsYWc9dHJ1ZQ==

前言


        无意中看到接单群里面看到这个单子(没有接)、我在想gov系列不会没有反扒的呀,应该会有一些加密的产生的、果不其然去看了两眼,还是有一系列的加密参数生成的

        

一、页面分析


        点击下一页就会发现加载两个包,不出意外的话数据应该在gueryDrugTypelnfo加载包里

        

        对比了几下、好家伙、有好几处加密地方在里面

        headers就有四个参数加密(虽然简单)  

                X-Tif-Nonce

                X-Tif-Signature:

                X-Tif-Timestamp:

                X-Tingyun:


 请求参数 (会发现没有关于页数的参数)

        encData: 'SM4'

        signData: 'SM2'


 返回参数:

                encData: 是内容加密后的结果

二、加密参数解析 


1.headers的模块加密

        之前这个模块里面的参数有时候固定也可以,有时候不可以


X-Tingyun参数

        1、正常全部搜索 X-Tingyun参数,就会发现有两个出现这个参数的地方产生

        

        2、我们看见了把X-Tingyun赋值给wo这个值,我们大可先尝试搜索在目前的JS文件里面搜索看看,就可以看到该参数的加密啦,这个加密参数很简单

        

        

        3、简单一点的扣出来即可

        

X-Tif-Signature参数

        4、正常全部搜索X-Tif-Signature参数,就会发现有两个出现这个参数的地方产生(两个地方都打上断点,看看哪个断点就取消另外一个

                会发现headers其他那几个加密参数也在那边产生了

        

                        

        5、 往上滑一下,就会发现他是一个经典的webpack打包加密在里面

                

                这样就很好办啦,那就开始扣代码啦~

        

        6、先把webpack加载器找到,这个加密要用到加载器那边的一些方法,也顺便扣下来

                (webpack加载的包先全部扣下来,我补了好多的模块,模块的人麻不想补,加载了199个模块在里面---后续的参数加密都在里面)

        

        

        一共7万多行,到时候可以自己删除一些不需要的模块(或者网上有一些大佬开发的工具自动扣webpack模块,都可以实现的)

        

        7、会发现参数加密都在赋值在headers里面,我们可以自己在里面定义一个集合给他

        

        8、然后直接导出对应的模块,就可以看见加密的值就产生啦

        

X-Tif-Nonce参数

                        加密在上面已经完全返回

X-Tif-Timestamp参数

                        加密在上面已经完全返回

2. 请求参数加密


encData参数

        1、正常全部搜索encData参数,就会发现有好多出现这个参数的地方产生(可疑地方都打上断点,看看哪个断点就取消另外一个

        

        因为我们是知道encData是SM4加密在里面,所以我们可以直接打断点在SM4分支里面

          

         

        2、打住断点就点击一下下一页、就会发现断住在那边r.toUpperCase()

              

         

        3、就会看见只有几个值进行加密而已

        

        4、本阶段是在调试阶段,t直接先写死,就n参数需要扣一下函数 

                b函数里面有需要补一个e04e模块

                        var s = fff('e04e')

        是不是觉得很简单、既然这么简单,无法相信,然后 signData才是折磨人的,之前手动补模块,补了差不多百来个,还缺,人傻了

        然后我先把全部模块丢进去跑起来再说

        接下来让我们开始signData参数加密的分析把

signData参数

        5、正常全部搜索signDate参数,就会发现有好多出现这个参数的地方产生(可疑地方都打上断点,看看哪个断点就取消另外一个

        6、打住断点就点击一下下一页、就会发现断住在那边e.from(a, "hex").toString("base64")是返回正确的结果的

   

        7、其中主要关注 r 、d 这两个参数的加密,和o.doSignature、e.from函数就可以了

         就会发现r是请求头那边的一些参数破解而成

        d是一个定值

        

        8、跟栈回o.doSignature会跳转去一个g函数里面(在名字为“4d09”模块里面)

        

                         因为是webpack模块,可以直接导出"4d09"的模块、代码如下

                       

                 

        9、e.from函数一样是模块b639里面的一个方法

                因为进行了加密方法的导出,所以        var e = fff("b639").Buffer

10 、 简单测试一下,就可以看到加密函数了(每次都不相同在里面)

10、尝试发送一下请求包,没想到还真的成功了,没有检测环境那些

         但是发现返回的结果也是加密的

3.返回参数

encData

        1、有一次地方比较可疑、也出现了decrypt解密的字眼

        

        2.、里面没什么加密参数在里面啦,就t.data.data.encData 是需要解密的encData,其他的都是我们已经扣了模块啦

                u和c经过仿佛的测试,是一个定值

        3、 稍微改写了一下代码就很简单了

                

  

分析到这边就已经完美结束了。

4、运行成功案例

        

总结

        1、出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来.

        2、本人写作水平有限,如有讲解不到位或者讲解错误的地方,还请各位大佬在评论区多多指教,共同进步

        3、如果这篇文章对你有帮助,就点赞、关注、收藏、三连击一下

        4、本篇分享到这里就结束了,欢迎大家关注下期,我们不见不散☀️☀️😊
 

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值