2012-04-02 4 views
5

Vorrei ottenere acquisizioni di dati di traffico a livello di pacchetto (.pcap) in Android durante una settimana (in diversi file se possibile).Acquisizione pacchetti 24/7 in Android utilizzando tcpdump

Ho pensato che potrei usare tcpdump via Shark, tuttavia trovo che l'acquisizione si fermi dopo un po 'di tempo. La più grande acquisizione di pacchetti che ho ottenuto è di circa 40 MB. Ho scoperto che tcpdump si arresta/si blocca quando si cambia l'interfaccia di rete. Ad esempio, quando il telefono è connesso a 3G, quando eseguo tcpdump da Shark posso vedere il processo di tcpdump in esecuzione fino a quando non accendo WiFi.

Nel Galaxy S2, quando connesso via WiFi, ho le seguenti interfacce (ottenute usando netcfg in adb shell): lo, svnet0, usb0, sit0, eth0. Quando mi collego via 3G, ottengo pdp0 invece di eth0.

Esiste un modo per eseguire tcpdump 24/7? O un modo per controllare quando è in esecuzione e se si ferma farla funzionare di nuovo da un'app Java? Controllo del processo di tcpdump o qualcosa del genere forse? O monitorare lo stato della rete ed eseguire tcpdump ogni volta che la rete viene cambiata?

Ho dato un'occhiata a: ReadLine on TCPDump-Buffer sometimes blocks until kill tcpdump, ma non risolve completamente il mio problema.

Sto usando i dispositivi rooted.

risposta

0

Se hai un dispositivo rooted quindi usa SimplePacketCapture invece di tPacketCapture. tPacketCapture crea una VPN che può interrompere l'applicazione VoIP.

1

Ho provato a seguire per vedere cosa succede su tcpdump dopo l'alternanza dell'interfaccia di rete.
1.open wifi corsa tcpdump-arm
2.run ps | grep tcpdump-braccio
3.close wifi e l'interfaccia mobile aperto
4.run ps | grep tcpdump-braccio

Ho scoperto che quando si alterna l'interfaccia di rete sul telefono cellulare, il processo tcpdump-arm funziona ancora, ma non cattura alcun pacchetto.

Penso che sia necessario tcpdump per continuare a catturare anche quando l'interfaccia di rete è cambiata. È possibile intercettare la trasmissione di modifica della connettività come dice inizialmente il tutorial of google.
Quindi, si dovrebbe eseguire "killall" per terminare il processo tcpdump
Infine, riavviare il processo tcpdump, se non si specifica un'interfaccia, esso verrà ascoltato nell'interfaccia appena aperta. Se si desidera che tcpdump ritorni rapidamente, è possibile aggiungere l'opzione "-l" come la risposta in T CPDump-Buffer sometimes blocks until kill tcpdump implica.