Android通過tcpdump抓包(wifi, 2g, 3g都可以)

來源:互聯網
上載者:User

標籤:

http://blog.csdn.net/deng529828/article/details/20646197

1. 手機要有root許可權

2. 下載tcpdump   http://www.strazzere.com/android/tcpdump

3. adb push c:\wherever_you_put\tcpdump /data/local/tcpdump

如果這一步真機無法push,可以用adb push c:\where_you_put\tcpdump /sdcard,即先將檔案存入不需要許可權的檔案夾中,這裡用sdcard,然後在傳到/data/local/tcpdump。

4. adb shell chmod 6755 /data/local/tcpdump

5, adb shell,   su獲得root許可權

6, cd /data/local

7, ./tcpdump -i any -p -s 0 -w /sdcard/capture.pcap

 

命令參數:

 

        # "-i any": listen on any network interface

  # "-p": disable promiscuous mode (doesn‘t work anyway)

  # "-s 0": capture the entire packet

  # "-w": write packets to a file (rather than printing to stdout)

  ... do whatever you want to capture, then ^C to stop it ...

下載tcpdump檔案到電腦 

 adb pull /sdcard/capture.pcap capture.pcap 

 

然後用wireshark開啟即可看到資料包的詳細資料。

 

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

12 sutcpdump -s 0 -w - | busybox nc -l -p 11233

2. adb_wireshark.sh

12345678910 adb shell < adb_tcpdump.sh & sleep 1adb forward tcp:11233 tcp:11233sleep 1 mkfifo /tmp/sharkfinwireshark -k -i /tmp/sharkfin & nc 127.0.0.1 11233 > /tmp/sharkfin

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

Android通過tcpdump抓包(wifi, 2g, 3g都可以)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.