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

时间:2012-04-02 09:55:30

标签: android tcpdump

我想在一周内在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。

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

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

我使用的是root设备。

3 个答案:

答案 0 :(得分:4)

如何尝试使用tPacketCapture应用程序(适用于非root设备)

Android OS 4.0

https://play.google.com/store/apps/details?id=jp.co.taosoftware.android.packetcapture

-

答案 1 :(得分:2)

如果你有root设备,那么使用SimplePacketCapture而不是tPacketCapture。 tPacketCapture创建一个可以破坏你的voip应用程序的vpn。

答案 2 :(得分:2)

我尝试按照以下步骤查看交换网络接口后tcpdump的情况 1.打开wifi运行tcpdump-arm
2.run ps | grep tcpdump-arm
3.关闭wifi并打开移动界面
4.run ps | grep tcpdump-arm

我发现在移动电话上交换网络接口时,tcpdump-arm进程仍在工作,但它没有捕获数据包。

我认为即使网络接口发生变化,您也需要tcpdump来继续捕获。 您可以按tutorial of google首先说明的方式捕获连接更改广播 然后,你应该运行“killall”来杀死tcpdump进程1 最后,重新启动tcpdump进程,如果你没有指定接口,它将监听新打开的接口。如果你想让tcpdump快速返回,你可以添加“-l”选项作为T {{的答案3}}暗示。