Mobile

Wireshark, Komm. zwischen Android Emulator und Host

Bender86

Lieutenant
Registriert
Jan. 2007
Beiträge
722
Ich versuche es mal möglichst kurz zu beschreiben und lass dabei ein paar Randinfos weg, da es sonst ein etwas längerer wall-of-text wird. Kurz gesagt:

Ich versuche grade mit Wireshark die Verbindung zwischen einem Android-Emulator und dessen Host-Rechner abzuhören. Ich möchte damit eine Client-Server Anwendung debuggen und denke das geht am besten, wenn ich sehen kann welche Pakete verschickt werden.

Ich habe es anhand einer extrem simplen Anwendung getestet und kann mit Sicherheit sagen: ich kann vom Emulator (Client) Pakete an den Host (Server) schicken, die kommen an und werden auch beantwortet.

Das Problem ist, bei Wireshark sehe ich die Pakete nicht. (Durch Ausgaben in Logcat weiß ich aber, dass sie da sind.) Ich habe Wireshark so eingestellt, dass es auf en0 lauschen soll und als Filter "host 10.0.2.2" eingetragen um nur relevante Pakete zu bekommen. (Der Emulator erreicht den Host über diese Addresse.)

Leider werden mit auf die Weise keine Pakete bei Wireshark angezeigt. Hat das hier schon jemand hinbekommen? Ist en0 das richtige Interface? Hat jemand sonst eine Idee wieso Wireshark die Pakete nicht anzeigt? (Wireshark selber funktioniert, wenn ich zB Webseiten aufrufe kann ich das bei Wireshark nachsehen.)
 
Als Filter habe ich "host 10.0.2.2". Der Emulator erreicht den Host über diese Addresse. Wenn ich es richtig verstanden habe müssten Pakete vom Emulator an den Host dann als Quelle 127.0.0.1 und als Ziel 10.0.2.2 haben.
Ergänzung ()

Ok also ich habe grade festgestellt, dass in den Paketen sowohl als Quelle als auch Ziel 127.0.0.1 steht und sie daher rausgefiltert wurden. Ich hab mal nach dem Port gefiltert und sie so gefunden. Ich muss sagen das verwundert mich ein bisschen, da im Code als Ziel 10.0.2.2 angegeben ist.
 
Handelt es sich hier um einen virtuellen Adapter und werden hier wirklich Daten über die Netzwerkkarte ausgetauscht. Ist ersteres der Fall, so würde ich einmal hinterfragen, ob hier überhaupt ein vollständiges IP Protokoll zum Einsatz kommt. 127.0.0.1 ist nur eine Dummy Adresse, die auf den eigenen PC zeigt. Es sollten nie Pakete an oder von dieser IP verschickt werden.

Normalerweise sollte es so aussehen:
Ein Rechner hat eine oder mehrere LAN Schnittstellen (Wireshark Interface). Jeder dieser Schnittstellen hat eine IP Adresse. Immer, wenn mit einem anderen Rechner kommuniziert wird, dann wird als Empfängeradresse der Zielrechner (in deinem Fall 10.0.2.2) eingetragen. In der Absenderadresse steht die IP Adresse der eigenen LAN Schnittstelle und zwar von der, über die auch das Paket nach außen geschickt wurde.

Weiters bekommst du mit host 10.0.2.2 auch nur IP Pakete. Es werden jedoch eventuell auch andere interessante Pakete durch die Gegend geschickt z.B. ARP Requests, anhand du sehen kannst, ob der jeweilige Rechner grundsätzlich unter der IP erreichbar ist.
Ich mache es normalerweise so, dass ich einfach jeden unnötigen Traffic abschalte und dann ohne Filter alles aufnehme. Bei einem Server, der aktiv genutzt wird, ist das nicht möglich bzw. wenn man per Remote Desktop verbunden ist (viel Traffic), aber sonst bekommt hier deutlich mehr mit.
 
Würde vorschlagen Wireshark auf dem server laufen zu lassen und einfach auf alles eingehende auf port X lauschen.
Filter wäre dann z.b. "TCP port 80" um auf port 80 TCP-Verbindungen zu sniffen.

Wenn Emulator und Server auf der gleichen Maschine laufen, ist Wireshark meist nicht möglich...
 
Zurück
Oben