大神教你用Python逆向抓取APP數據

2020-10-10 程式設計師小鵬

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

接下來由小編給大家演示一下,如何逆向抓取 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 函數入參和出參的內容:

碼字不易廢話兩句:有需要學習資料的或者有技術問題交流可以私信小編「01」



同時來抓包對比:




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

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

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




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

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

請求

直接上代碼:



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



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


最後,以上內容僅供學習交流,小編本身就是一名python開發工程師,我自己花了三天時間整理了一套python學習教程,從最基礎的python腳本到web開發,爬蟲,數據分析,數據可視化,機器學習,等,這些資料有想要的小夥伴可關注小編,並在後臺私信小編:" 01 " 即可領取

相關焦點

  • Python 逆向抓取 APP 數據
    接下來由「小帥b的朋友:Houser」 給大家演示一下,如何逆向抓取 APP 數據,給你參考一下思路:所需設備和環境:設備:安卓手機抓包:fiddler+xposed+JustTrustme查殼:ApkScan-PKID脫殼:frida-DEXDump
  • 福利:大佬教你如何用 Python 自動化玩轉 Excel
    excel已經成為必不可少的數據處理軟體,幾乎天天在用。程式設計師大佬,教你如何用程式設計師大佬,教你如何用程式設計師大佬,教你如何用和excel之間的童鞋,讓你更輕鬆地分析數據!
  • 怎麼學習python,一個月入門,教你成為python大神
    這裡我給大家推薦一個免費的商業數據分析入門訓練營。通過5天的學習,讓你接觸真正的數據分析思維與方法,體驗2大主流數據工具,體驗用數據分析解決商業問題。體驗之後你就知道自己是不是真的適合數據分析了。點擊下面的連結就可以免費獲得~騰訊大數據專家,帶你實戰數據分析1、【why】 你為什麼要學習python?爬蟲?數據分析?機器學習?又或者其它?在找一本python教程準備啃之前,一定要問問自己,我為什麼要學習python?
  • 大神手把手教你使用Python抓取並儲存網頁數據
    如果你還在入門爬蟲階段或者不清楚爬蟲的具體工作流程,那麼應該仔細閱讀本文!現在我們用代碼講解如何從解析完的頁面中提取B站熱榜的數據,首先我們需要找到存儲數據的標籤,在榜單頁面按下F12並按照下圖指示找到
  • 大神用Python破解了壓縮文件zip密碼,省了250塊錢
    那天晚上,某大神和你一樣在某個小網站上搜尋某些私密的學習資料,突然看到論壇有人提供了一個非常牛逼的資源,某大神懷著激動的心情下載了下來:褲子都脫了,你給我看這個?大神了,自己用Python 來把密碼給破解了應該不難吧?
  • 手把手教你python爬數據
    Python發展接近三十年,確實已經成為了程式語言中的「網紅」,因為python這個技能能夠讓你在就業市場拿到很不錯的offer。而且現在你觀察一下懂爬蟲、學習爬蟲的人也是越來越多了。培訓誠築說小編今天詳細地給大家分享一些有關的內容,拿出小本本趕快記下來吧~python爬蟲的步驟大致包括:發送請求—獲取網頁—解析網頁(提取數據)—存儲數據。
  • 手把手教你安裝python編輯器pycharm
    小白:小灰,我最近發現python的功能真的好強大,我也想自己慢慢學學了。小灰:好的呀,我來慢慢教你。python真的是很好用,簡單又強大。人工智慧,數據處理,爬蟲都要用python的。手把手教你批量存儲高清圖片小白:是嘛是嘛,我也忍不住要看看了。
  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • python能否開發安卓應用app?當然可以,python助你輕鬆搞定
    python是非常簡單方便的程式語言,你可以用python很簡潔的實現很多功能,今天就來說說如何用python開發安卓應用app。 app的開發有兩種方式: 第一種,混合開發。
  • 手把手教你用python搶京東大額神券
    ,等著倒計時慢慢臨近,期待搶到自己喜愛的優惠券,然而最終得到的往往是「券已搶完」為了彌補手速的缺憾,今天我教大家如何用python搶優惠券,讓你的「手速」提高數十倍。從原網頁獲取key值,這種方法只能用selenium操控瀏覽器獲得key值。
  • 教你學習:Python-100-Days-01
    教你學習:Python-100-Days-01 本項目是參考項目內容,進行個人理解,和原有項目有出入,如想了解詳情,請自行百度去搜索項目為什麼用Python?python是腳本語言,學習簡單。包含很多環境的數學包,可以簡化我們的開發,方便我們數學計算。未來是數據的時代,java和python是必須要會的語言,是人工智慧和大數據的基礎。
  • 教你用Python入門年薪百萬的數據AI行業
    現在這個科技日新月異的變革時代,做大數據和機器學習項目相關的內容,可以獲取更大的個人價值,比如年薪百萬。以下就是介紹一系列python技能能在其中發揮巨大價值的領域,以及如何快速切入該領域,從入門到實踐,體現自己最大價值,年薪百萬。
  • 10行代碼教你用python鑑黃
    大家好,今天我們來教大家用python識別黃色圖片,識別黃色圖片的算法有很多,今天來講一個最簡單的算法好了,原理很簡單,那我們來編寫代碼試試實戰需要安裝python圖片庫PIL支持,PIL是Python的圖像處理標準庫,支持多種格式,並提供強大的圖形與圖像處理功能。
  • 手把手教你用 Flask, Docker 和 Kubernetes 部署Python機器學習...
    我們可以很容易地加載一個 pickled SciKit Learn 或 Keras 模型,並將數據傳遞給 approproate predict 方法,以 JSON 的形式返回特性數據的分數。用 Dockerfile 定義 Docker 映像Dockerfile 本質上是 Docker 使用的配置文件,它允許你在操作時定義 Docker 容器的內容並配置其操作。
  • Python大佬手把手教你用開源【搶茅臺腳本】實現搶茅臺
    # lxml 下載地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 如此你的運行環境就搭建好了。 2.
  • 還在煩惱用python在同一圖裡畫多數據曲線嗎?教你6種姿勢搞定
    概要:python的matplotlib作圖很強大,本文教你用6種不同方式解決將多種數據曲線畫到一起。問題:今天,老闆又要一個數據報表,小明選擇用 python來實現。「用matplotlib用來可視化。並且必須用不同顏色標誌每個數據曲線,曲線這些顏色也應該在Python裡自動選擇。」
  • 人工智慧入門:用python教你實現手寫數字識別!
    今天我給大家帶來一個用機器學習的方法來實現手寫數字識別的教程,就像C語言中輸出的那一行「Hellow World」一樣,這個教程也是入門圖像識別中需要學會的第一個技能,我們將會使用tensorflow深度學習框架來實現手寫數字識別,在觀看此教程之前你需具備以下基礎:python基本語法神經網絡基礎知識tensorflow框架的基本使用線性代數基本知識如果你不具備以上基礎怎麼辦?
  • 荒野行動榴彈怎麼用 大神手把手教你發射榴彈
    :原標題:荒野行動榴彈怎麼用 大神手把手教你發射榴彈 荒野行動榴彈發射器怎麼用,相信還有不少玩家並不清楚榴彈發射器到底如何使用呢,下面就一起快來看看吧。是裝在槍管下方的,可以配合m27和m16a4步槍使用的,玩家給槍械裝了這個配 :原標題:荒野行動榴彈怎麼用
  • 教你學python-15-hiveUdf 的多種實現
    教你學python-15-hiveUdf 的多種實現我們先來了解一下什麼是hive和什麼是UDFHive:是建立在hadoop上的數據倉庫基礎架構,類似一種SQL解析引擎,它將SQL語句轉成MapReduce,然後再Hadoop上執行。
  • 如何用 Python 寫一個安卓 APP ?
    github上,大家一起用嘛,開源才是王道,哈哈。  python -m pip install --upgrade pip wheel setuptools  然後是安裝所需要的依賴  python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew \kivy.deps.gstreamer --extra-index-url