2011-11-04 9 views
5

Actualmente necesito depurar las comunicaciones entre mi aplicación y el servidor. He sido capaz de capturar los paquetes con el lanzamiento del emulador con el interruptor tcpdump:¿Cómo puedo obtener una vista en vivo del tcpdump desde el emulador de Android en Wireshark en OSX?

%emulator -tcpdump emulator.cap @MyDroid 

El problema que tengo, es que tengo que apagar el emulador antes de que pueda abrir el archivo emulator.cap en Wireshark. De lo contrario, Wireshark se quejará de que la captura está incompleta. Este proceso es muy, muy lento. Me gustaría poder obtener una vista en vivo del archivo emulator.cap en Wireshark.

Parece que esto debería ser posible usando tubos. Estoy haciendo mi desarrollo en OS   X y he probado Way 1 y Way 2 de esta guía: http://wiki.wireshark.org/CaptureSetup/Pipes.

Al menos me permite ver una instantánea de la captura, pero no obtengo una vista de las actualizaciones en tiempo real. Al hacer clic en el botón Actualizar en Wireshark no se actualizan los paquetes capturados. Tengo que cerrar y volver a abrir Wireshark para obtener una actualización (que es mucho más rápido que relanzar el emulador).

¿Cuáles son los pasos para ver una captura en vivo desde el emulador de Android en Wireshark en OS   X?

Respuesta

2

Comience por crear una tubería con nombre y abra Wireshark para leer de ella. Luego, dirija el tcpdump del emulador para escribir en la misma tubería con nombre. Wireshark parece ser sensible a que las cosas se hagan en este orden, de lo contrario se quejará del formato libcap.

Éstos son los comandos:

%mkfifo /tmp/emulator 
%wireshark -k -i /tmp/emulator & 
%emulator -tcpdump /tmp/emulator @MyDroid 

Actualización:

Después de usar esto para un rato, parece ser frágil. Hice que Wireshark se quejara de un paquete, y la única forma de recuperarse fue haciendo todos estos pasos nuevamente. ¿Hay una solución mejor/más robusta?

Cuestiones relacionadas