Déboguer un iPhone depuis un Mac

Ce guide va d'un téléphone où Chute est installé à une fenêtre sur Mac qui montre les requêtes déchiffrées de ce téléphone, avec les corps de requête et de réponse, prêtes à filtrer et à exporter. Il enchaîne des choses qui ont leurs propres pages de référence — le CA, la liste d'hôtes, l'enregistrement, le canal de contrôle, Dashboard — dans l'ordre où on les fait vraiment, et dit à chaque étape ce que vous devriez voir avant de continuer.

Il vous faut :

  • Chute iOS sur le téléphone, avec une licence. Le déchiffrement HTTPS et la capture des corps sont sous licence sur iPhone ; sans licence, tout ce qui suit se connecte quand même, mais les lignes HTTPS restent opaques et les onglets de données ne peuvent pas être sélectionnés. Voir Licence et activation.
  • Chute Dashboard sur le Mac — gratuit, sans licence.
  • Un câble USB (recommandé : rien à ouvrir sur le réseau, et cela fonctionne en cellulaire), ou le téléphone et le Mac sur le même Wi-Fi.

Si vous préférez ne rien installer sur le Mac, la Console web montre les mêmes connexions, corps et réécritures dans un navigateur, et n'a besoin que d'external-http-controller sur le téléphone. Les étapes 1 à 3 ci-dessous s'appliquent telles quelles ; à partir de l'étape 4, suivez plutôt Ouvrir la console web.

1. Installer et approuver le CA

Sur le téléphone, dans l'éditeur de configuration : MITM → Configurer le CA → Générer un nouveau certificat CA, puis Installer le certificat CA dans le système, puis l'approuver sous Réglages → Général → Informations → Réglages des certificats. La procédure complète, y compris l'étape que tout le monde oublie, est sur la page Déchiffrement HTTPS.

Vous devriez voir : la page de certificat indique Certificat CA approuvé. Si elle indique non approuvé, l'interrupteur de confiance des Réglages des certificats est encore désactivé — rien de ce qui suit ne fonctionnera tant qu'il ne l'est pas.

2. Dire quels hôtes déchiffrer

Chute ne déchiffre que les hôtes que vous listez. Dans la section MitM de l'éditeur (celle avec Configurer le CA), ajoutez les hôtes que vous voulez voir. Commencez étroit — l'hôte de l'API de l'app que vous déboguez — plutôt que * : chaque hôte déchiffré coûte du CPU sur le téléphone, et certaines apps épinglent leurs certificats et cassent quand on les déchiffre. *.apple.com est à exclure dès le départ.

[MITM]
enable = true
hostname = api.example.com, *.example.net, -*.apple.com

La grammaire — ports, exclusions -, restriction /path — est sur la page Déchiffrement HTTPS. Vous pourrez aussi ajouter et retirer des hôtes plus tard depuis le panneau Règles MitM de Dashboard en observant l'effet, puis copier ceux qui marchent dans la configuration.

3. Activer le déchiffrement et l'enregistrement

Sur le Panneau de configuration du téléphone, deux interrupteurs :

  • MitM — déchiffrement activé, pour les hôtes de l'étape 2.
  • Capture du trafic — enregistrer les corps de requête et de réponse (le réglage replica). Sans lui, Dashboard montre chaque connexion avec sa règle et sa politique, mais aucune donnée.

Les deux peuvent aussi être basculés plus tard depuis la barre d'outils de Dashboard, ce n'est donc pas un problème de les oublier maintenant. Aucun ne survit à un redémarrage s'il n'est pas dans la configuration (replica = true dans [General], enable = true dans [MITM]), et sur iPhone les deux sont des fonctionnalités sous licence que le moteur refuse sans licence, quoi que dise la configuration.

4. Laisser Dashboard se connecter

Dans l'éditeur de configuration : Contrôleur externe.

  1. Activez Accès au contrôleur externe — sa note de bas de section indique Autoriser Chute Dashboard/Chute CLI à se connecter.
  2. Entrez un Port (n'importe quel port libre ; 6170 si vous n'avez pas de préférence) et un Mot de passe à vous.
  3. Autoriser l'accès depuis le Wi-Fi : laissez-le désactivé pour l'USB. Ne l'activez que si vous vous connecterez par Wi-Fi — il ouvre l'écouteur à quiconque sur ce réseau a le mot de passe.
  4. Enregistrez, et démarrez (ou redémarrez) le tunnel.

Vous devriez voir : le panneau de configuration affiche Port d'accès externe : 6170 (votre port). Si la ligne manque, le tunnel n'exécute pas la configuration enregistrée — redémarrez-le.

5. Connecter Dashboard

Branchez le téléphone au Mac et, si le téléphone le demande, touchez Se fier à cet ordinateur. Ouvrez Chute Dashboard ; dans la fenêtre Nouveau tableau de bord, choisissez Se connecter via USB, sélectionnez le téléphone dans Appareil :, saisissez le Port de l'étape 4 et le Mot de passe, puis connectez.

Par Wi-Fi à la place : Se connecter à une machine distante, avec Hôte = l'adresse du téléphone (Réglages → Wi-Fi → ⓘ, Adresse IP), et les mêmes port et mot de passe.

