
Un escáner rápido y modular para relés de salida de Tor. El repositorio canónico (incluido el rastreador de incidencias) está en https://gitlab.torproject.org/tpo/network-health/exitmap

Este repositorio no tiene mantenimiento. Consulte el fork del Proyecto Tor.
Exitmap es un escáner rápido y modular basado en Python para los relays de salida de Tor. Los módulos de Exitmap implementan tareas que se ejecutan sobre (un subconjunto de) todos los relays de salida. Si tienes experiencia en programación funcional, piensa en exitmap como una interfaz map() para los relays de salida de Tor: los módulos pueden realizar cualquier tarea de red basada en TCP, como obtener una página web, subir un archivo, conectarse a un servidor SSH o unirse a un canal de IRC.
En la práctica, exitmap es útil para monitorear la confiabilidad y la fiabilidad de los relays de salida. El Proyecto Tor utiliza exitmap para verificar falsos negativos en el servicio check del Proyecto Tor y para encontrar relays de salida maliciosos. Es fácil desarrollar nuevos módulos para exitmap; solo echa un vistazo al archivo HACKING en el directorio doc/ o revisa uno de los módulos existentes.
Exitmap utiliza Stem para crear circuitos hacia todos los relays de salida indicados. Cada vez que tor notifica a exitmap de un circuito establecido, se invoca un módulo para el circuito recién establecido. Los módulos pueden ser scripts puros de Python o ejecutables. Para los ejecutables, es necesario torsocks.
Finalmente, ten en cuenta que exitmap es una herramienta de medición de red y de poca utilidad para los usuarios comunes de Tor. El Proyecto Tor ya ejecuta la herramienta regularmente. Más escaneos de exitmap solo causan carga innecesaria en la red. La única razón por la que exitmap está disponible públicamente es porque su código fuente y diseño podrían ser de interés para algunos.
Exitmap utiliza la librería Stem para comunicarse con Tor. Hay muchas formas de instalar Stem. La más fácil quizás sea usar pip en combinación con el archivo requirements.txt proporcionado:
$ pip install -r requirements.txt
El único argumento que exitmap requiere es el nombre de un módulo. Por ejemplo, puedes ejecutar exitmap con el módulo checktest ejecutando:
$ ./bin/exitmap checktest
La salida de la línea de comandos te mostrará cómo Tor arranca, la salida del módulo checktest y un resumen del escaneo. Si no necesitas tres saltos y prefieres usar dos saltos con un primer salto estático, ejecuta:
$ ./bin/exitmap --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Para ejecutar la misma prueba solo sobre relays de salida alemanes, ejecuta:
$ ./bin/exitmap --country DE --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Si deseas pausar durante cinco segundos entre creaciones de circuitos para reducir la carga en la red Tor y en el destino del escaneo, ejecuta:
$ ./bin/exitmap --build-delay 5 checktest
Ten en cuenta que 1234567890ABCDEF1234567890ABCDEF12345678 es una huella digital falsa que debes reemplazar con un relay de salida que controles.
Para obtener más información sobre todas las opciones de exitmap, ejecuta:
$ ./bin/exitmap --help
Exitmap viene con todo incluido, proporcionando los siguientes módulos:
Por defecto, exitmap intenta leer el archivo .exitmaprc en tu directorio home. El archivo acepta todas las opciones de la línea de comandos, pero debes reemplazar los guiones con guiones bajos. Aquí tienes un ejemplo:
[Defaults]
first_hop = 1234567890ABCDEF1234567890ABCDEF12345678
verbosity = debug
build_delay = 1
analysis_dir = /path/to/exitmap_scans
¿No te gusta exitmap? Entonces echa un vistazo a tortunnel, SoaT, torscanner, DetecTor o SelekTOR.
Antes de enviar pull requests, asegúrate de que todas las pruebas unitarias pasen ejecutando:
$ pip install -r requirements-dev.txt
$ py.test --cov-report term-missing --cov-config .coveragerc --cov=src test
Contacto: Philipp Winter [email protected]
Huella digital OpenPGP: B369 E7A2 18FE CEAD EB96 8C73 CF70 89E3 D7FD C0D0