Emulador do Android: como monitorar o tráfego de rede?


Respostas:


104

Há duas maneiras de capturar o tráfego de rede diretamente de um emulador do Android:

  1. 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).

  2. Corra emulator -tcpdump emulator.cap -avd my_avdpara 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.


Portanto, não é em tempo real / online? Quero dizer, os pacotes só podem ser analisados ​​no final?
Fikr4n

No primeiro caso, você pode analisar via stdout no dispositivo em vez de gravar em um arquivo. No segundo caso, você poderá transmitir / seguir o arquivo como está escrito. Ou você pode capturar o tráfego de rede na máquina host, e não no emulador.
Christopher Orr

Eu descobri que os emuladores que eu já uso têm o tcpdump instalado e o comando nº 1 funciona sem a instalação de um. Você também pode executá-lo com "adb -e shell tcpdump -s0 -w /sdcard/emulator.cap".
Les

2
Se você estiver usando segunda solução e você está recebendo 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.
lagoman

onde avdestá localizado?
user3806649

20

Também é possível usar o proxy http para monitorar solicitações http do emulador. Você pode transmitir -http-proxysinalizador 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 .


2
E sobre o tráfego https
pee2pee


6

Uma versão atual do Android Studio não aplicava corretamente o -tcpdumpargumento. Ainda consegui capturar um despejo passando o parâmetro relacionado ao qemu da seguinte maneira:

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd

5

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.


Boa sugestão, mas é difícil fazer com que um emulador seja executado em cima de uma VM. Você conseguiu que isso funcionasse?
21816 MikeSchem

Em quais problemas você se deparou? Eu não fiz isso sozinho, mas não consigo imaginar que haveria algum problema.
Bitdivision

No meu caso, os pedidos enviados estavam em verde, tudo o que fiz foi desligar outros navegadores e consegui identificar as linhas verdes agradáveis. Depois de localizar a solicitação, copie o endereço de destino e você poderá usá-lo no filtro, colocando ip.dst == "endereço IP que você copiou" e vendo apenas as solicitações relevantes.
Ritveak 30/01


4

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 tcpdumpexecutável na imagem do sistema executando no emulador (a maioria das imagens atuais possui, testado com imagens API 24 e API 27) e adbdexecutando como raiz no host (basta executar adb 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 com tshark -Dele 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)



2

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.


Eu não sei mitmproxyantes. Mas, tanto quanto eu posso ver, é específico de HTTP. Mas a pergunta do OP não é.
você precisa saber é o seguinte

1
Novo Android Studio 3.0 fornece criador de perfil, você pode usá-lo. E para o mitm, ele fornece todos os tipos de protocolos, http, https, etc. Você só precisa configurar o proxy corretamente.
Dhiraj Himani

Está disponível para capturar pacotes de aplicativos não desenvolvidos por mim? E em um emulador de terceiros, como o Nox App Player? Obrigado!
Siu Ching Pong -Asuka Kenji-

1
Sim, você deve ter o certificado mitm instalado no seu emulador / dispositivo, fornecido pelo próprio mitm, e você pode usá-lo para assistir à solicitação em andamento e respostas correspondentes.
Dhiraj Himani

2

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


5
você pode dizer de onde abrir a guia de uso da rede de detalhes no android studio 1.5 (windows), como mostra a imagem no link, estou recebendo apenas um gráfico, mas não detalhes?
Shreyans Jain

Esteja ciente de que esta opção fornece informações limitadas. Não consegui resolver meus problemas onde quero descobrir por que uma solicitação foi negada, porque o Android não me disse nada sobre essa solicitação. O violinista é mais adequado aqui.
Highriser

2

Eu sugiro que você use o Wireshark .

Passos:

  1. Instale o Wireshark.
  2. Selecione a conexão de rede que você está usando para as chamadas (por exemplo, selecione o Wifi, se estiver usando)
  3. Haverá muitos pedidos e respostas, feche aplicativos extras.
  4. Normalmente, as solicitações estão na cor verde. Depois de identificar sua solicitação, copie o endereço de destino e use o filtro por cima, digitando ip.dst==52.187.182.185, colocando o endereço de destino.

Você pode usar outras técnicas de filtragem mencionadas aqui para obter tráfego específico.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.