1. Android手机需要先获得root权限
2. 下载tcpdump
http://www.strazzere.com/android/tcpdump
3. 将tcpdump工具放入android系统中
adb push c:\wherever_you_put\tcpdump /data/local/tcpdump
--如果提示没有权限,那就最简单的就是用下面的方法:
--adb push tcpdump /data/local/tmp/tcpdump
4. 修改tcpdump的权限
adb shell chmod 6755 /data/local/tcpdump
5. 进入命令行模式,并获取root权限
adb shell
su
6, 运行tcpdump
rm -r /sdcard/capture.pcap
--删除之前抓取的同名数据包文件
cd /data/local
./tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
--有的设备sdcard并不在根目录下,根据实际情况输入对应路径
--命令参数:
# "-i any": listen on any network interface
# "-p": disable promiscuous mode (doesn't work anyway)
# "-s 0": capture the entire packet
# "-w": write packets to a file (rather than printing to stdout)
7. 将抓取的数据包拷贝到本地
adb pull /sdcard/capture.pcap d:/
8. 在电脑上用wireshark打开capture.pcap即可分析log
-------------------------------------------------------------------------------------------------------
根据以上的信息,写一个bat去执行(tcpdump文件必须在当前目录里)。
开始tcpdump :
adb shell rm -r /sdcard/capture.pcap
adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
pause
下载tcpdump文件到电脑
adb pull /sdcard/capture.pcap d:/
问题:有些机器root后通过adb shell 后,默认不是root用户,需要输入 su才能切换到root,这样在执行批处理会有问题,解决方法如下
adb shell "su -c 'sleep 1'"
adb start-server
adb push c:\wherever_you_put\tcpdump /data/local/tcpdump
--异常情况:root后adb shell默认不是root用户时,如何将文件放入手机系统中,请参考 :http://blog.csdn.net/wirelessqa/article/details/8624208