Chute Dashboard

Chute Dashboard est une application macOS gratuite qui se connecte à un Chute en cours d'exécution — Chute iOS par Wi-Fi ou câble USB, ou Chute Mac sur la même machine — et montre ce que fait cette instance : chaque connexion avec la règle et la politique qui l'ont décidée, la requête et la réponse déchiffrées pour les hôtes couverts par le déchiffrement HTTPS, les réponses DNS, les sessions UDP. Elle permet aussi de façonner le trafic pendant que vous l'observez : la liste des hôtes MitM et chaque famille de règles de réécriture et de simulation se modifient en direct.

Ce n'est pas la console web. La console est servie par le noyau lui-même et s'ouvre dans un navigateur ; Dashboard est une application distincte qui parle au noyau par son canal de contrôle binaire, et c'est pourquoi elle a besoin d'external-controller-access sur l'appareil plutôt que d'external-http-controller. Les deux se recouvrent, et chacune a des choses que l'autre n'a pas — voir Ce que Dashboard ne peut pas atteindre.

L'interface de Dashboard est localisée dans les mêmes langues que ce manuel, sauf l'arabe ; sur un système en arabe elle s'affiche en anglais.

Autoriser Dashboard à se connecter

Rien n'écoute tant que l'appareil ne l'a pas dit.

Chute iOS — dans l'éditeur de configuration, ouvrez Contrôleur externe → Accès au contrôleur externe :

  1. Activez Autoriser Chute Dashboard/Chute CLI à se connecter.
  2. Définissez un Port et un Mot de passe. Le mot de passe ne peut pas être vide, et il doit être le vôtre : un écouteur joignable depuis le réseau refuse de démarrer avec un mot de passe vide ou par défaut.
  3. Laissez Autoriser l'accès depuis le Wi-Fi désactivé sauf besoin. Désactivé est la valeur par défaut et signifie que l'écouteur reste sur le téléphone lui-même — un câble USB l'atteint encore, les autres appareils du Wi-Fi non. Activé signifie que quiconque sur le réseau connaît le mot de passe peut lire tout ce que cette exécution a vu.
  4. Enregistrez, puis démarrez (ou redémarrez) le tunnel. Le panneau de contrôle affiche désormais Port d'accès externe : <port> — cette ligne confirme que l'écouteur est en place.

Chute Mac — les trois mêmes valeurs se trouvent dans [General] :

[General]
external-controller-access = password@127.0.0.1:6170

127.0.0.1 le limite au Mac où vous êtes, ce dont un Dashboard sur ce même Mac a besoin ; une adresse du réseau local ou 0.0.0.0 l'ouvre aux autres machines. La section General de la fenêtre de configuration a des champs pour la même clé.

Se connecter

Dashboard s'ouvre sur la fenêtre Chute – Nouveau tableau de bord ; chaque connexion a sa propre fenêtre, on peut donc ouvrir plusieurs appareils à la fois. Deux façons d'entrer :

Champs Quand
Distant Hôte, Port, Mot de passe L'adresse Wi-Fi de l'appareil (iPhone : Réglages → Wi-Fi → ⓘ), ou 127.0.0.1 pour Chute Mac sur cette machine. Nécessite Autoriser l'accès depuis le Wi-Fi sur le téléphone.
USB Port, Mot de passe iPhone branché par câble et faisant confiance à ce Mac. Entrez le port que vous avez configuré — Dashboard trouve le canal du câble tout seul. Fonctionne avec Autoriser l'accès depuis le Wi-Fi désactivé, et montre aussi le trafic cellulaire, puisque le téléphone n'a pas besoin d'être en Wi-Fi.

Les machines auxquelles vous vous êtes connecté sont mémorisées sous Machine : pour la prochaine fois.

Si le mot de passe est faux, la fenêtre indique Mot de passe incorrect. Si l'appareil disparaît — tunnel arrêté, câble débranché, téléphone qui a changé de réseau — la fenêtre Dashboard signale Connexion fermée et propose Reconnecter ; il n'y a pas de reconnexion automatique.

La fenêtre

