Python 逆向抓取 APP 數據

2020-08-31 學習python的正確姿勢

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

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

所需設備和環境:


設備:安卓手機

抓包:

fiddler+xposed+JustTrustme

查殼:ApkScan-PKID

脫殼:frida-DEXDump

反編譯:jadx-gui

hook:frida


抓包


手機安裝app,設置好代理,打開 fiddler 先來抓個包,發現這個 app 做了證書驗證,fiddler 開啟之後 app提示連接不到伺服器:



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


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



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


脫殼反編譯


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



可以看到這個 app 使用了 360 加固,真是層層設限啊!!這裡使用frida-DEXDump來脫殼,可以到 github 上下載 frida-DEXDump 的原始碼,完成之後打開項目所在文件夾,在當前位置打開命令行運行以下命令:


python main.py


等待脫殼完成,可以看到當前項目中生成了一個對應文件夾,裡面有很多dex文件:



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



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


Frida Hook


Java不太熟,分析不來,直接使用 frida 來寫一段 hook 代碼看一看 encrypt 函數入參和出參的內容:



同時來抓包對比:



就得到了這裡的請求 data 入參數據:


pageIndex:當前頁碼

pageSize:當前頁對應的數據條數


typeId 和 source 是固定的, 接下來再來 hook decrypt 函數,對比抓包和 hook 結果:



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


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


請求


直接上代碼:



運行代碼,成功拿到數據:



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


最後,以上內容僅供學習交流,小帥b今天的分享希望能給你帶來一點幫助,那麼我們下回見,peace!


關注我

收穫更多騷操作

