C2Sniff est un outil complet d'inspection et de capture de trafic HTTP/HTTPS, développé de A à Z en Python et PyQt6, inspiré d'outils comme Fiddler ou Charles Proxy.
- Capture locale de trafic HTTP/HTTPS : Intègre un proxy MITM performant (basé sur le moteur mitmproxy) capable d'intercepter et décoder les flux SSL/TLS avec génération de certificats à la volée.
- Interface Utilisateur Moderne : Interface PyQt6 fluide avec prise en charge du mode sombre, tableau de bord en temps réel et vue fractionnée (split-view) des requêtes/réponses.
- Visualisation Détaillée : Affichage structuré des en-têtes et du contenu (Headers, JSON, XML, Plain text).
- Module de Replay : Modification dynamique des requêtes capturées (méthodes, headers, body) et réémission à la volée avec retour direct du résultat.
- Export Multi-formats : Sauvegarde des traces de sessions en format JSON et CSV pour analyse externe.
Le projet est découpé selon une architecture modulaire :
main.py: Point d'entrée de l'application.c2sniff/proxy/engine.py: Moteur asynchrone MITM proxy tournant dans un thread séparé pour ne pas bloquer l'UI.c2sniff/ui/: Contient l'interface PyQt6 (main_window.pypour la fenêtre principale,replay_dialog.pypour le module de réémission).c2sniff/utils/: Outils transverses (exportateurs CSV/JSON).tests/: Suite de tests unitaires utilisantpytest.
- Python 3.10 ou supérieur
- Pip (Gestionnaire de paquets)
- Cloner ou télécharger le dépôt.
- Créer un environnement virtuel (recommandé) :
# Sur Windows : py -m venv venv venv\Scripts\activate # Sur macOS/Linux : python3 -m venv venv source venv/bin/activate
- Installer les dépendances :
pip install -r requirements.txt
Lancer l'application via :
# Sur Windows :
py main.py
# Sur macOS/Linux :
python3 main.py- Cliquez sur Start Proxy pour lancer le serveur proxy local (par défaut sur
127.0.0.1:8080). - Configurez le proxy de votre système ou de votre navigateur pour pointer vers cette adresse.
- Le trafic apparaîtra en temps réel dans le tableau.
- Sélectionnez une requête et utilisez Replay Request pour la modifier et la renvoyer.
- Utilisez Export Flows pour sauvegarder votre session.
Pour lancer les tests unitaires :
pytest tests/