Android: captura de solicitações HTTP com dispositivo Android sem acesso root

88

Eu tenho um aplicativo Android que usa um jar de terceiros nele. A solicitação Http é enviada de jar de terceiros para o servidor quando o aplicativo está em execução. Preciso capturar a solicitação HTTP enviada de jar de terceiros. Gostaria de saber se existe uma maneira fácil de implementar com dispositivo não rooteado

Para iniciar: tentei baixar "proxyDroid", mas precisa de um telefone com root. Também tentei baixar "shark for root" com "shark reader", que também precisa de um dispositivo com root. Tentei muitos outros aplicativos que poderiam capturar a solicitação completa, mas tudo o que precisa é dispositivo enraizado

Preciso de algo que fiddler / Wirehark possa fazer pelo Windows. Um analisador de pacotes de rede que pode ser facilmente integrado ao aplicativo Android que pode fornecer um objeto de solicitação com todos os campos de cabeçalho nele.

Venkatesh
fonte
Este é o seu "aplicativo Android"?
CommonsWare
Sim, meu aplicativo Android
Venkatesh
Olá @Venkatesh, você já conseguiu interceptar solicitações HTTP com o Android não rooteado?
@lalalalalala Nope. Não consegui fazer isso com um dispositivo sem acesso root.
Venkatesh

Respostas:

77

Você pode instalar Charles - um proxy HTTP / monitor HTTP / Proxy reverso que permite ao desenvolvedor visualizar todo o tráfego HTTP e SSL / HTTPS entre sua máquina e a Internet - em seu PC ou MAC.

Etapas de configuração:

  • Deixe seu telefone e PC ou MAC em uma mesma LAN
  • Inicie o Charles que você instalou (a porta proxy padrão é 8888)
  • Defina a configuração wi-fi do seu telefone: defina o ip do delegado para o seu PC ou ip do MAC, porta do delegado para 8888
  • Lance seu aplicativo em seu telefone. E monitorar solicitações de http no Charles.
SFeng
fonte
4
este tutorial funcionou bem: jaanus.com/blog/2012/02/12/…
Lionel
17
Infelizmente, é um shareware.
flawyte
1
Você pode querer tentar uma suíte de arrotar alternativamente para fazer o mesmo trabalho. É muito poderoso e gratuito: portswigger.net/burp
gerodim
Existe alguma ferramenta para fazer o mesmo com o tráfego de socket da web? Quero dizer, no próprio Android. (Eu conheço Wirehark / Fiddler para PC)
Amol M Kulkarni
O que é para Android
mohsen
17

Acabei de instalar o Drony, não é shareware e não requer root no celular com Android 3.x ou superior

https://play.google.com/store/apps/details?id=org.sandroproxy.drony

Ele intercepta as solicitações e são mostradas em um LOG

Mauricio Gracia Gutierrez
fonte
Isso é o que estou procurando, mas quero o código fonte exato para este aplicativo. Você pode postar um link para o código-fonte do Android?
Smit.Satodia
2
@ Smit.Satodia Não sei se compartilham / publicam o código-fonte, se alguém achar fique à vontade para postar o link como um comentário
Mauricio Gracia Gutierrez
2
O código-fonte pode ser encontrado aqui: github.com/SuppSandroB/sandrop Ele foi originalmente hospedado no Google Code aqui: code.google.com/archive/p/sandrop
GabLeRoux
1
@JanWytze se você entrar em contato com os desenvolvedores, talvez eles possam ajudá-lo com isso.
Mauricio Gracia Gutierrez
17

Há muitas maneiras de fazer isso, mas uma delas é violinista

Configuração Fiddler

  1. Vá para opções
  2. Na guia HTTPS , ative Capturar conexões HTTPS e descriptografar o tráfego HTTPS
  3. Na guia Conexões , ative Permitir que computadores remotos se conectem
  4. Reiniciar violinista

Configuração Android

  1. Conecte-se à mesma rede
  2. Modificar configurações de rede
  3. Adicionar proxy para conexão com o endereço IP do seu PC (ou nome de host) e a porta do violinista padrão (8888 / você pode alterar isso nas configurações)

Agora você pode ver o registro completo do seu dispositivo no Fiddler

