
A fast and modular scanner for Tor exit relays. The canonical repository (including issue tracker) is at https://gitlab.torproject.org/tpo/network-health/exitmap

Ce dépôt n'est plus maintenu. Reportez-vous au fork du Projet Tor.
Exitmap est un scanner rapide et modulaire basé sur Python pour les relais de sortie Tor. Les modules d'Exitmap implémentent des tâches qui sont exécutées sur (un sous-ensemble de) tous les relais de sortie. Si vous avez une expérience en programmation fonctionnelle, pensez à exitmap comme à une interface map() pour les relais de sortie Tor : les modules peuvent effectuer toute tâche réseau basée sur TCP comme récupérer une page web, télécharger un fichier, se connecter à un serveur SSH, ou rejoindre un canal IRC.
En pratique, exitmap est utile pour surveiller la fiabilité et la confiance des relais de sortie. Le Projet Tor utilise exitmap pour vérifier les faux négatifs sur le service check du Projet Tor et pour trouver des relais de sortie malveillants. Il est facile de développer de nouveaux modules pour exitmap ; il suffit de consulter le fichier HACKING dans le répertoire doc/ ou de regarder l'un des modules existants.
Exitmap utilise Stem pour créer des circuits vers tous les relais de sortie donnés. Chaque fois que Tor notifie à exitmap qu'un circuit est établi, un module est invoqué pour le nouveau circuit. Les modules peuvent être des scripts Python purs ou des exécutables. Pour les exécutables, torsocks est nécessaire.
Enfin, notez qu'exitmap est un outil de mesure réseau et peu utile pour les utilisateurs ordinaires de Tor. Le Projet Tor exécute déjà l'outil régulièrement. Des analyses supplémentaires d'exitmap ne font qu'engendrer une charge réseau inutile. La seule raison pour laquelle exitmap est disponible publiquement est que son code source et sa conception peuvent intéresser certains.
Exitmap utilise la bibliothèque Stem pour communiquer avec Tor. Il existe de nombreuses façons d'installer Stem. La plus simple est peut-être d'utiliser pip avec le fichier requirements.txt fourni :
$ pip install -r requirements.txt
Le seul argument dont exitmap a besoin est le nom d'un module. Par exemple, vous pouvez exécuter exitmap avec le module checktest en lançant :
$ ./bin/exitmap checktest
La sortie de la ligne de commande vous montrera alors comment Tor démarre, la sortie du module checktest, et un résumé de l'analyse. Si vous n'avez pas besoin de trois sauts et préférez utiliser deux sauts avec un premier saut statique, exécutez :
$ ./bin/exitmap --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Pour exécuter le même test uniquement sur les relais de sortie allemands, exécutez :
$ ./bin/exitmap --country DE --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Si vous souhaitez faire une pause de cinq secondes entre les créations de circuits pour réduire la charge sur le réseau Tor et la destination de l'analyse, exécutez :
$ ./bin/exitmap --build-delay 5 checktest
Notez que 1234567890ABCDEF1234567890ABCDEF12345678 est une pseudo-empreinte que vous devez remplacer par un relais de sortie que vous contrôlez.
Pour en savoir plus sur toutes les options d'exitmap, exécutez :
$ ./bin/exitmap --help
Exitmap est livré avec des batteries incluses, fournissant les modules suivants :
Par défaut, exitmap essaie de lire le fichier .exitmaprc dans votre répertoire personnel. Le fichier accepte toutes les options de ligne de commande, mais vous devez remplacer les tirets par des underscores. Voici un exemple :
[Defaults]
first_hop = 1234567890ABCDEF1234567890ABCDEF12345678
verbosity = debug
build_delay = 1
analysis_dir = /path/to/exitmap_scans
Vous n'aimez pas exitmap ? Alors jetez un œil à tortunnel, SoaT, torscanner, DetecTor ou SelekTOR.
Avant de soumettre des pull requests, veuillez vous assurer que tous les tests unitaires réussissent en exécutant :
$ pip install -r requirements-dev.txt
$ py.test --cov-report term-missing --cov-config .coveragerc --cov=src test
Contact : Philipp Winter [email protected]
Empreinte OpenPGP : B369 E7A2 18FE CEAD EB96 8C73 CF70 89E3 D7FD C0D0