2012-04-02 10 views
5

Ich möchte Datenpakete (.pcap) auf Paketebene während einer Woche in Android erhalten (in mehreren Dateien, wenn möglich).24/7 Paketerfassung in Android mit tcpdump

Ich dachte, dass ich tcpdump über Shark verwenden könnte, aber ich finde, dass die Erfassung nach einiger Zeit stoppt. Die größte Paketerfassung, die ich bekommen habe, ist ungefähr 40 MB. Ich habe herausgefunden, dass tcpdump stoppt/abstürzt, wenn die Netzwerkschnittstelle geändert wird. Zum Beispiel, wenn das Telefon mit 3G verbunden ist, wenn ich tcpdump von Shark laufen lasse, kann ich den Prozess von tcpdump laufen sehen, bis ich WiFi einschalte.

Im Galaxy S2, wenn ich über WiFi verbunden bin, habe ich die folgenden Schnittstellen (erhalten mit netcfg in adb-Shell): lo, svnet0, usb0, sit0, eth0. Wenn ich über 3G verbinde, bekomme ich pdp0 statt eth0.

Gibt es eine Möglichkeit, dass ich tcpdump 24/7 laufen lassen kann? Oder eine Möglichkeit, zu überprüfen, wann es ausgeführt wird und ob es gestoppt wird, damit es erneut von einer Java-App ausgeführt wird? Überprüfen Sie den Prozess von tcpdump oder so etwas vielleicht? Oder den Status des Netzwerks überwachen und tcpdump jedes Mal ausführen, wenn das Netzwerk geändert wird?

Ich habe mich angesehen: ReadLine on TCPDump-Buffer sometimes blocks until kill tcpdump, aber es löst nicht vollständig mein Problem.

Ich verwende verwurzelte Geräte.

Antwort

0

Wenn Sie haben das Gerät gerootet Verwenden Sie dann SimplePacketCapture anstelle von tPacketCapture. tPacketCapture erstellt einen VPN, der Ihre VoIP-Anwendung beschädigen kann.

1

Ich habe versucht, wie folgt zu sehen, was über tcpdump nach alternierender Netzwerkschnittstelle passiert.
1.open wifi laufen tcpdump-arm
2.run ps | grep tcpdump-Arm
3.close WiFi und offene mobile Schnittstelle
4.run ps | grep tcpdump-Arm

ich gefunden habe, dass Wenn die Netzwerkschnittstelle auf dem Mobiltelefon gewechselt wird, funktioniert der tcpdump-arm-Prozess noch, aber er erfasst keine Pakete.

Ich denke, Sie brauchen tcpdump, um die Erfassung auch dann fortzusetzen, wenn sich die Netzwerkschnittstelle geändert hat. Sie können die Connection Change Broadcast abfangen, wie die tutorial of google zuerst sagt.
Dann sollten Sie "killall" ausführen, um die tcpdump processl
Endlich starten Sie den tcpdump-Prozess neu, wenn Sie keine Schnittstelle angeben, wird es auf der neu geöffneten Schnittstelle zuhören.Wenn Sie möchten, dass die tcpdump zurückzukehren schnell, können Sie "-l" -Option hinzufügen, wie die Antwort in T CPDump-Buffer sometimes blocks until kill tcpdump impliziert.