Emulatore Android: come monitorare il traffico di rete?


Risposte:


104

Esistono due modi per acquisire il traffico di rete direttamente da un emulatore Android:

  1. Copia ed esegui un binario tcpdump compatibile con ARM sull'emulatore, scrivendo l'output sulla scheda SD, forse (ad esempio tcpdump -s0 -w /sdcard/emulator.cap).

  2. Esegui emulator -tcpdump emulator.cap -avd my_avdper scrivere tutto il traffico dell'emulatore su un file locale sul tuo PC

In entrambi i casi è quindi possibile analizzare normalmente il file pcap con tcpdump o Wireshark.


Quindi non è in tempo reale / online? Voglio dire, i pacchetti possono essere analizzati solo alla fine?
fikr4n,

Nel primo caso, è possibile analizzare tramite stdout sul dispositivo anziché scrivere su un file. Nel secondo caso, potresti essere in grado di eseguire lo stream / tail del file mentre viene scritto. Oppure puoi acquisire il traffico di rete sul computer host, piuttosto che sull'emulatore.
Christopher Orr,

Ho trovato che gli emulatori che uso già ora hanno installato tcpdump e il comando n. 1 funziona senza installarne uno. Puoi anche eseguirlo con "adb -e shell tcpdump -s0 -w /sdcard/emulator.cap".
Les

2
Se stai usando seconda soluzione e si stanno ottenendo The -tcpdump flag is not supported in QEMU2 yet and will be ignored.avvertimento, aggiungere -Engine classico al vostro comando come questo: emulator -tcpdump emulator.cap -avd my_avd -engine classic. Questo forzerà il motore dell'emulatore deprecato, ma dovrebbe funzionare fino a quando non risolveranno il problema.
Lagoman,

dove avdsi trova?
user3806649

20

È anche possibile utilizzare il proxy http per monitorare le richieste http dall'emulatore. È possibile passare -http-proxyflag quando si avvia un nuovo emulatore per impostare il proxy (esempio burp ) per monitorare il traffico Android. Esempio di utilizzo ./emulator -http-proxy localhost:8080 -avd android2.2. Nota che nel mio esempio sto usando Burp, ed è la porta di ascolto 8080. Maggiori informazioni possono essere trovate qui .


2
Che dire del traffico https
pee2pee,


6

Una versione corrente di Android Studio non ha applicato correttamente l' -tcpdumpargomento. Sono stato ancora in grado di catturare un dump passando il parametro relativo a qemu come segue:

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd

5

Sì, WireShark funzionerà.

Non penso che ci sia un modo semplice per filtrare solo il traffico dell'emulatore, poiché proviene dallo stesso IP di src.

Forse il modo migliore sarebbe impostare un ambiente VMware molto spoglio ed eseguire solo l'emulatore lì dentro, almeno in questo modo non ci sarebbe troppo traffico in background.


Un buon suggerimento, ma è difficile far funzionare un emulatore su una VM. Hai ottenuto questo per funzionare?
MikeSchem,

In quali problemi hai riscontrato? Non l'ho fatto da solo, ma non riesco a immaginare che ci sarebbero problemi.
Bitdivision

Nel mio caso, le richieste che venivano inviate erano in verde, tutto ciò che facevo era chiudere gli altri browser ed ero in grado di individuare le dolci righe verdi. Una volta individuata la richiesta, copia l'indirizzo di destinazione e puoi utilizzarlo nel filtro inserendo ip.dst == "indirizzo IP che hai copiato" e visualizzando solo le richieste pertinenti.
Ritveak,


4

Ora è possibile utilizzare Wireshark direttamente per acquisire il traffico dell'emulatore Android. C'è un extcap plugin chiamato androiddump che rende possibile. Devi avere un tcpdumpeseguibile nell'immagine di sistema in esecuzione sull'emulatore (la maggior parte delle immagini attuali ce l'hanno, testato con immagini API 24 e API 27) e in adbdesecuzione come root sull'host (basta eseguire adb root). Nell'elenco delle interfacce disponibili in Wireshark (solo versione Qt, GTK + obsoleto non ce l'ha) o l'elenco mostrato con tshark -Dci dovrebbero essere diverse interfacce Android che consentono di annusare il traffico Bluetooth, Logcat o Wifi, ad esempio:

android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)



2

Puoi usare http://docs.mitmproxy.org/en/stable/install.html

È facile da configurare e non richiede ulteriori modifiche.

Vado attraverso vari strumenti ma l'ho trovato davvero buono e facile.


Non lo so mitmproxyprima Ma per quanto posso vedere, è specifico per HTTP. Ma la domanda del PO non lo è.
Siu Ching Pong -Asuka Kenji-

1
Il nuovo Android Studio 3.0 fornisce profiler, puoi usarlo. E per mitm fornisce tutti i tipi di protocolli, http, https ecc. Devi solo configurare correttamente il proxy.
Dhiraj Himani,

È disponibile per acquisire pacchetti da app non sviluppate da me? E su un emulatore di terze parti come Nox App Player? Grazie!
Siu Ching Pong -Asuka Kenji-

1
Sì, dovresti avere il certificato mitm installato sul tuo emulatore / dispositivo, fornito da mitm stesso, e puoi usarlo per guardare la richiesta in corso e le risposte corrispondenti.
Dhiraj Himani,

2

Puoi monitorare il traffico di rete da Android Studio. Vai su Monitor Android e apri la scheda Rete.

http://developer.android.com/tools/debugging/ddms.html

AGGIORNAMENTO: ⚠️ Android Device Monitor è stato deprecato in Android Studio 3.1. Scopri di più su https://developer.android.com/studio/profile/monitor


5
puoi dire da dove aprire la scheda di utilizzo della rete di dettaglio in Android Studio 1.5 (Windows) come mostrato nell'immagine nel link, sto solo ottenendo un grafico ma non i dettagli?
Shreyans jain

Tieni presente che questa opzione offre una visione limitata. Non sono riuscito a risolvere i miei problemi in cui desidero scoprire perché una richiesta è stata rifiutata, perché Android non mi ha detto nulla su questa richiesta. Il violinista è più adatto qui.
Highriser,

2

Suggerirei di usare Wireshark .

passi:

  1. Installa Wireshark.
  2. Seleziona la connessione di rete che stai utilizzando per le chiamate (ad esempio, seleziona Wifi se lo stai utilizzando)
  3. Ci saranno molte richieste e risposte, chiudere applicazioni extra.
  4. Di solito le richieste sono di colore verde, una volta individuata la richiesta, copia l'indirizzo di destinazione e utilizza il filtro in alto digitando ip.dst==52.187.182.185inserendo l'indirizzo di destinazione.

Puoi utilizzare altre tecniche di filtraggio menzionate qui per ottenere traffico specifico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.