Como monitoro o tráfego de rede enviado e recebido do meu emulador Android?
127
Há duas maneiras de capturar o tráfego de rede diretamente de um emulador do Android:
Copie e execute um binário tcpdump compatível com ARM no emulador, gravando a saída no cartão SD, talvez (por exemplo tcpdump -s0 -w /sdcard/emulator.cap
).
Corra emulator -tcpdump emulator.cap -avd my_avd
para gravar todo o tráfego do emulador em um arquivo local no seu PC
Nos dois casos, você pode analisar o arquivo pcap com tcpdump ou Wireshark normalmente.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
aviso, adicionar -Engine clássico para o seu comando como este:emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Isso forçará o mecanismo do emulador obsoleto, mas deve funcionar até que eles solucionem o problema.avd
está localizado?Também é possível usar o proxy http para monitorar solicitações http do emulador. Você pode transmitir
-http-proxy
sinalizador ao iniciar um novo emulador para definir proxy ( arroto de exemplo ) para monitorar o tráfego do Android. Exemplo de uso./emulator -http-proxy localhost:8080 -avd android2.2
. Observe que, no meu exemplo, estou usando o Burp e ele está ouvindo a porta 8080. Mais informações podem ser encontradas aqui .fonte
Para o OS X, você pode usar o Charles , é simples e fácil de usar.
Para obter mais informações, consulte a publicação do blog Emulador do Android e Charles Proxy .
fonte
Charles
antes. Mas, tanto quanto eu posso ver, é específico de HTTP. Mas a pergunta do OP não é.Uma versão atual do Android Studio não aplicava corretamente o
-tcpdump
argumento. Ainda consegui capturar um despejo passando o parâmetro relacionado ao qemu da seguinte maneira:fonte
Sim, o wireshark funcionará.
Eu não acho que exista uma maneira fácil de filtrar apenas o tráfego do emulador, pois ele vem do mesmo IP src.
Talvez a melhor maneira seja configurar um ambiente VMware muito simples e executar apenas o emulador, pelo menos dessa maneira não haveria muito tráfego em segundo plano.
fonte
Você pode usar o Fiddler para monitorar o tráfego http:
http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/
Você também pode usar o Fiddler2 aqui .
fonte
10.0.2.2
o endereço IP da máquina host nos emuladores do Android, sem a necessidade de descobrir o que é.Agora é possível usar o Wireshark diretamente para capturar o tráfego do emulador do Android. Existe um plugin extcap chamado androiddump, que torna possível. Você precisa ter um
tcpdump
executável na imagem do sistema executando no emulador (a maioria das imagens atuais possui, testado com imagens API 24 e API 27) eadbd
executando como raiz no host (basta executaradb root
). Na lista de interfaces disponíveis no Wireshark (apenas na versão Qt, o GTK + obsoleto não o possui) ou na lista mostrada comtshark -D
ele deve haver várias interfaces Android que permitem detectar o tráfego Bluetooth, Logcat ou Wifi, por exemplo:android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)
fonte
Você pode iniciar o emulador com o comando
-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Eu usei o HTTP Analyzer, mas deve funcionar para qualquer outra coisa. Mais detalhes podem ser encontrados aqui: http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.htmlfonte
Você pode usar http://docs.mitmproxy.org/en/stable/install.html
É fácil de configurar e não requer ajustes extras.
Eu passo por várias ferramentas, mas achei que era realmente bom e fácil.
fonte
mitmproxy
antes. Mas, tanto quanto eu posso ver, é específico de HTTP. Mas a pergunta do OP não é.Você pode monitorar o tráfego de rede no Android Studio. Vá para o Android Monitor e abra a guia Rede.
http://developer.android.com/tools/debugging/ddms.html
ATUALIZAÇÃO: ⚠️ O Android Device Monitor foi descontinuado no Android Studio 3.1. Veja mais em https://developer.android.com/studio/profile/monitor
fonte
Eu sugiro que você use o Wireshark .
Você pode usar outras técnicas de filtragem mencionadas aqui para obter tráfego específico.
fonte