Comment surveiller le trafic réseau envoyé et reçu de mon émulateur Android?
Comment surveiller le trafic réseau envoyé et reçu de mon émulateur Android?
Réponses:
Il existe deux façons de capturer le trafic réseau directement à partir d'un émulateur Android:
Copiez et exécutez un binaire tcpdump compatible ARM sur l'émulateur, en écrivant la sortie sur la carte SD, peut-être (par exemple tcpdump -s0 -w /sdcard/emulator.cap
).
Exécutez emulator -tcpdump emulator.cap -avd my_avd
pour écrire tout le trafic de l'émulateur dans un fichier local sur votre PC
Dans les deux cas, vous pouvez ensuite analyser le fichier pcap avec tcpdump ou Wireshark comme d'habitude.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
avertissement, ajoutez -engine classique à votre commande comme ceci: emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Cela forcera le moteur d'émulation obsolète, mais devrait fonctionner jusqu'à ce qu'ils résolvent le problème.
avd
se trouve le?
Il est également possible d'utiliser le proxy http pour surveiller les requêtes http de l'émulateur. Vous pouvez passer le -http-proxy
drapeau lors du démarrage d'un nouvel émulateur pour définir le proxy (exemple burp ) pour surveiller le trafic Android. Exemple d'utilisation ./emulator -http-proxy localhost:8080 -avd android2.2
. Notez que dans mon exemple, j'utilise Burp, et il écoute le port 8080. Plus d'informations peuvent être trouvées ici .
Pour OS X, vous pouvez utiliser Charles , c'est simple et facile à utiliser.
Pour plus d'informations, veuillez consulter le billet de blog Android Emulator et Charles Proxy .
Charles
avant. Mais pour autant que je puisse voir, c'est spécifique à HTTP. Mais la question du PO ne l'est pas.
Oui, WireShark fonctionnera.
Je ne pense pas qu'il existe un moyen facile de filtrer uniquement le trafic d'émulateur, car il provient de la même adresse IP src.
La meilleure façon serait peut-être de configurer un environnement VMware très nu et d'exécuter uniquement l'émulateur là-dedans, du moins de cette façon, il n'y aurait pas trop de trafic en arrière-plan.
Il est désormais possible d'utiliser Wireshark directement pour capturer le trafic de l'émulateur Android. Il existe un plugin extcap appelé androiddump qui le rend possible. Vous devez avoir un tcpdump
exécutable dans l'image système en cours d'exécution sur l'émulateur (la plupart des images actuelles l'ont, testé avec les images API 24 et API 27) et adbd
s'exécutant en tant que root sur l'hôte (exécutez simplement adb root
). Dans la liste des interfaces disponibles dans Wireshark (version Qt uniquement, le GTK + obsolète ne l'a pas) ou la liste affichée avec tshark -D
il devrait y avoir plusieurs interfaces Android permettant de renifler le trafic Bluetooth, Logcat ou Wifi, par exemple:
android-wifi-tcpdump-emulator-5554 (émulateur Android WiFi Android_SDK_built_for_x86-5554)
Vous pouvez démarrer l'émulateur avec la commande -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. J'ai utilisé HTTP Analyzer, mais cela devrait fonctionner pour tout le reste. Plus de détails peuvent être trouvés ici:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
Vous pouvez utiliser http://docs.mitmproxy.org/en/stable/install.html
Il est facile à installer et ne nécessitera aucune modification supplémentaire.
Je passe par divers outils mais je trouve que c'est vraiment bon et facile.
mitmproxy
avant. Mais pour autant que je puisse voir, c'est spécifique à HTTP. Mais la question du PO ne l'est pas.
Vous pouvez surveiller le trafic réseau depuis Android Studio. Accédez à Moniteur Android et ouvrez l'onglet Réseau.
http://developer.android.com/tools/debugging/ddms.html
MISE À JOUR: ⚠️ Android Device Monitor est obsolète dans Android Studio 3.1. En savoir plus sur https://developer.android.com/studio/profile/monitor
Je vous suggère d'utiliser Wireshark .
Pas:
- Installez Wireshark.
- Sélectionnez la connexion réseau que vous utilisez pour les appels (par exemple, sélectionnez le Wifi si vous l'utilisez)
- Il y aura de nombreuses demandes et réponses, fermer les applications supplémentaires.
- Habituellement, les demandes sont de couleur verte, une fois que vous avez repéré votre demande, copiez l'adresse de destination et utilisez le filtre en haut en tapant
ip.dst==52.187.182.185
en mettant l'adresse de destination.
Vous pouvez utiliser d'autres techniques de filtrage mentionnées ici pour obtenir un trafic spécifique.