Android: capture de requêtes HTTP avec un appareil Android non rooté

88

J'ai une application Android qui utilise un pot tiers. La requête HTTP est envoyée du fichier jar tiers au serveur lorsque l'application est en cours d'exécution. J'ai besoin de capturer la requête HTTP envoyée par un fichier jar tiers. Je me demande s'il existe un moyen facile de mettre en œuvre avec un appareil non rooté

Pour démarrer: j'ai essayé de télécharger "proxyDroid" mais il faut un téléphone rooté J'ai également essayé de télécharger "shark for root" avec "shark reader" qui nécessite également un périphérique rooté J'ai essayé de nombreuses autres applications qui pourraient capturer la demande complète mais tout ce dont il a besoin est un appareil enraciné

J'ai besoin de quelque chose de ce que Fiddler / Wireshark peut faire pour Windows. Un analyseur de paquets réseau qui pourrait être facilement intégré à une application Android qui pourrait donner un objet de requête avec tous les champs d'en-tête.

Venkatesh
la source
Est-ce votre "application Android"?
CommonsWare
Oui mon application Android
Venkatesh
Bonjour @Venkatesh, avez-vous déjà réussi à intercepter les requêtes http avec un Android non rooté?
@lalalalalala Non. Je ne pouvais pas y parvenir avec un appareil non rooté.
Venkatesh

Réponses:

77

Vous pouvez installer Charles - un proxy HTTP / moniteur HTTP / proxy inverse qui permet à un développeur de visualiser tout le trafic HTTP et SSL / HTTPS entre sa machine et Internet - sur votre PC ou MAC.

Étapes de configuration:

  • Laissez votre téléphone et votre PC ou MAC dans un même LAN
  • Lancez Charles que vous avez installé (le port proxy par défaut est 8888)
  • Configurez la configuration wifi de votre téléphone: définissez l'ip du délégué sur l'ip de votre PC ou MAC, port du délégué sur 8888
  • Lancez votre application sur votre téléphone. Et surveillez les requêtes http sur Charles.
SFeng
la source
4
ce tutoriel a bien fonctionné: jaanus.com/blog/2012/02/12/…
Lionel
17
Malheureusement, c'est un shareware.
flawyte
1
Vous voudrez peut-être essayer la suite burp pour faire le même travail. Il est très puissant et gratuit: portswigger.net/burp
gerodim
Existe-t-il un outil pour faire de même avec le trafic de socket Web? Je veux dire sur Android lui-même. (Je connais WireShark / Fiddler pour PC)
Amol M Kulkarni
Qu'est-ce que pour Android
mohsen
17

Je viens d'installer Drony, ce n'est pas un shareware et il ne nécessite pas de root sur un téléphone portable avec Android 3.x ou supérieur

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

Il intercepte les requêtes et est affiché sur un LOG

Mauricio Gracia Gutierrez
la source
C'est ce que je recherche, mais je veux un code source exact pour cette application, pouvez-vous publier un lien pour le code source pour Android?
Smit.Satodia
2
@ Smit.Satodia Je ne sais pas s'ils partagent / publient le code source, si quelqu'un le trouve, n'hésitez pas à poster le lien en tant que commentaire
Mauricio Gracia Gutierrez
2
Le code source peut être trouvé ici: github.com/SuppSandroB/sandrop Il était à l'origine hébergé sur Google Code ici: code.google.com/archive/p/sandrop
GabLeRoux
1
@JanWytze si vous contactez les développeurs, ils pourront peut-être vous aider.
Mauricio Gracia Gutierrez
17

Il y a plusieurs façons de le faire, mais l'une d'entre elles est le violoniste

Configuration de Fiddler

  1. Aller aux options
  2. Dans l' onglet HTTPS , activez Capturer les connexions HTTPS et décrypter le trafic HTTPS
  3. Dans l' onglet Connexions , activez Autoriser les ordinateurs distants à se connecter
  4. Redémarrez Fiddler

Configuration Android

  1. Connectez-vous au même réseau
  2. Modifier les paramètres réseau
  3. Ajoutez un proxy pour la connexion avec l'adresse IP (ou le nom d'hôte) de votre PC et le port de violoniste par défaut (8888 / vous pouvez changer cela dans les paramètres)

Vous pouvez maintenant voir le journal complet de votre appareil dans Fiddler

