Come posso monitorare il traffico di rete inviato e ricevuto dal mio emulatore Android?
Come posso monitorare il traffico di rete inviato e ricevuto dal mio emulatore Android?
Risposte:
Esistono due modi per acquisire il traffico di rete direttamente da un emulatore Android:
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
).
Esegui emulator -tcpdump emulator.cap -avd my_avd
per 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.
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.
avd
si trova?
È anche possibile utilizzare il proxy http per monitorare le richieste http dall'emulatore. È possibile passare -http-proxy
flag 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 .
Per OS X puoi usare Charles , è semplice e facile da usare.
Per ulteriori informazioni, dai un'occhiata al post del blog Emulator Android e Charles Proxy .
Charles
prima Ma per quanto posso vedere, è specifico per HTTP. Ma la domanda del PO non lo è.
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.
Ora è possibile utilizzare Wireshark direttamente per acquisire il traffico dell'emulatore Android. C'è un extcap plugin chiamato androiddump che rende possibile. Devi avere un tcpdump
eseguibile 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 adbd
esecuzione 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 -D
ci 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)
È possibile avviare l'emulatore con il comando -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Ho usato HTTP Analyzer, ma dovrebbe funzionare per qualsiasi altra cosa. Maggiori dettagli sono disponibili qui:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
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.
mitmproxy
prima Ma per quanto posso vedere, è specifico per HTTP. Ma la domanda del PO non lo è.
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
Suggerirei di usare Wireshark .
passi:
- Installa Wireshark.
- Seleziona la connessione di rete che stai utilizzando per le chiamate (ad esempio, seleziona Wifi se lo stai utilizzando)
- Ci saranno molte richieste e risposte, chiudere applicazioni extra.
- 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.185
inserendo l'indirizzo di destinazione.
Puoi utilizzare altre tecniche di filtraggio menzionate qui per ottenere traffico specifico.