前几天一直在找在Android平台下,可以直接解析tcpdump的jar,可惜一直没有找到,不过我们一使用另一种方式来实现相同的功能。
对网络中的数据包进行抓取为稍后的分析是很有用的,但如果我们在抓取数据包的同时就能够开展这种分析那将获得更好的效果。这样做的话,开发者能很清晰了解到对每一个测试用例中的请求和应答的数据是哪些。在本文中,将展示如何实时地抓取Android应用联网程序中的数据包,并且将使用著名的网络数据分析利器Wireshark进行分析。
使用步骤:
1.下载tcpdump并将部署到手机中,
用adb 命令将tcpdump push到 手机的/data/loca/目录下
修改文件的权限 cmd中输入 adb shell出现“#”输入su 切换用户出现“$”符号
此时输入chmod 777 /data/local/tcpdump
2.捕获指定端口的数据:
第一步中将tcpdump push到/data/local/tcpdump,并且已经具有相应的读写执行的权限。
我们要将tcpdump捕获的数据指定到特定的端口中,为下一步使用netcap工具去过滤数据,在adb shell下输入如下命令:
/data/local/tcpdump-n -s 0 -w - | nc -l -p 11112,这样就可以是所有网络流量数据包都经过11112端口。
3.Pc上下载安装netcat
首先在http://www.securityfocus.com/tools/139这个地址下载windows版本的netcat进行安装,这个工具的原理是:从网络的一端读入数据,然后输出到网络的另一端,它可以使用tcp和udp协议。
如果安装netcap后,在cmd中输入”nc”时找不到该命令时,可以将netcap复制到C:\Windows\System32目录下,重新打开cmd输入“nc”如果出现如下的结果
表明netcat命令在cmd中可以使用了。
4.使用Wireshark分析网络数据包
使用adb的forward指令,将数据包从手机设备的端11112口重定向到PC电脑的11112端口,然后再通过netstat工具捕获进入11112端口的数据,最后再通过管道操作交给wireshark进行分析,命令如下:
adb forward tcp:11112 tcp:11112&& nc 127.0.0.1 11112 | wireshark -k -S -i –
运行后进去下图所示,Wireshark就可以实施获取手机端的网络数据了。
扩展内容 :每次操作手机端都非常麻烦,我们可以直接将手机的东西写一个应用程序,执行相应的adb shell命令就可以啦
参考网络资料:www.phonesdevelopers