Android中如何使用tcpdump进行24/7数据包捕获

7
我想在Android上获取一周内(如果可能的话,分成几个文件)数据流量抓取(.pcap)。

我以为可以通过Shark使用tcpdump,但是我发现捕获会在一段时间后停止。我得到最大的数据包捕获约为40MB。我发现tcpdump会在更改网络接口时停止/崩溃。例如,当手机连接到3G时,当我从Shark运行tcpdump时,我可以看到tcpdump进程正在运行,直到我开启WiFi。
在Galaxy S2上,当通过WiFi连接时,我有以下接口(通过adb shell中的netcfg获得):lo、svnet0、usb0、sit0、eth0。当我通过3G连接时,我得到pdp0而不是eth0。
有没有办法让我24/7地运行tcpdump?或者通过Java应用程序检查它何时运行,如果它停止,可以再次运行它?也许可以检查tcpdump的进程或类似这样的东西?或者监视网络状态的状态,并在每次更改网络时运行tcpdump?
我看了一下:ReadLine on TCPDump-Buffer sometimes blocks until kill tcpdump ,但它并没有完全解决我的问题。
我正在使用已Root的设备。
3个回答

6

谢谢!不过我需要更新我正在使用的所有手机,但有些手机无法获得更新(来自运营商的原始更新)。很高兴知道在Android OS 4.0中可以这样做。 - Ekhi

2

我尝试了以下步骤来查看在更改网络接口后tcpdump的情况。
1.打开wifi并运行tcpdump-arm
2.运行ps|grep tcpdump-arm
3.关闭wifi并打开移动接口
4.运行ps|grep tcpdump-arm

我发现当在手机上更改网络接口时,tcpdump-arm进程仍然在工作,但是它无法捕获任何数据包。

我认为你需要让tcpdump即使在网络接口更改时也能继续捕获数据包。 正如谷歌的教程所说,你可以捕获连接性变化广播。 然后,你应该运行“killall”来杀死tcpdump进程。
最后,重新启动tcpdump进程,如果你没有指定一个接口,它将监听新打开的接口。如果你想让tcpdump快速返回,你可以添加"-l"选项,就像TCPDump-Buffer sometimes blocks until kill tcpdump中的答案所示。


2
如果您的设备已经root,那么请使用SimplePacketCapture代替tPacketCapture。 tPacketCapture会创建一个VPN,可能会影响您的VoIP应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接