Vous pouvez également trouver une instruction complète ici

Arash Hatami
la source
2
La version bêta de Fiddler est disponible sur macOS (reposant sur mono). C'est une bonne nouvelle si vous n'avez pas de PC.
MacKentoch
Merci mais je veux dire tous les ordinateurs dans cette réponse. PC / Laptop / etc ... :) @MacKentoch
Arash Hatami
6

Vous pouvez utiliser Fiddler comme webdebugger http://www.telerik.com/fiddler/web-debugging

Fiddler est un outil de débogage du logiciel telerik, qui vous aide à intercepter chaque requête lancée depuis votre machine.

Citoyen Ken
la source
4
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses aux liens uniquement peuvent devenir invalides si la page liée change
Zohar
5

Nous sommes en 2020 maintenant, pour la dernière solution, vous pouvez utiliser Burp Suite pour renifler le trafic https sans rooter votre appareil Android.

Pas:

  1. Installez Burp Suite

  2. Activer le proxy

  3. Importez la certification dans votre téléphone Android

  4. Changez votre configuration Wifi pour écouter le proxy

  5. Profit!

J'ai écrit le tutoriel complet et la capture d'écran sur la façon de le faire ici: https://www.yodiw.com/monitor-android-network-traffic-with-burp/

yodi
la source
Ce serait bien de copier les données du site pour répondre ici. Puisque votre site peut tomber en panne. Aussi SO encourage les citations plutôt que les liens pour cette même raison. Autre que ce super tutoriel.
Mark le
Bien que pour être honnête, il aurait peut-être été préférable d'améliorer simplement stackoverflow.com/a/39684919/5506988 plutôt que d'écrire une autre "réponse" .... Quoi qu'il en soit, excellent travail.
Mark
4

vous pouvez utiliser burp-suite. suivez la procédure ci-dessous.

Configurer l'écouteur Burp Proxy

Dans Burp, allez dans l'onglet «Proxy» puis l'onglet «Options». Dans la section «Proxy Listeners», cliquez sur le bouton «Add».

Dans l'onglet "Liaison", dans la case "Lier au port:", saisissez un numéro de port qui n'est pas actuellement utilisé, par exemple "8082". Sélectionnez ensuite l'option "Toutes les interfaces" et cliquez sur "OK".

Configurez votre appareil pour utiliser le proxy

Sur votre appareil Android, accédez au menu "Paramètres".

Si votre appareil n'est pas déjà connecté au réseau sans fil que vous utilisez, activez le bouton «Wi-Fi» et appuyez sur le bouton «Wi-Fi» pour accéder au menu «Wi-Fi».

Dans le tableau "Réseaux Wi-Fi", recherchez votre réseau et appuyez dessus pour afficher le menu de connexion.

Appuyez sur «Se connecter». Si vous avez configuré un mot de passe, saisissez-le et continuez.

Une fois que vous êtes connecté, maintenez le bouton réseau enfoncé pour afficher le menu contextuel. Appuyez sur «Modifier la configuration du réseau».

Assurez-vous que la case «Afficher les options avancées» est cochée.

Changez les «Paramètres proxy» en «Manuel» en appuyant sur le bouton.

Entrez ensuite l'adresse IP de l'ordinateur exécutant Burp dans le «Proxy hostname». Entrez le numéro de port configuré dans la section «Proxy Listeners» précédemment, dans cet exemple «8082». Appuyez sur «Save».

Tester la configuration

Dans Burp, allez dans l'onglet "Proxy Intercept", et assurez-vous que l'interception est "on" (si le bouton dit "Intercept is off" puis cliquez dessus pour basculer le statut d'interception).

Ouvrez le navigateur sur votre appareil Android et accédez à une page Web HTTP (vous pouvez visiter une page Web HTTPS lorsque vous avez installé le certificat CA de Burp sur votre appareil Android.)

La requête doit être interceptée dans Burp.

Vis
la source
2

SandroProxy semble être meilleur que Drony (du même développeur): vous pouvez (mais vous n'êtes pas obligé) de visualiser et d'analyser facilement le trafic dans le navigateur de votre PC.

Devrait également fonctionner dans les émulateurs.

Nicolai Weitkemper
la source
1

Définissez un https://mitmproxy.org/ comme proxy sur un même LAN

  • Open source
  • Construit en python 3
  • Installable via pip
AlexisCaffa
la source