android 移動網絡實時抓包


2G、3G環境,那就必須root進去tcpdump 方式抓。

 

准備:

一、root 

  CF-auto-root: http://autoroot.chainfire.eu/

   需要清理全部數據,注意備份

   不用怕root 后的不安全,root權限由superU管理授權。

    root 后推薦: 綠色保護、fqrouter、xposed、XPrivacy。

 

二、軟件

   - adb  

      包含在android sdk中,通過USB debug 和android交互工具

   - tcpdump

      安裝一個tcpdump 相關的app,app啟動后會獲取root權限將tcpdump安裝好,當然不怕麻煩也可以下android tcpdump版本手動copy進去

  ----update 2015-1-2

    Android 5后,強制要求二進制文件支持PIE(Position-Independent-Executable) 提高系統安全性,能找到的tcpdump包基本都沒PIE 無法執行,需修改tcpdump編譯選項,剛找到編譯好現成的了:http://www.liudonghua.com/?p=372 里面有下載(測試可用)。

 

   - busybox

     一個命令工具集合,在adb shell 提供大多數linux 下命令,我們要用到的nc 就在里面

 

三、離線抓包

  - 方式一:adb usb 連接進去執行抓包

     adb shell su

     tcpdump -s 0 -w /sdcard/tmp.pcap

 

 - 方式二: tcpdump app 上執行抓包

     相關app 很多

      好處:可以不用usb連接,也能抓到正常使用環境的網絡包,

            usb 連接時android 系統將不會進入深度睡眠,深度睡眠時客戶端行為可能不太一樣(wake lock、alarm、wifi switch..)

            同時推薦betterbatterystat http://forum.xda-developers.com/showthread.php?t=1179809

-  拿出包

     抓完后,因為文件是通過root 賬號寫的,windows下看不到,mac本身不支持,所以停止回到系統shell

     adb pull /sdcard/tmp.pcap .     

 

  四、 實時查看抓包

     通過分享熱度、360移動wifi 都能做到,不過存在問題:

      1. 只能wifi網絡

      2. 因為是中間節點,抓的包的時序不一定是客戶端包的時序

      2G/3G網絡也可以做到,原理 將tcpdump 標准輸出給nc、adb 只是端口映射,本機nc 連接adb 映射端口,將流給創建pipe,wireshark 支持pipe流

      腳本:

     1. adb_tcpdump.sh

su
tcpdump -s 0 -w - | busybox nc -l -p 11233

2. adb_wireshark.sh

adb shell < adb_tcpdump.sh &

sleep 1
adb forward tcp:11233 tcp:11233
sleep 1

mkfifo /tmp/sharkfin
wireshark -k -i /tmp/sharkfin &

nc 127.0.0.1 11233 > /tmp/sharkfin

在mac 下執行./adb_wireshark.sh 就能彈出wireshark實時看看手機流量了

      

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM