濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 如何使用Python逆向抓取APP數(shù)據(jù)

如何使用Python逆向抓取APP數(shù)據(jù)

熱門標(biāo)簽:400電話辦理哪種 手機(jī)網(wǎng)頁(yè)嵌入地圖標(biāo)注位置 開封語音外呼系統(tǒng)代理商 地圖標(biāo)注線上如何操作 電銷機(jī)器人的風(fēng)險(xiǎn) 河北防封卡電銷卡 開封自動(dòng)外呼系統(tǒng)怎么收費(fèi) 應(yīng)電話機(jī)器人打電話違法嗎 天津電話機(jī)器人公司

今天給大伙分享一下 Python 爬蟲的教程,這次主要涉及到的是關(guān)于某 APP 的逆向分析并抓取數(shù)據(jù),關(guān)于 APP 的反爬會(huì)麻煩一些,比如 Android 端的代碼寫完一般會(huì)進(jìn)行打包并混淆加密加固,所以除了抓包之外,還需要對(duì) APP 進(jìn)行查殼脫殼反編譯等操作。

所需設(shè)備和環(huán)境:

設(shè)備:安卓手機(jī)

抓包:

fiddler+xposed+JustTrustme

查殼:ApkScan-PKID

脫殼:frida-DEXDump

反編譯:jadx-gui

hook:frida

抓包

手機(jī)安裝app,設(shè)置好代理,打開 fiddler 先來抓個(gè)包,發(fā)現(xiàn)這個(gè) app 做了證書驗(yàn)證,fiddler 開啟之后  app提示連接不到服務(wù)器:

那就是 app 做了 SSL pinning 證書驗(yàn)證,解決這種問題一般都是安裝 xposed 框架,里面有一個(gè) JustTrustme 模塊,它的原理就是hook,直接繞過證書驗(yàn)證類,安裝方法大家百度吧。

之后再打開app,可以看到成功抓到了包:

先簡(jiǎn)單分析一下,可以看到請(qǐng)求體中 formdata 是密文,響應(yīng)內(nèi)容也是密文,這個(gè)請(qǐng)求和響應(yīng)中有用信息非常少,甚至都不知道在 jadx-gui 里怎么搜索,請(qǐng)求體中 formdata 是以兩個(gè)等號(hào)結(jié)尾的,應(yīng)該是個(gè) base64 編碼,其他一概不知。。。

脫殼反編譯

那先來反編譯,在這之前,通常是先用查殼工具檢查一下 app 是否加固,打開 ApkScan-PKID ,把 app

可以看到這個(gè) app 使用了 360 加固,真是層層設(shè)限?。。∵@里使用frida-DEXDump來脫殼,可以到 github 上下載 frida-DEXDump 的源代碼,完成之后打開項(xiàng)目所在文件夾,在當(dāng)前位置打開命令行運(yùn)行以下命令:

python main.py

等待脫殼完成,可以看到當(dāng)前項(xiàng)目中生成了一個(gè)對(duì)應(yīng)文件夾,里面有很多dex文

下面用 jadx-gui 打開 dex 文件,一般先從最大的文件開始依次搜索關(guān)鍵字,我們知道 java 中使用 base64 是有 BASE64Encoder 關(guān)鍵字的,因?yàn)樽グ玫降男畔⒎浅I?,在這里就只能搜索這個(gè)關(guān)鍵字了,搜到第四個(gè)dex中,得到了疑似加密處:

可以看到是使用了一個(gè) aes 加密,密鑰是固定的字符串。

Frida Hoo

Java不太熟,分析不來,直接使用 frida 來寫一段 hook 代碼看一看 encrypt 函數(shù)入?yún)⒑统鰠⒌膬?nèi)容:

同時(shí)來抓包對(duì)比:

就得到了這里的請(qǐng)求 data 入?yún)?shù)據(jù):

pageIndex:當(dāng)前頁(yè)碼

pageSize:當(dāng)前頁(yè)對(duì)應(yīng)的數(shù)據(jù)條數(shù)

typeId 和 source 是固定的, 接下來再來 hook decrypt 函數(shù),對(duì)比抓包和 hook 結(jié)果:

結(jié)果是一樣的,至此,我們逆向分析就完成了。

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

請(qǐng)求

直接上代碼:

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

到此這篇關(guān)于如何使用Python逆向抓取APP數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python逆向抓取APP數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python爬蟲抓取手機(jī)APP的傳輸數(shù)據(jù)

標(biāo)簽:江蘇 六盤水 山東 常州 駐馬店 宿遷 成都 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何使用Python逆向抓取APP數(shù)據(jù)》,本文關(guān)鍵詞  如何,使用,Python,逆向,抓取,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何使用Python逆向抓取APP數(shù)據(jù)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于如何使用Python逆向抓取APP數(shù)據(jù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    刚察县| 江永县| 公安县| 南平市| 商南县| 蛟河市| 扎鲁特旗| 太原市| 容城县| 苏州市| 会同县| 南安市| 澄城县| 道真| 寿光市| 离岛区| 大庆市| 渝中区| 石狮市| 治多县| 保德县| 都匀市| 金坛市| 汤阴县| 汝阳县| 花莲县| 南投市| 吉林省| 锦屏县| 吉木乃县| 化隆| 富源县| 普洱| 攀枝花市| 乐至县| 育儿| 乌兰县| 宾阳县| 临猗县| 肇州县| 新蔡县|