Android開發過程中,當涉及到網路通訊的時候,有一些欄位需要抓包擷取。我之前因為SSDP裝置發現的包頭格式沒有寫對,經過抓包分析和標準包頭對比發現了這個困擾我很久的問題。總之,掌握在Android手機裡面抓包是很有必要的。
準備工作:Android系統的手機,網路環境,tcpdump,破解手機root許可權,建議最好在手機裡面安裝RE檔案管理工具並且給root許可權。具體步驟如下:
首先,通過adb工具將tcpdump推送到手機,tcpdump的為:http://www.strazzere.com/android/tcpdump。操作可以一條指令搞定:adb push c:/tcpdump /data/local/tcpdump。當然,用其他方式將tcpdump發送到手機也可以。
然後,需要修改tcpdump的許可權:
C:\\adb shell
$ su
#chmod 777 /data/local/tcpdump
輸入su指令的時候,可能需要在手機上點擊確認按鈕。這樣adb就能有許可權修改tcpdump的屬性了。
開始抓包:
adb shell
$ su
/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
抓包結束只需要按下ctrl + c即可。需要注意的是:在Windows平台下,ctrl + c會直接中斷,用該用ctrl + d或者其他指令結束該程式(Mac OS不受影響)。
將抓包檔案拉取出來:adb pull /sdcard/capture.pcap c:/ 如果你沒有安裝RE檔案管理工具,可能看不到capture.pcap檔案,但是它確實是存在的,原因是許可權不夠(root建立的檔案在Android下,普通許可權程式無法查看)。
接下來你就可以用Wireshark分析你抓的包了。開啟的時候可能會報錯,因為如果你用中斷的方式結束抓包,pcap檔案尾會沒有寫入,忽略即可。
個人辛勤勞動成果,如有轉載,請註明出處,謝謝!