本文主要介绍如何使用tcpdump和wireshark对Android应用程序进行抓包并分析,需要说明的是在抓包之前,你的Android设备必须root过了,另外你的电脑必须有Android SDK环境。

下载并安装tcpdump

tcpdump链接:http://www.tcpdump.org/

选择一个版本下载并解压提取出其中呃tcpdump文件,然后push到你的手机上去:

adb push c:\tcpdump /data/local/tcpdump


进一步操作:

adb shell        
         su        
         chmod +x /data/local/tcpdump


然后就可以开始抓包了:

/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap


这时你可以操作应用程序相应的操作了,抓包完毕后ctrl+c停止抓包。

然后将抓到pcap文件传输本地开始进行分析了,这里假设你pull到c盘目录下。

adb pull /sdcard/capture.pcap c:/


使用wireshark分析抓包数据

pc上安装wireshark

wireshark下载:http://www.wireshark.org/download.html

如果安装完毕,就可以直接打刚才的pcap文件了。


使用过滤器filter

如果抓到的东西过多,可以使用上方的过滤器,比如我只看http协议,并且是由我设备发出的


右键记录查看tcp stream

这个功能我比较喜欢,可以查看此次http,client端请求和server端返回的数据


还有我觉得更厉害的功能

可以把请求的内容和结果存储下来,比如可以查看post的内容

这是在面板看到的具体的tcp/ip各层的内容


但是这种编码之后,并且以字节流发出去的东西很让人讨厌,利用存储可能,你就可以看到具体的结果了:

选择File->Export Objects->HTTP,导出这条记录就可以啦。


最后总结下

这是我最近在工作中实际用得到的,但在实际操作tcpdump和wireshark的时候,有更多功能、技巧可以挖掘出来,这篇文章算是对从来没有用过这两个工具的人的一个入门介绍吧。