La barre d'outils bascule entre cinq vues — Actif, Récent, DNS, UDP et MitM — et Filtrer affiche ou masque la barre de filtres. Le panneau en bas à gauche est la vitesse d'envoi et de réception en direct ; cliquez dessus pour déplier le graphique.

Dans les vues Actif et Récent, la barre d'outils porte aussi deux interrupteurs qui agissent sur le noyau en cours d'exécution, exactement comme ceux des applications :

  • Enregistrer le traficDésactiver l'enregistrement du trafic : active la capture des corps de requête et de réponse (le réglage replica). Sans lui, les lignes apparaissent quand même avec leur routage, mais les onglets de données restent vides.
  • Activer MitM (N règles)Désactiver MitM (N règles) : active le déchiffrement HTTPS pour les N hôtes de la liste MitM. L'interrupteur ne fait rien d'utile tant que l'appareil n'a pas un CA approuvé et au moins un hôte — voir la page Déchiffrement HTTPS.

Aucun des deux interrupteurs ne modifie le fichier de configuration ; un redémarrage revient à ce que dit le fichier.

La barre latérale groupe les connexions par client : Tous les clients, puis Local pour les clients sur l'appareil lui-même et Distant pour les autres machines qui utilisent ce Chute comme proxy. En sélectionner un restreint toutes les listes. Quand l'appareil est Chute Mac, les clients locaux sont les applications, avec nom et icône, et le menu contextuel propose Afficher dans le Finder.

Actif et Récent

Actif est ce qui est ouvert en ce moment ; Récent est l'historique de l'appareil, du plus récent au plus ancien, relu depuis les enregistrements de l'exécution. Les deux partagent les mêmes colonnes :

Colonne
ID Le numéro de connexion du noyau — le même que montrent la console et les applications
Date, Durée Quand elle a commencé, et depuis combien de temps elle dure ou a duré
Client Le processus (Chute Mac) ou l'adresse locale
Méthode, Serveur, Statut La ligne de requête et la réponse, lues dans la requête capturée
Politique La politique choisie par la règle
Envoi, Réception Octets dans chaque sens
Indicateurs Ce que Chute a fait à la connexion — voir la légende ci-dessous

La colonne Indicateurs est le moyen le plus rapide de savoir si une règle que vous avez écrite s'applique :

Indicateur Signification
M Déchiffrée (interceptée par MitM)
H Un en-tête a été modifié
B Un corps a été modifié
R Une règle de réécriture s'est déclenchée
K Répondue par une simulation Map Local plutôt que par le serveur

Récent conserve jusqu'à 5 000 lignes ; Charger les plus anciens au bas de la liste récupère la page suivante depuis l'appareil, et la liste se rafraîchit d'elle-même toutes les quelques secondes. Quand la liste active est plus longue que ce qu'un paquet de contrôle peut porter, une note sous le tableau dit que le noyau l'a tronquée — les lignes sont bien sur l'appareil, et Récent les montrera une fois fermées.

Un clic droit sur une ligne propose Copier la commande curl, Exporter la sélection en HAR… / CSV… et Tout exporter en HAR… / CSV… ; une ligne active propose en plus Fermer la connexion, qui la ferme sur l'appareil.

Remarque : Une ligne est une connexion, pas une requête. Une connexion keep-alive qui a porté plusieurs requêtes reste une seule ligne, et les données capturées contiennent tous ces messages à la suite ; les en-têtes affichés sont ceux d'une des requêtes. Un navigateur qui ouvre une page produit donc moins de lignes que la page n'a de ressources.

La barre de filtres

La barre de filtres restreint ce qui est affiché. Elle ne change pas ce que l'appareil enregistre — pour cela, utilisez [Replica] sur l'appareil.

Contrôle Choix
Filtrer hôte/URL… Texte comparé à l'hôte et à l'URL
Méthode GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT
Statut 1xx – 5xx
Trafic Actif, Terminé, Interrompu
Type JSON, HTML, XML, Image, Texte, Binaire — d'après le type de contenu de la réponse
Durée < 100ms, 100ms–1s, 1s–5s, > 5s
Taille < 1 KB, 1–100 KB, 100 KB–1 MB, > 1 MB
MitM uniquement Seulement les connexions déchiffrées
Modifiés Les connexions qu'une règle a changées — l'un de H, B, R, K

