自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 逆向抓取 APP 數(shù)據(jù)

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

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

[[339072]]

接下來由「小帥b的朋友:Houser」 給大家演示一下,如何逆向抓取 APP 數(shù)據(jù),給你參考一下思路:

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

  • 設(shè)備:安卓手機(jī)
  • 抓包:
  • fiddler+xposed+JustTrustme
  • 查殼:ApkScan-PKID
  • 脫殼:frida-DEXDump
  • 反編譯:jadx-gui
  • hook:frida

抓包

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

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

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

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

脫殼反編譯

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

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

  1. python main.py 

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

 

Python 逆向抓取 APP 數(shù)據(jù)

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

 

Python 逆向抓取 APP 數(shù)據(jù)

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

Frida Hook

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

 

Python 逆向抓取 APP 數(shù)據(jù)

同時來抓包對比:

 

Python 逆向抓取 APP 數(shù)據(jù)

 

Python 逆向抓取 APP 數(shù)據(jù)

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

  • pageIndex:當(dāng)前頁碼
  • pageSize:當(dāng)前頁對應(yīng)的數(shù)據(jù)條數(shù)

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

 

Python 逆向抓取 APP 數(shù)據(jù)

 

Python 逆向抓取 APP 數(shù)據(jù)

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

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

請求

直接上代碼:

 

Python 逆向抓取 APP 數(shù)據(jù)

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

 

Python 逆向抓取 APP 數(shù)據(jù)

ok,以上就是逆向 app 爬蟲的全部內(nèi)容,可以看到,現(xiàn)在數(shù)據(jù)加密已經(jīng)很普遍了,隨便一個很小的 app 都有好幾道數(shù)據(jù)保護(hù)機(jī)制,這次只涉及到 java 層的加密,下次來講講 native 層加密的 hook 方法、frida-rpc 主動調(diào)用以及逆向神器 inspeckage 的應(yīng)用。

最后,以上內(nèi)容僅供學(xué)習(xí)交流,小帥b今天的分享希望能給你帶來一點(diǎn)幫助,那么我們下回見,peace!

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2015-01-09 16:32:25

2021-12-13 10:31:28

抖音AppPython

2021-01-14 18:03:31

Python抖音app數(shù)據(jù)

2016-10-24 14:53:30

Android app使用技巧

2021-05-21 12:52:47

網(wǎng)絡(luò)安全Android App虛擬機(jī)

2024-04-30 09:33:00

JavaScriptPythonexecjs

2025-01-13 08:20:00

Python數(shù)據(jù)抓取

2023-01-28 08:00:00

PythonHTML表格數(shù)據(jù)

2017-01-20 08:44:53

Apache Flum抓取數(shù)據(jù)

2023-11-27 08:51:46

PythonRequests庫

2013-04-24 14:23:58

信息泄露個人隱私

2010-03-09 15:48:06

Python抓取

2019-06-18 10:49:41

Python技術(shù)web

2014-03-31 10:51:40

pythonasyncio

2016-10-14 13:10:35

2022-04-06 09:02:58

JS反編譯App

2017-05-08 15:47:06

2020-10-12 08:19:43

Python爬蟲網(wǎng)頁數(shù)據(jù)

2017-02-24 11:00:57

iOS抓取HTML解析數(shù)據(jù)

2012-07-17 09:13:14

Scrapy
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號