相關焦點

  • 大神教你用Python逆向抓取APP數據
    今天繼續給大夥分享一下 Python 爬蟲的教程,這次主要涉及到的是關於某 APP 的逆向分析並抓取數據,關於 APP 的反爬會麻煩一些,比如 Android 端的代碼寫完一般會進行打包並混淆加密加固,所以除了抓包之外,還需要對 APP 進行查殼脫殼反編譯等操作。
  • Python爬蟲入門,快速抓取大規模數據
    爬蟲的基本原理很簡單,遍歷網絡中網頁,抓取感興趣的數據內容。這篇文章會從零開始介紹如何編寫一個網絡爬蟲抓取數據,然後會一步步逐漸完善爬蟲的抓取功能。我們使用python 3.x作為我們的開發語言,有一點python的基礎就可以了。 首先我們還是從最基本的開始。工具安裝我們需要安裝python,python的requests和BeautifulSoup庫。
  • Python爬蟲入門,快速抓取大規模數據(第四部分)
    如果沒有讀過前兩部份的讀者,建議先看前面幾部份:Python爬蟲入門,快速抓取大規模數據Python爬蟲入門,快速抓取大規模數據(第二部分)Python爬蟲入門,快速抓取大規模數據(第三部分)當前大部分網站都使用JS動態的加載內容,瀏覽器執行JS並生成網頁內容。
  • 夜神模擬器模擬安卓APP+Fiddler數據抓取
    現在對app數據的抓取越來越急迫了,需要對app訪問數據接口進行抓取。採用夜神模擬器+Fiddler的方式可以方便的對app訪問接口進行抓取。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    網絡爬蟲,也叫作網絡數據採集,是指通過編程從Web伺服器請求數據(HTML表單),然後解析HTML以提取所需的數據。2、為什麼要懂HTMLHTML是一種用於創建網頁的標記語言,該網頁嵌入了諸如文本和圖像之類的數據,這些數據可以被瀏覽器讀取並呈現為我們看到的網頁。這就是為什麼我們首先爬網HTML,然後解析數據的原因,因為數據隱藏在HTML中。
  • 第一次接觸,嘗試用python抓取國外4k高清圖像數據,真方便
    計劃了很久,終於還是利用在家的幾個月時間,開始學習python編程。 作為一個學霸,我更願意在實踐中學習,實踐出來的效果給我更多的信心和樂趣,於是,我花了大約一個月的時間,看了一本Python入門的相關教程,可能還是有點枯燥,所以我借鑑我老哥之前寫的用python爬取國外4K高清圖像數據的教程,重新實踐了一邊。
  • python + appium + 模擬器 搭建app自動點擊系統
    摘要本文主要介紹犀光科技app自動控制系統的搭建,利用python腳本驅動appium從而控制模擬器中app的行為。基本關係圖環境搭建一、python3 安裝直接登錄Python官網[https://www.python.org],下載最新版本即可。
  • 犀光科技I基於scrapy-redis和anyproxy抓取app內容.md
    摘要本文主要介紹一下犀光科技, 抓取系統中的數據採集模塊中的app採集部分,是基於scrapy-redis和anyproxy來實現的.這裡只介紹比較簡單的一種場景:只要二次下載就可以抓取想要的內容,一次是下載列表頁,另一次是下次詳情頁.
  • 小學生在網吧用python抓取LOL英雄皮膚,步驟簡單,附帶所有源碼
    你也許或一定玩過LOL英雄聯盟,但你一定沒有嘗試過用Python抓取LOL的各種英雄皮膚。隨著python在中小教育中的普及,就連小學生也開始能用python抓取LOL英雄皮膚了,不得不說,這以後買皮膚剩下的錢,都可以輕輕鬆鬆談場初戀了!
  • 新手教程 如何使用Burpsuite抓取手機APP的HTTPS數據
    * 本文原創作者:smartdone,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載1.所需條件· 手機已經獲取root權限· 手機已經成功安裝xposed框架· 電腦一臺2.詳細步驟2.1 在手機上面安裝xposed JustTrustMeJustTrustMe是一個去掉https證書校驗的xposed hook插件,去掉之後就可以抓取做了證書校驗的
  • 三網運營商大數據 網站訪客手機號實時抓取是真的嗎?
    您對python、web爬蟲和數據爬行有一定的了解。小夥伴應該知道Python網絡爬蟲可以抓取網站和網頁的數據信息。通常,您可以設置您感興趣的內容並讓python網絡爬蟲爬行。
  • 手把手教你python爬數據
    Python發展接近三十年,確實已經成為了程式語言中的「網紅」,因為python這個技能能夠讓你在就業市場拿到很不錯的offer。而且現在你觀察一下懂爬蟲、學習爬蟲的人也是越來越多了。例如:房屋APP抓取一些房子租售信息,分析房價變化趨勢;抓取高回報用戶的一些行為,對股票市場進行分析和預測;抓取商品的信息,比較價格……
  • 用Python進行Web爬取數據
    實現此目的最有效,最簡單的方法之一就是通過網頁抓取。我個人發現網絡抓取是一種非常有用的技術,可以從多個網站收集數據。如今,某些網站還為你可能希望使用的許多不同類型的數據提供API,例如Tweets或LinkedIn帖子。
  • 用Python進行Web爬取數據
    實現此目的最有效,最簡單的方法之一就是通過網頁抓取。我個人發現網絡抓取是一種非常有用的技術,可以從多個網站收集數據。如今,某些網站還為你可能希望使用的許多不同類型的數據提供API,例如Tweets或LinkedIn帖子。但是有時你可能需要從不提供特定API的網站收集數據。這就是web抓取能力派上用場的地方。
  • 難道python才可以做數據抓取?今天就使用Java實現疫情數據抓取
    相信很多人像我一樣每天醒來就會看看疫情的數據,身為軟體工程專業的一員,也要充分發揮專業能力,為疫情做點什麼。設計思路使用爬蟲爬取網站中的數據並存入資料庫使用java做後端將資料庫的內容傳送到前端前端使用echarts框架對數據進行可視化技術棧開發語言Java開發工具Idea資料庫MySQL使用的第三方庫Jsoup:數據抓取gson:JSON轉換jQuery:ajax請求、DOM操作Echarts: 地圖可視化功能概述數據抓取和持久化項目抓取匯總數據及持久化抓取疫情地圖數據及持久化抓取動態播報數據及持久化疫情數據可視化項目疫情匯總數據可視化疫情地圖可視化省市詳情數據可視化動態播放可視化項目截圖
  • python爬蟲自學日記:如何使用Post抓取網頁內容
    如何使用Post抓取網頁內容一.序言本文主要是用來學習python裡面的爬蟲Post用法。他和get還是有點區別的。以下是視頻連結,主要內容將圍繞這個來。而裡面的數據則是信紙要填寫的內容。三.在網頁與python中顯示網頁裡主要如上面這樣顯示。在python中,url用來寫網址,而post需要傳遞的信息則在payload裡填寫,具體如上。
  • Python新手爬蟲,簡單製作抓取廖雪峰的教程的小爬蟲
    先看幾張對比圖,分別是官網截圖和抓取下來的 txt文檔的截圖,不算那難看的排版的話,內容是一致的,圖片用 url替換了!在整個抓取過程中,除了普通的文本以外,還需要處理 3個地方,分別是:代碼、圖片、視頻,因為目前只寫到了文本文件,所以直接抓到圖片或者視頻的地址,標識清楚後寫入到 txt,這裡可以在進一步,寫到 word/pdf 或者其他文件,留待以後改進!
  • python學習之路(18):基於python網絡爬蟲抓取微信公眾號的文章「1」
    在這篇文章中,我們講到mysql的用法,所以我們這次把抓取到的數據存到資料庫裡去。以前學過的知識也不能忘,我們要把以前學過的東西都運用到現在的學習中去,這能讓我們複習舊知識,把知識點掌握的更牢固。微信文章抓取的地址為:這是搜狗微信搜索的頁面,裡面的文章每隔幾個小時會更新一次。所以在這裡來抓取文章是很全面的。
  • python學習之路(20):基於python網絡爬蟲抓取微信公眾號的文章「3」
    並且每個分類都獲取前5頁的文章,這個頁數可以自己定義,然後把抓取的到文章存到MYSQL資料庫。然後在把21個微信文章的分類存為一個python列表:執行SQL語句,順便把上面的%號,替換成抓取到的數據。
  • 大神手把手教你使用Python抓取並儲存網頁數據
    爬蟲是Python的一個重要的應用,使用Python爬蟲我們可以輕鬆的從網際網路中抓取我們想要的數據現在我們用代碼講解如何從解析完的頁面中提取B站熱榜的數據,首先我們需要找到存儲數據的標籤,在榜單頁面按下F12並按照下圖指示找到