2012-04-02 76 views
5

我想在一周内在Android中获得数据包级数据流量捕获(.pcap)(如果可能,请在多个文件中)。使用tcpdump在Android中进行24/7数据包捕获

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

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

有什么办法可以让我24/7全天候运行tcpdump吗?或者有什么方法来检查它何时运行,如果它停止使它再次从Java应用程序运行?检查tcpdump的进程或类似的东西可能?或者每次网络改变时监控网络的状态并运行tcpdump?

我看过:ReadLine on TCPDump-Buffer sometimes blocks until kill tcpdump,但它并没有完全解决我的问题。

我正在使用扎根设备。

回答

0

如果你有根源的设备然后使用SimplePacketCapture而不是tPacketCapture。 tPacketCapture会创建一个可能会破坏您的voip应用程序的vpn。

1

我试过了,看看tcpdump交替网络接口后发生了什么。
1.open WiFi运行tcpdump-arm
2.run PS | grep的tcpdump的臂
3.关闭WiFi和移动开放接口
4.run PS | grep的tcpdump的臂

我发现,当在手机上交换网络接口时,tcpdump-arm进程仍在工作,但它不捕获数据包。

我认为你需要tcpdump来保持捕获,即使网络接口发生变化。 您可以首先看到tutorial of google说的连接变化广播。
然后,你应该运行“killall”来杀死tcpdump进程l
最后,重新启动tcpdump进程,如果你没有指定一个接口,它将监听新打开的接口。如果你想让tcpdump返回很快,您可以添加“-l”选项作为T CPDump-Buffer sometimes blocks until kill tcpdump中的答案。