Python 爬虫进阶必备 | 某财富个股历史数据加解密逻辑分析

咸鱼学Python

共 1112字,需浏览 3分钟

 ·

2021-09-24 20:30

点击上方“咸鱼学Python”,选择“加为星标

第一时间关注Python技术干货!


图源:极简壁纸


今日网站

aHR0cHM6Ly9ndWJhLmVhc3Rtb25leS5jb20vcmFuay9zdG9jaz9jb2RlPTYwMDAzMQ==

这个网站来自 NTrach 大佬

最近大家是不是放假综合征啊,好像一下对技术文章失去了兴趣。

抓包分析与加密定位

经过抓包,可以看到下面这三个包

主要返回的数据也存在这三个包里,这三个包返回的数据都是下面这样的形式

我们想要分析的是历史数据,所以返回的值是var rankHistory = xxxxx

既然要对这个返回值解密,那么逻辑里就要取到rankHistory的值

所以直接检索rankHistory关键词就可以了

接下来定位到文件中的位置,如下

打上断点,刷新一下验证一下我们的想法

可以看到在scriptData = eval(scriptData)这行就已经可以看到明文了

所以往上就可以看到需要分析的函数是window.d(scriptData)

单步进去可以看到,具体的解密方法是下面这个

加密分析

上一部分我们定位到了解密的部分

通过下面这张图,可以大概知道这个解密的方法是 AES 解密

AES 的加解密有以下几个需要关注的地方

1、填充

2、加密模式

3、密钥

4、偏移量

知道上面几点就可以直接用加密库复现,不用一个个扣代码

现在我们根据上面几点在代码里找答案

前面两个,填充还有加密模式比较明显

1、填充 - Pkcs7

2、加密模式 - CBC

现在我们开始找密钥和偏移量

这时候就会有人说,上面那么明显的密钥和偏移量还找个啥啊?

经过分析之后其实这两个就是个摆设

还是要打上断点分析

其实打上断点,还是没办法断到位置

但是这里直接引用了两个变量名si

直接在这个方法里面找定义的位置

可以看到下面两个定义的位置

这里的CJS其实就是Crypto加密库,这里的owindow.CJS

所以这里还要搞明白o.M是用到什么方法

通过验证,i其实就是一个md5经过Crypto.enc.Utf8.parse的结果

既然这样的话,我们用代码复现一下,看是否能搞出结果

很完美,不要被代码忽悠就可以了。

昨天复现的时候一直没有给参数传值,导致一直报错,折腾了好久

附代码截图

我是没有更新就在摸鱼的咸鱼

以上就是今天的全部内容了

收到请回复~

我们下次再见。

对了,看完记得一键四连,这个对我真的很重要。

浏览 57
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报