webpack+国密SM2逆向

逆向目标:aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuL25hdGlvbmFsSGFsbFN0LyMvc2VydmljZS1jYXRhbG9n

 若有侵权,联系删除,本文档只是交流学习,任何问题与作者无关!

1.目标数据 

国密算法是我国自主研发的算法,先简单介绍一下

事实上从 2010 年开始,我国国家密码管理局就已经开始陆续发布了一系列国产加密算法,这其中就包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖冲之加密算法)等,SM 代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。SM1SM7的算法不公开,其余算法都已成为ISO/IEC 国际标准。

在这些国产加密算法中,SM2、SM3、SM4 三种加密算法是比较常见的,在爬取部分网站时,也可能会遇到这些算法,所以作为爬虫工程师是有必要了解一下这些算法的

本次逆向的网站就使用了SM2加密

 2.抓包分析

 发现响应数据是加密的,加密方式也写的很清楚,国密SM加密

发现载荷部分,也进行了加密,也是SM算法

 请求头部分:

也进行了加密,这个网站可谓是多重加密,好,我们现在来看看逆向部分

3.逆向开始

对于请求头的逆向我们可以直接搜索关键词,也可以进行hook,但是这个网站直接搜关键词方便一些

断点,直接就能断住

请求头的逆向还是比较简单的

s是一个魔改的时间戳,直接扣下来就可以了

看看h,h是一个函数生成的结果,但是没传入任何值,所以是个随机的,扣下来即可

到现在nonce和timestamp已经完成逆向了,再看看signature,他是一个sha256对s+h+s加密的结果

直接调用标准库即可

 请求头就只剩下一个X-Tingyun,直接全局搜索

也是直接扣下来即可

到现在,我们就可以用JS复现请求头的加密

 生成结果如下:

 3.载荷部分

载荷部分加密就在请求头加密的下面

 t传入了一个object对象,但加密的只是t.data的部分

当中有m p v 三个函数,作用是对数据序列化和拼接,直接扣下来就行了

在加密部分,有个d

 这可能是加密的key,我们现在看看是怎么生成的

往上看看

 发现d是一个明文数据,那么怎么转变到的加密数据的呢?

往下执行下一步函数试试

发现是在这里变成加密数据的

看看这个e.form是什么

 

发现这个e是一个自执行函数,e是传递的参数

很明显,这是一个webpack,找到加载器n

找到加载器之后,使用加载器调用b639这个函数就可以了

这个加密函数o也是一个加载器加载的函数,但是也是标准算法,可以直接调用JS的加密算法

也可以直接把webpack扣下来

有一点需要注意,在加载器中加载代码,可能有一些页面逻辑或者环境检测

例如:

需要删除

最后几行看到有个函数运行是加载器或者内部调了加载器,就把他删掉不然影响我们逆向

 解密函数同理,调用webpack的sm或者标准库的sm解密都可以实现

4.逆向完成,发送请求

 请求成功,完结撒花

5.作者

如果有问题或者需要爬虫需求,都可以联系作者,欢迎咨询

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值