Além disso, você pode encontrar uma instrução completa aqui

Arash Hatami
fonte
2
O Fiddler beta está disponível no macOS (contando com mono). Esta é uma boa notícia se você não tiver um PC.
MacKentoch
Obrigado, mas quero dizer todos os computadores nesta resposta. PC / Laptop / etc ... :) @MacKentoch
Arash Hatami
6

Você pode usar o fiddler como webdebugger http://www.telerik.com/fiddler/web-debugging

Fiddler é uma ferramenta de depuração do software telerik, que ajuda a interceptar todas as solicitações iniciadas em sua máquina.

Cidadão Ken
fonte
4
Embora este link possa responder à pergunta, é melhor incluir as partes essenciais da resposta aqui e fornecer o link para referência. Respostas somente com link podem se tornar inválidas se a página do link mudar
zohar
5

É 2020 agora, para a solução mais recente, você pode usar o Burp Suite para farejar o tráfego https sem fazer o root em seu dispositivo Android.

Passos:

  1. Instale Burp Suite

  2. Habilitar Proxy

  3. Importe a certificação em seu telefone Android

  4. Altere sua configuração de Wifi para ouvir proxy

  5. Lucro!

Eu escrevi o tutorial completo e a captura de tela sobre como fazer isso aqui: https://www.yodiw.com/monitor-android-network-traffic-with-burp/

Yodi
fonte
Seria bom copiar os dados do site para sua resposta aqui. Uma vez que seu site pode cair. O SO também incentiva a citação em vez de links pelo mesmo motivo. Além daquele ótimo tutorial.
Marcos
Embora, para ser justo, pode ter sido melhor apenas melhorar stackoverflow.com/a/39684919/5506988 do que escrever outra "resposta" ... De qualquer forma, ótimo trabalho.
Marcos
4

você pode usar o pacote de arroto. siga o procedimento abaixo.

Configurar o ouvinte Burp Proxy

No Burp, vá para a guia “Proxy” e depois para a guia “Opções”. Na seção “Ouvintes de proxy”, clique no botão “Adicionar”.

Na guia "Vinculação", na caixa “Vincular à porta:”, digite um número de porta que não esteja em uso atualmente, por exemplo, “8082”. Em seguida, selecione a opção “Todas as interfaces” e clique em "OK".

Configure o seu dispositivo para usar o proxy

Em seu dispositivo Android, vá para o menu “Configurações”.

Se o seu dispositivo ainda não estiver conectado à rede sem fio que você está usando, ative o botão "Wi-Fi" e toque no botão "Wi-Fi" para acessar o menu "Wi-Fi".

Na tabela "Redes Wi-Fi", encontre sua rede e toque nela para abrir o menu de conexão.

Toque em "Conectar". Se você configurou uma senha, digite-a e continue.

Assim que estiver conectado, mantenha pressionado o botão de rede para abrir o menu de contexto. Toque em “Modificar configuração de rede”.

Certifique-se de que a caixa “Mostrar opções avançadas” esteja marcada.

Altere as “Configurações de proxy” para “Manual” tocando no botão.

Em seguida, insira o IP do computador executando o Burp no “Nome do host proxy”. Insira o número da porta configurada na seção “Ouvintes Proxy” anteriormente, neste exemplo “8082” .Toque em "Salvar".

Teste a configuração

No Burp, vá para a guia "Interceptação de proxy" e verifique se a interceptação está "ativada" (se o botão disser "Interceptação desativada", clique nele para alternar o status de interceptação).

Abra o navegador em seu dispositivo Android e vá para uma página da web HTTP (você pode visitar uma página da web HTTPS quando tiver instalado o certificado CA do Burp em seu dispositivo Android.)

A solicitação deve ser interceptada no Burp.

Vis
fonte
2

SandroProxy parece ser melhor que Drony (do mesmo desenvolvedor): você pode (mas não precisa) visualizar e analisar convenientemente o tráfego no navegador do seu PC.

Deve funcionar em emuladores também.

Nicolai Weitkemper
fonte
1

Defina um https://mitmproxy.org/ como proxy na mesma LAN

  • Código aberto
  • Construído em python 3
  • Instalável via pip
AlexisCaffa
fonte