程序员

某项目前端js抓包解密

2022-02-20  本文已影响0人  白鹭鹭鹭

前言
1、做某项目测试的时候,大家都知道肯定上来就抓包,接着就是一脸懵逼,发现数据包全部都是加密的,那咋办啊肯定下一个啊。

一、js调试
1、进入正题啊,我这里抓的是发送短信接口的数据包,从数据包中可以看到总共有5个参数,分别为bizData、encryptKey、timestamp、signature、Key,5个参数,通过参数应该能猜到bizData参数就是主要加密的内容、我们要看的明文应该就在里面,然后两个key我们先不管,timestamp参数一看就知道是时间戳了,那signature参数看名字应该是签名的意思。

2、接着我们打开开发者工具,然后打开全局搜索,搜索bizData参数,感觉第一个应该是。

image

3、然后大概看了一下,n应该就是加密以后的结果,再追踪一下n,发现通过上面生成的,接着在该处设置断点

4、然后就一直下一步看他怎么生成的,中间跳的步骤就省略了,直接找到关键代码处,代码中直接就显示e应该就是加密前的明文,接着看上面有个AES,猜测应该就是AES加密、再看下面$e.key = t,感觉t应该就是秘钥了。

5、果然在下面对t有定义,加密方式就是AES,接着e就是加密前的明文,那t应该就是秘钥了,然后再看下面iv偏移量是Be,但是Be怎么生成的在上面有定义 Be = Ie.a.enc.Utf8.parse('1234567812345678'),那Be就是1234567812345678了应该是固定的,模式下面也写着是CBC,那所有条件都找到了。

6、我们找一个有AES加密解密网站,填入秘钥和iv偏移量,成功解密出数据,接着修改明文里面的参数再加密,发现报错了、那应该还有个signature签名需要解密。

二、签名解密
1、同样操作,直接全局搜signature签名,找到该处发现s应该是生成签名的地方,然后在s处设置断点,看代码好像是SHA256加密的,那a就是加密前的数据了。

2、然后一直下一步,发现加密前的a出来了,其实仔细看一下应该能发现a是有规律的,是通过encryptKey+signMethod+timestamp+bizData+salt拼接的,看代码 a += r[e]就是生成的过程。

3、然后找到SHA256网站加密一下,发现结果是对的,接着写脚本就完事了。师傅们小弟刚学,多给点建议啊。

上一篇下一篇

猜你喜欢

热点阅读