¿Cómo controlo el tráfico de red enviado y recibido desde mi emulador de Android?
¿Cómo controlo el tráfico de red enviado y recibido desde mi emulador de Android?
Respuestas:
Hay dos formas de capturar el tráfico de red directamente desde un emulador de Android:
Copie y ejecute un binario tcpdump compatible con ARM en el emulador, escribiendo la salida en la tarjeta SD, tal vez (por ejemplo tcpdump -s0 -w /sdcard/emulator.cap
).
Ejecute emulator -tcpdump emulator.cap -avd my_avd
para escribir todo el tráfico del emulador en un archivo local en su PC
En ambos casos, puede analizar el archivo pcap con tcpdump o Wireshark como de costumbre.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
la advertencia, agregue -motor clásico a su orden como la siguiente: emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Esto forzará un motor de emulador obsoleto, pero debería funcionar hasta que solucionen el problema.
avd
se encuentra el
También es posible usar el proxy http para monitorear las solicitudes http del emulador. Puede pasar la -http-proxy
bandera al iniciar un nuevo emulador para configurar el proxy (ejemplo eructo ) para monitorear el tráfico de Android. Ejemplo de uso ./emulator -http-proxy localhost:8080 -avd android2.2
. Tenga en cuenta que en mi ejemplo estoy usando Burp, y está escuchando el puerto 8080. Puede encontrar más información aquí .
Para OS X puede usar Charles , es simple y fácil de usar.
Para obtener más información, eche un vistazo a la publicación del blog Emulador de Android y Charles Proxy .
Charles
antes. Pero por lo que puedo ver, es específico de HTTP. Pero la pregunta del OP no lo es.
Sí, Wirehark funcionará.
No creo que haya una manera fácil de filtrar únicamente el tráfico del emulador, ya que proviene de la misma IP src.
Quizás la mejor manera sería configurar un entorno VMware muy simple y solo ejecutar el emulador allí, al menos de esa manera no habría demasiado tráfico de fondo.
Ahora es posible usar Wireshark directamente para capturar el tráfico del emulador de Android. Hay un complemento extcap llamado androiddump que lo hace posible. Debe tener un tcpdump
archivo ejecutable en la imagen del sistema que se ejecute en el emulador (la mayoría de las imágenes actuales lo tienen, probado con imágenes API 24 y API 27) y que se adbd
ejecuta como raíz en el host (solo ejecutar adb root
). En la lista de las interfaces disponibles en Wireshark (solo la versión Qt, el GTK + obsoleto no lo tiene) o la lista que se muestra con tshark -D
debería haber varias interfaces de Android que permitan detectar el tráfico de Bluetooth, Logcat o Wifi, por ejemplo:
android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)
Puede iniciar el emulador con el comando -avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Usé HTTP Analyzer, pero debería funcionar para cualquier otra cosa. Más detalles se pueden encontrar aquí:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
Puede usar http://docs.mitmproxy.org/en/stable/install.html
Es fácil de configurar y no requerirá ajustes adicionales.
Reviso varias herramientas, pero me pareció muy bueno y fácil.
mitmproxy
antes. Pero por lo que puedo ver, es específico de HTTP. Pero la pregunta del OP no lo es.
Puede monitorear el tráfico de red desde Android Studio. Vaya a Monitor de Android y abra la pestaña Red.
http://developer.android.com/tools/debugging/ddms.html
ACTUALIZACIÓN: ⚠️ Android Device Monitor quedó en desuso en Android Studio 3.1. Ver más en https://developer.android.com/studio/profile/monitor
Te sugiero que uses Wireshark .
Pasos:
- Instala Wireshark.
- Seleccione la conexión de red que está usando para las llamadas (por ejemplo, seleccione el Wifi si lo está usando)
- Habrá muchas solicitudes y respuestas, cerrar aplicaciones adicionales.
- Por lo general, las solicitudes son de color verde, una vez que detecte su solicitud, copie la dirección de destino y use el filtro en la parte superior escribiendo escribiendo
ip.dst==52.187.182.185
la dirección de destino.
Puede utilizar otras técnicas de filtrado mencionadas aquí para obtener tráfico específico.