Effacer les filtres revient à tout afficher.

Détail d'une connexion

Ouvrez une ligne pour sa fenêtre de détail. Les onglets, de gauche à droite :

Général — ce que montre la liste, avec de la place : la ligne de requête et le code d'état ; le mode sortant, la politique et la règle correspondante ; le volume et les vitesses de pointe ; les adresses locale et distante ; l'heure de début ; l'état SSL/MitM (Intercepté, En-tête modifié, Corps modifié, Simulé) ; et Règles déclenchées — chaque règle de réécriture ou de simulation qui a modifié cette connexion, citée dans ses propres termes. Une règle qui n'apparaît pas ici n'a pas touché cette connexion.

Chronologie — comment s'est répartie la mise en place de la connexion, telle que le noyau l'a mesurée :

Ligne Comptée de → à
Préparation du proxy L'arrivée de la connexion du client → Chute prêt à la traiter
Résolution DNS → le nom résolu (zéro quand la règle n'avait pas besoin d'adresse)
Évaluation des règles → la table de règles a tranché
Préparation du distant → la sortie choisie connectée et prête
Actif Tout ce qui suit, jusqu'à la fermeture de la connexion

Une requête lente l'est généralement dans exactement une de ces lignes, et laquelle indique où chercher : DNS dans la section DNS, Préparation du distant dans la politique ou le serveur derrière elle, Actif dans l'application elle-même.

En-têtes requête / En-têtes réponse — les en-têtes en tableau, avec Paramètres de requête et Cookies séparés pour la requête et Cookies pour la réponse. Un en-tête modifié par une règle est mis en évidence. Copier la sélection copie les lignes sélectionnées.

Données requête / Données réponse — le corps capturé, en Hex, Texte, JSON (un arbre dépliable, avec recherche) ou Image (Ajuster / Taille réelle) ; les corps multipart sont découpés en leurs parties. Exporter en bin enregistre les octets bruts. Les données ne sont là que si l'enregistrement était actif quand la connexion a eu lieu, et seulement pour les hôtes que les filtres de [Replica] laissent passer.

Remarque : Les corps sont affichés tels qu'ils ont été capturés. Une réponse compressée — Content-Encoding: gzip — n'est pas décompressée ici, ses vues Texte et JSON sont donc du bruit ; la vue Hex et Exporter en bin vous donnent les octets à décompresser ailleurs. L'appareil refuse de livrer un corps de plus de 2 MiB, et la vue Hex montre le premier MiB.

DNS et UDP

DNS est le cache du résolveur de l'appareil : chaque domaine avec les adresses vers lesquelles il a été résolu, le serveur qui a répondu en premier (Chute interroge tous les serveurs configurés à la fois — voir DNS), le TTL et le type d'enregistrement. Clic droit pour Copier le domaine, Copier les IP et Copier le serveur DNS.

UDP liste les sessions UDP — hôte, serveur, politique et état. Il n'y a pas de corps pour l'UDP.

Outils MitM

La vue MitM gère les cinq familles de règles de l'appareil, dans cinq panneaux : Règles MitM, Réécriture d'en-tête, Réécriture de corps, Map Local et Map Remote. Ce qui est vrai pour tous :

  • La liste est la copie des règles du noyau en cours d'exécution, qui part de ce que le fichier de configuration a déclaré.
  • Ajouter une règle l'envoie à l'appareil, qui l'analyse comme il analyserait une ligne de configuration ; une ligne qui ne s'analyse pas est refusée avec une erreur plutôt qu'enregistrée.
  • Les changements ne vivent que dans le noyau en cours d'exécution. Ils ne sont pas écrits dans le fichier de configuration, et un rechargement ou un redémarrage ramène ce que dit le fichier. Servez-vous des panneaux pour trouver la règle qui marche, puis écrivez-la dans la configuration.
  • Qu'une règle s'applique ou non se voit dans la colonne Indicateurs de la liste (R, K) et dans Règles déclenchées de la fenêtre de détail.

