Android下使用TCPDUMP抓包Wireshark分析數(shù)據(jù)

2014-12-26 17:28:51來源:LinuxToday作者:

如果想分析Android下 某個APP的網(wǎng)絡(luò)數(shù)據(jù)交互,需要在Android手機上抓包,最常用的抓包工具非tcpdump莫屬,用tcpdump生成Wireshark識別的 pcap文件,然后將pcap文件下載到電腦上,用電腦上的Wireshark加載pcap文件,通過Wireshark分析tcpdump抓取的數(shù)據(jù)。

如果想分析Android下 某個APP的網(wǎng)絡(luò)數(shù)據(jù)交互,需要在Android手機上抓包,最常用的抓包工具非tcpdump莫屬,用tcpdump生成Wireshark識別的 pcap文件,然后將pcap文件下載到電腦上,用電腦上的Wireshark加載pcap文件,通過Wireshark分析tcpdump抓取的數(shù)據(jù)。

一、安裝tcpdump

為Android手機安裝tcpdump,首先必須將Android手機root,現(xiàn)在市面上常用的root工具都很傻瓜很強大,推薦使用root精靈,將手機root以后,我們就可以為手機安裝tcpdump了。

先下載tcpdump文件, 下載地址:http://pan.baidu.com/s/1sjM7wTZ

adb push tcpdump /sdcard/  
adb shell  
su  
cat /sdcard/tcpdump > /system/bin/tcpdump  

上一條命令如果提示沒有權(quán)限,接著執(zhí)行如下命令嘗試給 /system 目錄增加寫權(quán)限

su
mount

在mount結(jié)果中找到包含/system的一行,類似如下:

/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0  

去處/system前半行,即/dev/block/platform/msm_sdcc.1/by-name/system,執(zhí)行如下命令:

mount -o remount /dev/block/platform/msm_sdcc.1/by-name/system /system  

這個時候/system就擁有寫權(quán)限了,繼續(xù)執(zhí)行:

cat /sdcard/tcpdump > /system/bin/tcpdump  
chmod 777 /system/bin/tcpdump  

到此為止,tcpdump就成功安裝到了/system/bin/目錄下,接著用如下命令還是抓包

二、使用tcpdump抓包

tcpdump -i wlan0 -s 0 -w /sdcard/1.pcap  

可以結(jié)束時使用Ctrl+c快捷鍵讓tcpdump結(jié)束抓包,抓到數(shù)據(jù)會存到/sdcard/1.pcap文件內(nèi)

重新打開一個終端(Terminal),執(zhí)行如下命令

adb pull /sdcard/1.pcap .  

1.pcap文件被下載到了終端上的當前目錄下

三、安裝Wireshark并分析pcap文件

從Wireshark官網(wǎng)https://www.wireshark.org/下 載適合你系統(tǒng)的Wireshark,然后點擊你下載后的Wireshark安裝包安裝好Wireshark,找到剛剛下載好的1.pcap文件,雙擊 1.pcap文件,1.pcap文件會自動被Wireshark打開。在Wireshark的Filter內(nèi)輸入如下一些過濾條件,可以更加方便地分析數(shù) 據(jù)來源。

view plaincopy to clipboardprint?

tcp.port == 80 //過濾來自80端口的TCP數(shù)據(jù)  
udp.port == 12345 //過濾來自12345端口的UDP數(shù)據(jù)  
ip.src == 192.168.0.1 //過濾源IP為192.168.0.1的數(shù)據(jù)  
ip.dst == 192.168.0.1 //過目的IP為192.168.0.1的數(shù)據(jù)  

以上過濾條件可以用and跟or相互組合,例如

view plaincopy to clipboardprint?

tcp.port == 80 and ip.src == 192.168.0.1 //過濾來自80端口,源IP為192.168.0.1的TCP數(shù)  
udp.port == 12345 or ip.dst == 192.168.0.1 //過濾來自12345端口的UDP數(shù)據(jù),或者目的IP為192.168.0.1的數(shù)據(jù)