
Um scanner rápido e modular para relays de saída do Tor. O repositório canônico (incluindo o rastreador de problemas) está em https://gitlab.torproject.org/tpo/network-health/exitmap

This repository is unmaintained. Refer to The Tor Project's fork.
O Exitmap é um scanner rápido e modular baseado em Python para
retransmissores de saída do Tor. Os módulos do Exitmap implementam tarefas
que são executadas em (um subconjunto de) todos os retransmissores de saída. Se você tem experiência em
programação funcional, pense no exitmap como uma interface map() para retransmissores de saída do
Tor: Os módulos podem realizar qualquer tarefa de rede baseada em TCP, como buscar uma página
web, enviar um arquivo, conectar-se a um servidor SSH ou entrar em um canal IRC.
Na prática, o exitmap é útil para monitorar a confiabilidade e a credibilidade dos retransmissores de saída. O Projeto Tor usa o exitmap para verificar falsos negativos no serviço check do Projeto Tor e para encontrar retransmissores de saída maliciosos. É fácil desenvolver novos módulos para o exitmap; basta dar uma olhada no arquivo HACKING no diretório doc/ ou conferir um dos módulos existentes.
O Exitmap usa Stem para criar circuitos para todos os retransmissores de saída fornecidos. Cada vez que o Tor notifica o exitmap de um circuito estabelecido, um módulo é invocado para o recém-estabelecido circuito. Os módulos podem ser scripts Python puros ou executáveis. Para executáveis, torsocks é necessário.
Finalmente, note que o exitmap é uma ferramenta de medição de rede e tem pouca utilidade para usuários comuns do Tor. O Projeto Tor já executa a ferramenta regularmente. Mais varreduras do exitmap apenas causam carga de rede desnecessária. A única razão pela qual o exitmap está disponível publicamente é porque seu código-fonte e design podem ser de interesse para alguns.
O Exitmap usa a biblioteca Stem para se comunicar com o Tor. Existem várias maneiras de instalar o Stem. A mais fácil pode ser usar o pip em combinação com o arquivo requirements.txt fornecido:
$ pip install -r requirements.txt
O único argumento que o exitmap requer é o nome de um módulo. Por exemplo, você pode executar o exitmap com o módulo checktest rodando:
$ ./bin/exitmap checktest
A saída da linha de comando mostrará como o Tor inicializa, a saída do módulo checktest e um resumo da varredura. Se você não precisar de três saltos e preferir usar dois saltos com um primeiro salto estático, execute:
$ ./bin/exitmap --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Para executar o mesmo teste apenas em retransmissores de saída alemães, execute:
$ ./bin/exitmap --country DE --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest
Se você quiser pausar por cinco segundos entre as criações de circuito para reduzir a carga na rede Tor e no destino da varredura, execute:
$ ./bin/exitmap --build-delay 5 checktest
Note que 1234567890ABCDEF1234567890ABCDEF12345678 é uma pseudo impressão digital
que você deve substituir por um retransmissor de saída que você controla.
Para aprender mais sobre todas as opções do exitmap, execute:
$ ./bin/exitmap --help
O Exitmap vem com baterias incluídas, fornecendo os seguintes módulos:
Por padrão, o exitmap tenta ler o arquivo .exitmaprc no seu diretório home. O arquivo aceita todas as opções de linha de comando, mas você precisa substituir os traços por sublinhados. Aqui está um exemplo:
[Defaults]
first_hop = 1234567890ABCDEF1234567890ABCDEF12345678
verbosity = debug
build_delay = 1
analysis_dir = /path/to/exitmap_scans
Não gosta do exitmap? Então dê uma olhada em tortunnel, SoaT, torscanner, DetecTor, ou SelekTOR.
Antes de enviar pull requests, certifique-se de que todos os testes unitários passam executando:
$ pip install -r requirements-dev.txt
$ py.test --cov-report term-missing --cov-config .coveragerc --cov=src test
Contato: Philipp Winter [email protected]
Impressão digital OpenPGP: B369 E7A2 18FE CEAD EB96 8C73 CF70 89E3 D7FD C0D0