直接上命令
$ adb shell "tcpdump -i any -w /sdcard/abc.pcap $ adb pull /sdcard/abc.pcap /tmp $ wireshark /tmp/abc.pcap
解释一下tcpdump各参数的意思:
-i 指定抓取的网卡(any表示所有网卡)
-w 将抓取到的数据保存到文件,-表示保存到STDOUT
由于adb控制台输出时会把LF转换成CRLF,实时抓包需要额外处理一下tcpdump输出的数据。
$ adb shell "tcpdump -i any -w - | busybox uuencode -" | busybox uudecode -o - | wireshark -k -i -
wireshark的-k参数表示直接开始抓取,-i参数表示从指定的网卡或者文件抓取(-表示STDIN)。