實時監控Android設備網絡封包
對Android網絡抓包分析,一般是使用tcpdump抓個文件,再到PC用Wireshark打開分析。能不能達到直接使用Wireshark的效 果? 答案是可以的,至少已經非常接近了。實現起來很簡單,原理就是將tcpdump的數據重定向到網絡端口,再通過管道(pipe)轉到wireshark就 可以了。
基本結構
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”。
補充說明
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!