Android-Emulator: Wie überwache ich den Netzwerkverkehr?

Antworten:

104

Es gibt zwei Möglichkeiten, den Netzwerkverkehr direkt von einem Android-Emulator zu erfassen :

  1. Kopieren Sie eine ARM-kompatible tcpdump-Binärdatei und führen Sie sie auf dem Emulator aus, wobei Sie möglicherweise (z tcpdump -s0 -w /sdcard/emulator.cap. B. ) die Ausgabe auf die SD-Karte schreiben .

  2. Führen Sie emulator -tcpdump emulator.cap -avd my_avddiese Option aus , um den gesamten Datenverkehr des Emulators in eine lokale Datei auf Ihrem PC zu schreiben

In beiden Fällen können Sie die pcap-Datei dann wie gewohnt mit tcpdump oder Wireshark analysieren.

Christopher Orr
quelle
Es ist also nicht in Echtzeit / online? Ich meine, die Pakete können nur am Ende analysiert werden?
fikr4n
Im ersten Fall können Sie über stdout auf dem Gerät analysieren, anstatt in eine Datei zu schreiben. Im zweiten Fall können Sie die Datei möglicherweise während des Schreibens streamen / verfolgen. Oder Sie können den Netzwerkverkehr auf dem Host-Computer und nicht auf dem Emulator erfassen.
Christopher Orr
Ich habe festgestellt, dass auf den Emulatoren, die ich bereits verwende, tcpdump installiert ist und der Befehl Nr. 1 ohne Installation funktioniert. Sie können es auch mit "adb -e shell tcpdump -s0 -w /sdcard/emulator.cap" ausführen.
Les
2
Wenn Sie die zweite Lösung verwenden und eine The -tcpdump flag is not supported in QEMU2 yet and will be ignored.Warnung erhalten, fügen Sie Ihrem Befehl -engine classic wie folgt hinzu : emulator -tcpdump emulator.cap -avd my_avd -engine classic. Dies erzwingt eine veraltete Emulator-Engine, sollte jedoch funktionieren, bis das Problem behoben ist.
Lagoman
wo avdbefindet sich das?
user3806649
20

Es ist auch möglich, den http-Proxy zu verwenden, um http-Anforderungen vom Emulator zu überwachen. Sie können das -http-proxyFlag übergeben, wenn Sie einen neuen Emulator starten, um einen Proxy (Beispiel- Rülpsen ) zur Überwachung des Android-Verkehrs festzulegen . Anwendungsbeispiel ./emulator -http-proxy localhost:8080 -avd android2.2. Beachten Sie, dass ich in meinem Beispiel Burp verwende und Port 8080 überwacht. Weitere Informationen finden Sie hier .

Waltsu
quelle
2
Was ist mit https Verkehr
pee2pee
10

Für OS X können Sie Charles verwenden , es ist einfach und leicht zu bedienen.

Weitere Informationen finden Sie im Blogbeitrag von Android Emulator und Charles Proxy .

Tom Susel
quelle
1
Ich weiß es Charlesvorher nicht. Aber soweit ich sehen kann, ist es HTTP-spezifisch. Aber die Frage des OP ist nicht.
Siu Ching Pong -Asuka Kenji-
Charles existiert auch für Linux, ich habe es auf meinem Ubuntu 18.04
Marecky
6

In einer aktuellen Version von Android Studio wurde das -tcpdumpArgument nicht korrekt angewendet . Ich konnte immer noch einen Speicherauszug erfassen, indem ich den zugehörigen Parameter wie folgt an qemu übergab:

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

Ja, Wireshark wird funktionieren.

Ich glaube nicht, dass es eine einfache Möglichkeit gibt, nur den Emulatorverkehr herauszufiltern, da er von derselben src-IP stammt.

Vielleicht wäre der beste Weg, eine sehr nackte VMware-Umgebung einzurichten und nur den Emulator dort auszuführen, zumindest auf diese Weise würde es nicht zu viel Hintergrundverkehr geben.

Bitdivision
quelle
Guter Vorschlag, aber es ist schwierig, einen Emulator auf einer VM zum Laufen zu bringen. Hast du das zum Laufen gebracht?
MikeSchem
Auf welche Probleme sind Sie gestoßen? Ich habe es nicht selbst gemacht, aber ich kann mir nicht vorstellen, dass es irgendwelche Probleme geben würde.
Bitdivision
In meinem Fall waren die gesendeten Anfragen grün, ich habe nur andere Browser heruntergefahren und konnte die süßen grünen Zeilen erkennen. Sobald Sie die Anfrage erkannt haben, kopieren Sie die Zieladresse und Sie können sie im Filter verwenden, indem Sie ip.dst == "IP-Adresse, die Sie kopiert haben" eingeben und nur die relevanten Anfragen anzeigen.
Ritveak
4

