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文件尾会没有写入,忽略即可。
个人辛勤劳动成果,如有转载,请注明出处,谢谢!