最近在做一个项目,有关功能是实现两台手机设备的数据交流。项目中需要分析两台手机互发的数据包,所以要抓取手机的报文进行分析。我尝试了很多方法,包括传统的wireshark抓包、sniffer嗅探、用commView For WIFI嗅探,遇到了很多麻烦的问题最终并没能达到理想效果(具体原因继续研究)。
之前尝试的是在手机设备的上层设备进行数据包的抓取,另外一个思路是直接在手机设备上抓取。下边介绍下怎么直接在android手机上抓取数据报文。
工具准备
android设备(已经root)
adb.exe
tcpdump
工具包下载路径:http://download.csdn.net/detail/duval_yang/8684177
详细步骤
(1) android手机连接电脑,并打开USB调试。命令行进入adb.exe目录,输入 命令adb devices 可以查看连接上电脑的设备。如图:
(2) 然后把 tcpdump 推送到手机设备上,在命令行输入命令 adb push tcpdump /data/local/tmp ,即可将tcpdump 推送到手机的/data/local/tmp目录下。( 网上有人介绍推送到 /data/local/tcpdump目录下,涉及到权限修改,但我尝试多次都是遇到permission denied错误。未解。) 如图:
(3) 然后可以进入手机系统去查看 tcpdump包的情况。如图:
(4)然后开始抓包,将报文保存到SD卡中。抓包前先su root 进入ROOT权限,抓包结束后可以Ctrl+C结束。如图:
tcpdump抓包命令自行搜索~
(5) 将数据导出到电脑,用wireShark打开查看。命令 adb pull <remote> <local>
常见问题:
1. adb error 错误
<br />
解决办法:Ctrl+Alt+Del 进入任务管理器,找到 kadb.exe进程,结束掉它即可。如图:
2.error:device not found 错误
解决办法:Ctrl+Alt+Del 进入任务管理器,找到 kadb.exe进程; 把手机USB拔出,重新插进。
3. stopped (signal) 错误
解决办法:进入root用户再操作。(命令 su root)