Sie können Fiddler verwenden , um den http-Verkehr zu überwachen:

http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/

Sie können Fiddler2 auch verwenden hier .

Laramie
quelle
2
Ein weiterer Link hier . Ich würde hinzufügen, dass der Proxyserver 10.0.2.2die IP-Adresse des Host-Computers in Android-Emulatoren sein sollte, ohne dass Sie herausfinden müssen, um was es sich handelt.
Mendhak
4

Es ist jetzt möglich, Wireshark direkt zu verwenden, um den Android-Emulator-Verkehr zu erfassen. Es gibt ein Extcap- Plugin namens androiddump , das dies ermöglicht. Sie müssen eine tcpdumpausführbare Datei im System-Image haben, die auf dem Emulator ausgeführt wird (die meisten aktuellen Images haben sie, getestet mit API 24- und API 27-Images) und adbdals Root auf dem Host ausgeführt werden (einfach ausführen adb root). In der Liste der verfügbaren Schnittstellen in Wireshark (nur Qt-Version, die veraltete GTK + hat sie nicht) oder in der Liste mit tshark -Dmehreren Schnittstellen sollten mehrere Android-Schnittstellen vorhanden sein, mit denen Bluetooth-, Logcat- oder Wifi-Verkehr abgehört werden kann, z.

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

Prof. Moriarty
quelle
2

Sie können http://docs.mitmproxy.org/en/stable/install.html verwenden

Es ist einfach einzurichten und erfordert keine zusätzlichen Anpassungen.

Ich habe verschiedene Tools durchgearbeitet, fand es aber sehr gut und einfach.

Dhiraj Himani
quelle
Ich weiß es mitmproxyvorher nicht. Aber soweit ich sehen kann, ist es HTTP-spezifisch. Aber die Frage des OP ist nicht.
Siu Ching Pong -Asuka Kenji-
1
Das neue Android Studio 3.0 bietet einen Profiler, den Sie verwenden können. Und für mitm bietet es alle Arten von Protokollen, http, https usw. Sie müssen nur den Proxy richtig konfigurieren.
Dhiraj Himani
Ist es verfügbar, um Pakete von Apps zu erfassen, die nicht von mir entwickelt wurden? Und auf einem Emulator eines Drittanbieters wie Nox App Player? Vielen Dank!
Siu Ching Pong -Asuka Kenji-
1
Ja, Sie sollten das mitm-Zertifikat auf Ihrem Emulator / Gerät installiert haben, das von mitm selbst bereitgestellt wird, und Sie können dieses verwenden, um die laufende Anforderung und die entsprechenden Antworten zu überwachen.
Dhiraj Himani
2

Sie können den Netzwerkverkehr von Android Studio aus überwachen. Gehen Sie zu Android Monitor und öffnen Sie die Registerkarte Netzwerk.

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

UPDATE: ⚠️ Android Device Monitor war in Android Studio 3.1 veraltet. Weitere Informationen finden Sie unter https://developer.android.com/studio/profile/monitor

Fivos
quelle
5
Kannst du sagen, wo in Android Studio 1.5 (Windows) die Registerkarte für die detaillierte Netzwerknutzung geöffnet werden soll, wie im Bild im Link gezeigt? Ich erhalte nur eine Grafik, aber keine Details?
Shreyans Jain
Beachten Sie, dass diese Option nur begrenzte Einblicke bietet. Ich konnte meine Probleme nicht lösen, wenn ich herausfinden möchte, warum eine Anfrage abgelehnt wurde, weil Android mir nichts über diese Anfrage erzählt hat. Fiddler ist hier besser geeignet.
Highriser
2

Ich würde vorschlagen, dass Sie Wireshark verwenden .

Schritte:

  1. Installieren Sie Wireshark.
  2. Wählen Sie die Netzwerkverbindung aus, die Sie für die Anrufe verwenden (z. B. wählen Sie das WLAN aus, wenn Sie es verwenden).
  3. Es wird viele Anfragen und Antworten geben, zusätzliche Anwendungen schließen.
  4. Normalerweise sind die Anfragen grün. Wenn Sie Ihre Anfrage erkannt haben, kopieren Sie die Zieladresse und verwenden Sie den Filter oben, ip.dst==52.187.182.185indem Sie die Zieladresse eingeben .

Sie können andere hier erwähnte Filtertechniken verwenden , um bestimmten Datenverkehr zu erhalten.

Ritveak
quelle