Python 爬虫进阶必备 | 某财富个股历史数据加解密逻辑分析
共 1112字,需浏览 3分钟
·
2021-09-24 20:30
第一时间关注Python技术干货!
今日网站
aHR0cHM6Ly9ndWJhLmVhc3Rtb25leS5jb20vcmFuay9zdG9jaz9jb2RlPTYwMDAzMQ==
这个网站来自 NTrach 大佬
最近大家是不是放假综合征啊,好像一下对技术文章失去了兴趣。
抓包分析与加密定位
经过抓包,可以看到下面这三个包
主要返回的数据也存在这三个包里,这三个包返回的数据都是下面这样的形式
我们想要分析的是历史数据,所以返回的值是var rankHistory = xxxxx
既然要对这个返回值解密,那么逻辑里就要取到rankHistory
的值
所以直接检索rankHistory
关键词就可以了
接下来定位到文件中的位置,如下
打上断点,刷新一下验证一下我们的想法
可以看到在scriptData = eval(scriptData)
这行就已经可以看到明文了
所以往上就可以看到需要分析的函数是window.d(scriptData)
单步进去可以看到,具体的解密方法是下面这个
加密分析
上一部分我们定位到了解密的部分
通过下面这张图,可以大概知道这个解密的方法是 AES 解密
AES 的加解密有以下几个需要关注的地方
1、填充
2、加密模式
3、密钥
4、偏移量
知道上面几点就可以直接用加密库复现,不用一个个扣代码
现在我们根据上面几点在代码里找答案
前面两个,填充还有加密模式比较明显
1、填充 - Pkcs7
2、加密模式 - CBC
现在我们开始找密钥和偏移量
这时候就会有人说,上面那么明显的密钥和偏移量还找个啥啊?
经过分析之后其实这两个就是个摆设
还是要打上断点分析
其实打上断点,还是没办法断到位置
但是这里直接引用了两个变量名s
、i
直接在这个方法里面找定义的位置
可以看到下面两个定义的位置
这里的CJS
其实就是Crypto
加密库,这里的o
是window.CJS
所以这里还要搞明白o.M
是用到什么方法
通过验证,i
其实就是一个md5
经过Crypto.enc.Utf8.parse
的结果
既然这样的话,我们用代码复现一下,看是否能搞出结果
很完美,不要被代码忽悠就可以了。
昨天复现的时候一直没有给参数传值,导致一直报错,折腾了好久
附代码截图
我是没有更新就在摸鱼的咸鱼
以上就是今天的全部内容了
收到请回复~
我们下次再见。
对了,看完记得一键四连,这个对我真的很重要。