Python 爬蟲進階必備 | 某財富個股歷史數(shù)據(jù)加解密邏輯分析
第一時間關(guān)注Python技術(shù)干貨!

今日網(wǎng)站
aHR0cHM6Ly9ndWJhLmVhc3Rtb25leS5jb20vcmFuay9zdG9jaz9jb2RlPTYwMDAzMQ==
這個網(wǎng)站來自 NTrach 大佬

最近大家是不是放假綜合征啊,好像一下對技術(shù)文章失去了興趣。
抓包分析與加密定位
經(jīng)過抓包,可以看到下面這三個包

主要返回的數(shù)據(jù)也存在這三個包里,這三個包返回的數(shù)據(jù)都是下面這樣的形式

我們想要分析的是歷史數(shù)據(jù),所以返回的值是var rankHistory = xxxxx
既然要對這個返回值解密,那么邏輯里就要取到rankHistory的值
所以直接檢索rankHistory關(guān)鍵詞就可以了

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

打上斷點,刷新一下驗證一下我們的想法


可以看到在scriptData = eval(scriptData)這行就已經(jīng)可以看到明文了
所以往上就可以看到需要分析的函數(shù)是window.d(scriptData)
單步進去可以看到,具體的解密方法是下面這個

加密分析
上一部分我們定位到了解密的部分
通過下面這張圖,可以大概知道這個解密的方法是 AES 解密

AES 的加解密有以下幾個需要關(guān)注的地方
1、填充
2、加密模式
3、密鑰
4、偏移量
知道上面幾點就可以直接用加密庫復(fù)現(xiàn),不用一個個扣代碼
現(xiàn)在我們根據(jù)上面幾點在代碼里找答案
前面兩個,填充還有加密模式比較明顯
1、填充 - Pkcs7
2、加密模式 - CBC
現(xiàn)在我們開始找密鑰和偏移量
這時候就會有人說,上面那么明顯的密鑰和偏移量還找個啥啊?
經(jīng)過分析之后其實這兩個就是個擺設(shè)

還是要打上斷點分析
其實打上斷點,還是沒辦法斷到位置

但是這里直接引用了兩個變量名s、i
直接在這個方法里面找定義的位置
可以看到下面兩個定義的位置


這里的CJS其實就是Crypto加密庫,這里的o是window.CJS

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

通過驗證,i其實就是一個md5經(jīng)過Crypto.enc.Utf8.parse的結(jié)果
既然這樣的話,我們用代碼復(fù)現(xiàn)一下,看是否能搞出結(jié)果

很完美,不要被代碼忽悠就可以了。
昨天復(fù)現(xiàn)的時候一直沒有給參數(shù)傳值,導(dǎo)致一直報錯,折騰了好久

附代碼截圖

我是沒有更新就在摸魚的咸魚
以上就是今天的全部內(nèi)容了
收到請回復(fù)~
我們下次再見。
對了,看完記得一鍵四連,這個對我真的很重要。