Règles MitM — un motif d'hôte par règle, host[:port][/path], avec le préfixe - pour exclure : *.google.com, api.example.com:8443, api.example.com/v2/*, -*.apple.com. La même grammaire que la clé hostname de la page Déchiffrement HTTPS. Le nombre sur l'interrupteur MitM de la barre d'outils est la longueur de cette liste.

Réécriture d'en-tête — un formulaire : Regex d'URL, Requête ou Réponse, Ajouter / Remplacer / Supprimer, Nom de l'en-tête, Valeur de l'en-tête. Dashboard compose la ligne de configuration pour vous ; la grammaire est sur la page Réécriture d'en-tête.

Réécriture de corps — une ligne de configuration, saisie comme vous l'écririez dans le fichier : url-regex type pattern replacement, où le type est response, request, jsonpath-response ou jsonpath-request. Voir Réécriture de corps.

Map LocalRegex d'URL, un Chemin du fichier (Parcourir…) et des En-têtes de réponse facultatifs, un Nom: Valeur par ligne.

Remarque : Le chemin du fichier est lu par l'appareil qui exécute Chute, au moment de la requête. Un chemin sur votre Mac a un sens quand Dashboard est connecté à Chute Mac sur cette même machine, et n'en a aucun quand il est connecté à un iPhone — le téléphone n'a pas de /Users/…. Pour un appareil distant, mettez le contenu en ligne avec la forme base64= de la règle (voir Réponse simulée) via l'éditeur de l'appareil ou la console web, ou servez le fichier depuis une URL et utilisez Map Remote.

Map RemoteRegex d'URL, Cible et Type : header réécrit la requête sur place (le Map Remote de Surge), 302 et 307 redirigent le client, et reject, reject-200, reject-img, reject-dict répondent sans contacter le serveur. Voir Réécriture d'URL.

Exporter

  • HAR — clic droit sur la liste : les lignes sélectionnées ou toutes, en fichier HAR 1.2 à ouvrir dans les outils de développement d'un navigateur (Réseau → importer), Charles ou Proxyman. Une entrée par ligne ; les corps sont inclus si l'enregistrement était actif.
  • CSV — les colonnes de la liste, pour un tableur.
  • Copier la commande curl — un appel curl qui rejoue la requête depuis votre Mac, avec ses en-têtes.
  • Exporter en bin — un corps, tel que capturé.

Dashboard construit son HAR à partir de ce qu'il a récupéré. Le noyau peut aussi en construire un lui-même — avec la règle correspondante, la politique et les réécritures déclenchées dans un objet _kl par entrée, et des temps d'envoi et de réception pris dans la capture — via Export HAR (Exporter en HAR) de la console ou GET /api/connections/export?format=har.

Ce que Dashboard ne peut pas atteindre

Dashboard parle le canal de contrôle binaire du noyau, et une partie de ce que sait faire le noyau n'existe que sur l'API de contrôle HTTP. Pour cela, utilisez la console web ou l'API :

  • l'ensemble de diagnostic, la santé, les compteurs de refus et les événements ;
  • les totaux de déclenchement par règle de la page Rules de la console, et la réponse qu'ils donnent à cette règle s'est-elle jamais déclenchée ;
  • le HAR du noyau, ci-dessus ;
  • le journal.

Deux autres choses à savoir avant de vous y fier :

  • Chute Android n'offre pas le canal binaire, Dashboard ne peut donc pas s'y connecter. Le tableau de bord distant d'Android et la console web couvrent le même terrain.
  • Sur iPhone et Apple TV, le déchiffrement HTTPS et la capture des corps sont des fonctions sous licence. Sans licence, Dashboard se connecte quand même et montre chaque connexion avec sa règle et sa politique, mais les lignes HTTPS restent des tunnels CONNECT opaques, les onglets de données restent vides et l'interrupteur MitM n'a aucun effet. Voir Licence et activation.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-01 12:15:52

results matching ""

    No results matching ""