Vous devriez voir : une nouvelle fenêtre Dashboard, et sa liste Actif qui se remplit à mesure que le téléphone établit des connexions. Utilisez le téléphone quelques secondes si elle est vide. Deux choses peuvent mal tourner ici : Mot de passe incorrect, et un téléphone injoignable (mauvaise adresse, accès Wi-Fi désactivé, tunnel arrêté) — la fenêtre s'ouvre quand même, et en Wi-Fi elle finit sur Connexion fermée, tandis qu'en USB elle reste sur Connexion… et réessaie jusqu'à ce que le téléphone réponde. La page Dashboard a les détails.

6. Vérifier les interrupteurs de la barre d'outils

En haut de la liste Actif, les deux interrupteurs de l'étape 3 tels que Dashboard les voit :

  • Capture du trafic devrait afficher Désactiver la capture du trafic — l'enregistrement est actif. S'il affiche Activer la capture du trafic, cliquez dessus.
  • Activer MitM (N règles) devrait afficher Désactiver MitM (N règles) — le déchiffrement est actif, et N est le nombre d'hôtes de l'étape 2. Si le bouton ne porte aucun compte « (N règles) », la liste d'hôtes n'a pas atteint le téléphone : vérifiez l'étape 2 et redémarrez le tunnel.

7. Reproduire et trouver la requête

Faites dans l'app la chose dont vous voulez voir le trafic. Puis restreignez la liste avec la barre de filtres au-dessus d'elle : tapez l'hôte dans Filtrer hôte/URL… — le champ Filtrer de la barre d'outils est la même recherche — ou cochez MitM uniquement pour ne garder que les lignes déchiffrées.

Vous devriez voir : des lignes pour votre hôte avec un M dans la colonne Indicateurs. La colonne Méthode montre le type de connexion — HTTPS — et non le verbe : la ligne de requête et la ligne d'état sont les premières lignes de En-têtes requête et de En-têtes réponse. Sélectionnez-en une : l'onglet En-têtes requête a les en-têtes, les paramètres de requête et les cookies ; Données réponse montre le corps, en Texte jusqu'à ce que vous choisissiez JSON pour un arbre ou Image pour une image.

Si les lignes de votre hôte n'ont pas de M, la connexion n'a pas été déchiffrée. Par ordre de probabilité : l'hôte n'est pas dans la liste (ou le motif ne correspond pas — api.example.com ne couvre pas www.example.com) ; MitM est désactivé ; le CA est installé mais pas approuvé (l'app elle-même affichera des erreurs de certificat) ; l'app épingle son certificat (excluez l'hôte et acceptez de ne pas voir à l'intérieur) ; l'app parle HTTP/3 sur QUIC, qui ne peut pas être déchiffré — réglez block-quic pour la ramener vers TCP.

Si la ligne a un M mais que Données requête et Données réponse ne peuvent pas être sélectionnés, rien n'a été capturé : l'enregistrement était désactivé quand cette connexion a eu lieu (activez-le, reproduisez), ou l'hôte est filtré par [Replica] sur le téléphone. Un corps de plus de 2 MiB est un corps que le téléphone refuse de livrer ; son onglet affiche Impossible de charger ce corps.

8. Garder ce que vous avez trouvé

Sélectionnez les lignes et faites un clic droit sur l'une d'elles : Exporter la sélection en HAR… les écrit toutes, avec leurs corps, dans un fichier qui s'ouvre dans les outils de développement d'un navigateur, Charles ou Proxyman ; Copier la commande curl copie la requête de la ligne cliquée, pour la rejouer depuis le terminal du Mac ; Exporter la sélection en CSV… pour un tableur. Exporter en bin dans un onglet de données enregistre un corps tel que capturé.

9. Changer quelque chose (facultatif)

Les panneaux de la vue MitM modifient le moteur en cours d'exécution. Deux expériences rapides :

  • Réécriture d'en-tête → ajoutez une règle pour votre hôte : Requête, Ajouter, X-Debug = 1. Reproduisez ; les nouvelles lignes portent H et R, et Règles déclenchées du panneau de détail cite votre règle.
  • Réponse simulée → répondre à un point de terminaison avec un corps à vous. Le type du Corps de la réponse est un menu local — file, text, base64 ou tiny-gif — et le champ à côté prend ce que le type demande : un chemin pour file (Parcourir… en choisit un), le corps lui-même pour text, son base64 pour base64, et rien pour tiny-gif. Un chemin file est lu par le téléphone, qui n'a pas de /Users/… : pour un téléphone, choisissez donc text ou base64 et mettez le corps dans la règle elle-même, directement dans ce panneau — voir la remarque sous Outils MitM. Les lignes simulées portent K.

Les règles ajoutées ici disparaissent au redémarrage du tunnel. Dès qu'une marche, écrivez-la dans la configuration — les pages de référence : Réécriture d'URL, Réécriture d'en-tête, Réécriture de corps, Réponse simulée.

Quand vous avez fini

  • Désactivez Capture du trafic, ou mettez replica = false : les corps s'accumulent sur le téléphone tant que l'enregistrement est actif.
  • Désactivez de nouveau Autoriser l'accès depuis le Wi-Fi si vous l'aviez activé.
  • Laissez le CA installé si vous referez cela ; sinon retirez-le sous Réglages → Général → VPN et gestion de l'appareil.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

results matching ""

    No results matching ""