Wie überwache ich den von meinem Android-Emulator gesendeten und empfangenen Netzwerkverkehr?
Wie überwache ich den von meinem Android-Emulator gesendeten und empfangenen Netzwerkverkehr?
Antworten:
Es gibt zwei Möglichkeiten, den Netzwerkverkehr direkt von einem Android-Emulator zu erfassen :
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 .
Führen Sie emulator -tcpdump emulator.cap -avd my_avd
diese 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.
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.
avd
befindet sich das?
Es ist auch möglich, den http-Proxy zu verwenden, um http-Anforderungen vom Emulator zu überwachen. Sie können das -http-proxy
Flag ü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 .
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 .
Charles
vorher nicht. Aber soweit ich sehen kann, ist es HTTP-spezifisch. Aber die Frage des OP ist nicht.
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.
Sie können Fiddler verwenden , um den http-Verkehr zu überwachen:
Sie können Fiddler2 auch verwenden hier .
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 tcpdump
ausfü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 adbd
als 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 -D
mehreren 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)
Sie können den Emulator mit dem Befehl starten -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Ich habe HTTP Analyzer verwendet, aber es sollte für alles andere funktionieren. Weitere Details finden Sie hier:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
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.
mitmproxy
vorher nicht. Aber soweit ich sehen kann, ist es HTTP-spezifisch. Aber die Frage des OP ist nicht.
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
Ich würde vorschlagen, dass Sie Wireshark verwenden .
Schritte:
- Installieren Sie Wireshark.
- 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).
- Es wird viele Anfragen und Antworten geben, zusätzliche Anwendungen schließen.
- 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.185
indem Sie die Zieladresse eingeben .
Sie können andere hier erwähnte Filtertechniken verwenden , um bestimmten Datenverkehr zu erhalten.