如何使用Python逆向抓取APP數(shù)據(jù)
今天給大伙分享一下 Python 爬蟲的教程,這次主要涉及到的是關(guān)于某 APP 的逆向分析并抓取數(shù)據(jù),關(guān)于 APP 的反爬會麻煩一些,比如 Android 端的代碼寫完一般會進行打包并混淆加密加固,所以除了抓包之外,還需要對 APP 進行查殼脫殼反編譯等操作。
所需設備和環(huán)境:
設備:安卓手機
抓包:
fiddler+xposed+JustTrustme
查殼:ApkScan-PKID
脫殼:frida-DEXDump
反編譯:jadx-gui
hook:frida
抓包
手機安裝app,設置好代理,打開 fiddler 先來抓個包,發(fā)現(xiàn)這個 app 做了證書驗證,fiddler 開啟之后 app提示連接不到服務器:

那就是 app 做了 SSL pinning 證書驗證,解決這種問題一般都是安裝 xposed 框架,里面有一個 JustTrustme 模塊,它的原理就是hook,直接繞過證書驗證類,安裝方法大家百度吧。
之后再打開app,可以看到成功抓到了包:

先簡單分析一下,可以看到請求體中 formdata 是密文,響應內(nèi)容也是密文,這個請求和響應中有用信息非常少,甚至都不知道在 jadx-gui 里怎么搜索,請求體中 formdata 是以兩個等號結(jié)尾的,應該是個 base64 編碼,其他一概不知。。。
脫殼反編譯
那先來反編譯,在這之前,通常是先用查殼工具檢查一下 app 是否加固,打開 ApkScan-PKID ,把 app
可以看到這個 app 使用了 360 加固,真是層層設限?。?!這里使用frida-DEXDump來脫殼,可以到 github 上下載 frida-DEXDump 的源代碼,完成之后打開項目所在文件夾,在當前位置打開命令行運行以下命令:
python main.py
等待脫殼完成,可以看到當前項目中生成了一個對應文件夾,里面有很多dex文

下面用 jadx-gui 打開 dex 文件,一般先從最大的文件開始依次搜索關(guān)鍵字,我們知道 java 中使用 base64 是有 BASE64Encoder 關(guān)鍵字的,因為抓包得到的信息非常少,在這里就只能搜索這個關(guān)鍵字了,搜到第四個dex中,得到了疑似加密處:

可以看到是使用了一個 aes 加密,密鑰是固定的字符串。
Frida Hoo
Java不太熟,分析不來,直接使用 frida 來寫一段 hook 代碼看一看 encrypt 函數(shù)入?yún)⒑统鰠⒌膬?nèi)容:

同時來抓包對比:


就得到了這里的請求 data 入?yún)?shù)據(jù):
pageIndex:當前頁碼
pageSize:當前頁對應的數(shù)據(jù)條數(shù)
typeId 和 source 是固定的, 接下來再來 hook decrypt 函數(shù),對比抓包和 hook 結(jié)果:


結(jié)果是一樣的,至此,我們逆向分析就完成了。
總結(jié)一下請求和響應過程,就是請求體中的 data 經(jīng)過 encrypt 函數(shù)加密傳參,改變 pageIndex 就可以得到每頁數(shù)據(jù),響應是經(jīng)過 decrypt 函數(shù)加密顯示,那我們只需要在 python 中實現(xiàn)這個 aes 加密解密過程就行了,從反編譯的 java 代碼中可以看出密鑰是固定的:wxtdefgabcdawn12,沒有 iv 偏移。
請求
直接上代碼:

運行代碼,成功拿到數(shù)據(jù):

到此這篇關(guān)于如何使用Python逆向抓取APP數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python逆向抓取APP數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm配置SSH遠程連接服務器詳細步驟(0基礎詳細版)
PyCharm是一款流行的Python集成開發(fā)環(huán)境(IDE),提供了遠程連接云服務器的功能,使得開發(fā)者可以更加便捷地進行遠程開發(fā)和調(diào)試,這篇文章主要給大家介紹了關(guān)于pycharm配置SSH遠程連接服務器的詳細步驟,需要的朋友可以參考下2024-07-07
控制Python浮點數(shù)輸出位數(shù)的操作方法
在python的輸出結(jié)果中,尤其是浮點數(shù)的輸出,當我們需要寫入文本文件時,最好是采用統(tǒng)一的輸出格式,這樣也能夠增強結(jié)果的可讀性,這篇文章主要介紹了控制Python浮點數(shù)輸出位數(shù)的方法,需要的朋友可以參考下2022-04-04
python 判斷l(xiāng)inux進程,并殺死進程的實現(xiàn)方法
今天小編就為大家分享一篇python 判斷l(xiāng)inux進程,并殺死進程的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
pycharm設置當前工作目錄的操作(working directory)
今天小編就為大家分享一篇pycharm設置當前工作目錄的操作(working directory),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
nlp自然語言處理學習CBOW模型類實現(xiàn)示例解析
這篇文章主要為大家介紹了nlp自然語言處理學習CBOW模型類實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-04-04

