使用tcpdump在Android中实现全天候数据包捕获

使用tcpdump在Android中实现全天候数据包捕获,android,tcpdump,Android,Tcpdump,我想在一周内(如果可能的话,在几个文件中)在Android中获取数据包级流量捕获(.pcap) 我想我可以通过Shark使用tcpdump,但是我发现捕获在一段时间后停止。我得到的最大数据包捕获量约为40MB。我发现tcpdump在更改网络接口时停止/崩溃。例如,当手机连接到3G时,当我从Shark运行tcpdump时,我可以看到tcpdump运行的过程,直到我打开WiFi 在Galaxy S2中,通过WiFi连接时,我有以下接口(通过使用adb外壳中的netcfg获得):lo、svnet0、u

我想在一周内(如果可能的话,在几个文件中)在Android中获取数据包级流量捕获(.pcap)

我想我可以通过Shark使用tcpdump,但是我发现捕获在一段时间后停止。我得到的最大数据包捕获量约为40MB。我发现tcpdump在更改网络接口时停止/崩溃。例如,当手机连接到3G时,当我从Shark运行tcpdump时,我可以看到tcpdump运行的过程,直到我打开WiFi

在Galaxy S2中,通过WiFi连接时,我有以下接口(通过使用adb外壳中的netcfg获得):lo、svnet0、usb0、sit0、eth0。当我通过3G连接时,我得到的是pdp0而不是eth0

有什么方法可以让我全天候运行tcpdump吗?或者有什么方法可以检查它何时运行以及是否停止,让它从Java应用程序再次运行?检查tcpdump或类似的过程?或者监控网络状态,并在每次网络更改时运行tcpdump

我看了看:,但它并不能完全解决我的问题


我正在使用根设备。

试试tPacketCapture应用程序(与非根设备一起使用)怎么样

安卓操作系统4.0

免费的


如果您有根设备,请使用SimplePacketCapture而不是tPacketCapture。
tPacketCapture创建一个vpn,可以中断您的voip应用程序。

我尝试了以下方法,以了解在交替使用网络接口后tcpdump的情况。
1.打开wifi运行
2.运行ps | grep tcpdump arm
3.关闭wifi并打开移动接口
4.运行ps | grep tcpdump arm

我发现,在移动电话上交替使用网络接口时,tcpdump arm进程仍在工作,但它不会捕获任何数据包。

我认为您需要tcpdump来保持捕获,即使网络接口发生了变化。 您可以按照最初的说明捕获连接更改广播。
然后,您应该运行“killall”来终止tcpdump进程l

最后,重新启动tcpdump进程,如果您没有指定接口,它将侦听新打开的接口。如果您希望tcpdump快速返回,可以添加“-l”选项,正如T中的答案所示。

谢谢!但是,我应该更新我正在使用的所有手机,其中一些手机无法获得更新(运营商提供的原始版本)。很高兴知道我可以在Android OS 4.0中做到这一点。