實時監控Android設備網絡封包

jopen 9年前發布 | 34K 次閱讀 Android Android開發 移動開發

   對Android網絡抓包分析,一般是使用tcpdump抓個文件,再到PC用Wireshark打開分析。能不能達到直接使用Wireshark的效 果? 答案是可以的,至少已經非常接近了。實現起來很簡單,原理就是將tcpdump的數據重定向到網絡端口,再通過管道(pipe)轉到wireshark就 可以了。

   基本結構

   如下圖所示: 實時監控Android設備網絡封包

   Android上使用的指令:

   i. tcpdump

正是因為可以生成libpcap格式的數據,Wireshark可以加以處理。

 官網:http://www.tcpdump.org/

 下面這個鏈接介紹了Android版本的編譯:

 http://omappedia.org/wiki/USB_Sniffing_with_tcpdump

   ii. netcat, 又稱為瑞士軍刀,小巧而功能強悍。如果在手機沒有nc指令,可以方便地使用busybox提供的版本(直接到Google Play里安裝)。

http://www.busybox.net/

   iii. Wireshark, 不嗦了。

http://www.wireshark.org/

   兩條指令

   準備好了工具,依下面的方式執行兩條指令就可以了 (只需要替換tcpdump所在的路徑,以及nc前要不要加個busybox):

   i. 使用adb shell在Android設備上執行:

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

 *其中nc -l -p 11233, 即建立一個服務器端,以11233端口提供服務。需要以root用戶執行。

   ii. 在主機的命令下執行:

adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233 | wireshark -k -S -i - 

*其nc 127.0.0.1 11233,即建立一個客戶端,連接到本機的11233端口。wireshark的參數見后面的補充說明。

   *在Mac OS下有時需要在wireshark前加上sudo, 不然打開失敗。如果沒有看到結果,可以在nc指令加-v參數,顯示更多的信息來查看。比如出現”Connection refused“時,注意檢查指定的端口號是否正確。

   也可以參考這里:

http://www.kandroid.org/online-pdk/guide/tcpdump.html

   效果如下,注意標題顯示”Capturing from Standard Input”。 實時監控Android設備網絡封包

   補充說明

   i. tcpdump詳解

http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

   ii. 什么是libpcap格式

http://wiki.wireshark.org/Development/LibpcapFileFormat

   iii. wireshark參數

http://man.lupaworld.com/content/network/wireshark/c9.2.html

 官方:http://www.wireshark.org/docs/man-pages/wireshark.html

   *Wireshark還帶一些其它指令,如下:

http://www.wireshark.org/docs/man-pages/
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!