
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

Dieses Repository wird nicht mehr gepflegt. Siehe den Fork des Tor-Projekts.
Exitmap ist ein schneller und modularer, auf Python basierender Scanner für Tor-Exit-Relais. Module von Exitmap implementieren Aufgaben, die über (eine Teilmenge) aller Exit-Relais ausgeführt werden. Wenn du mit funktionaler Programmierung vertraut bist, stelle dir Exitmap als eine map()-Schnittstelle für Tor-Exit-Relais vor: Module können jede TCP-basierte Netzwerkaufgabe ausführen, wie das Abrufen einer Webseite, das Hochladen einer Datei, das Verbinden mit einem SSH-Server oder das Beitreten zu einem IRC-Kanal.
In der Praxis ist Exitmap nützlich, um die Zuverlässigkeit und Vertrauenswürdigkeit von Exit-Relais zu überwachen. Das Tor-Projekt verwendet Exitmap, um falsch negative Ergebnisse im check-Dienst des Tor-Projekts zu erkennen und um bösartige Exit-Relais zu finden. Es ist einfach, neue Module für Exitmap zu entwickeln; wirf einfach einen Blick auf die Datei HACKING im Verzeichnis doc/ oder schau dir eines der vorhandenen Module an.
Exitmap verwendet Stem, um Schaltungen zu allen angegebenen Exit-Relais aufzubauen. Jedes Mal, wenn Tor Exitmap über eine aufgebaute Schaltung benachrichtigt, wird ein Modul für die neu aufgebaute Schaltung aufgerufen. Module können reine Python-Skripte oder ausführbare Dateien sein. Für ausführbare Dateien ist torsocks erforderlich.
Beachte abschließend, dass Exitmap ein Netzwerkmesswerkzeug ist und für normale Tor-Benutzer von geringem Nutzen ist. Das Tor-Projekt führt das Tool bereits regelmäßig aus. Weitere Exitmap-Scans verursachen nur unnötige Netzlast. Der einzige Grund, warum Exitmap öffentlich verfügbar ist, ist, dass sein Quellcode und sein Design für einige von Interesse sein könnten.
Exitmap verwendet die Bibliothek Stem zur Kommunikation mit Tor. Es gibt zahlreiche Möglichkeiten, Stem zu installieren. Die einfachste könnte sein, pip in Kombination mit der mitgelieferten Datei requirements.txt zu verwenden:
$ pip install -r requirements.txt
Das einzige Argument, das Exitmap benötigt, ist der Name eines Moduls. Beispielsweise kannst du Exitmap mit dem Modul checktest ausführen, indem du Folgendes eingibst:
$ ./bin/exitmap checktest
Die Befehlszeilenausgabe zeigt dir dann, wie Tor bootet, die Ausgabe des Moduls checktest und eine Zusammenfassung des Scans. Wenn du keine drei Hops benötigst und lieber zwei Hops mit einem statischen ersten Hop verwenden möchtest, führe Folgendes aus:
$ ./bin/exitmap --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Um denselben Test nur über deutsche Exit-Relais auszuführen, führe Folgendes aus:
$ ./bin/exitmap --country DE --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Wenn du zwischen den Schaltungsaufbauten fünf Sekunden pausieren möchtest, um die Last auf dem Tor-Netzwerk und dem Scan-Ziel zu verringern, führe Folgendes aus:
$ ./bin/exitmap --build-delay 5 checktest
Beachte, dass 1234567890ABCDEF1234567890ABCDEF12345678 ein Pseudo-Fingerabdruck ist, den du durch ein Exit-Relais ersetzen solltest, das du kontrollierst.
Um mehr über alle Optionen von Exitmap zu erfahren, führe Folgendes aus:
$ ./bin/exitmap --help
Exitmap wird mit vielen integrierten Modulen ausgeliefert, darunter:
Standardmäßig versucht Exitmap, die Datei .exitmaprc in deinem Home-Verzeichnis zu lesen. Die Datei akzeptiert alle Befehlszeilenoptionen, aber du musst Minuszeichen durch Unterstriche ersetzen. Hier ist ein Beispiel:
[Defaults]
first_hop = 1234567890ABCDEF1234567890ABCDEF12345678
verbosity = debug
build_delay = 1
analysis_dir = /path/to/exitmap_scans
Gefällt dir Exitmap nicht? Dann wirf einen Blick auf tortunnel, SoaT, torscanner, DetecTor oder SelekTOR.
Bevor du Pull Requests einreichst, stelle bitte sicher, dass alle Unit-Tests bestanden werden, indem du Folgendes ausführst:
$ pip install -r requirements-dev.txt
$ py.test --cov-report term-missing --cov-config .coveragerc --cov=src test
Kontakt: Philipp Winter [email protected]
OpenPGP-Fingerabdruck: B369 E7A2 18FE CEAD EB96 8C73 CF70 89E3 D7FD C0D0