All Projects → NullHypothesis → Exitmap

NullHypothesis / Exitmap

Licence: gpl-3.0
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

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Exitmap

GhostNET
GhostNET script that will help you be safer on the cyber
Stars: ✭ 45 (-89.77%)
Mutual labels:  tor, tor-network
T0rlib4Android
A minimal android controller library for Tor
Stars: ✭ 25 (-94.32%)
Mutual labels:  tor, tor-network
OnionHarvester
A small TOR Onion Address harvester for checking if the address is available or not.
Stars: ✭ 71 (-83.86%)
Mutual labels:  tor, tor-network
Torghostng
TorghostNG - Make your internet traffic anonymized through Tor network and Privoxy. Rewritten from TorGhost with Python 3
Stars: ✭ 241 (-45.23%)
Mutual labels:  tor, tor-network
orjail
a more secure way to force programs to exclusively use tor network
Stars: ✭ 136 (-69.09%)
Mutual labels:  tor, tor-network
onionfruit
OnionFruit™ Connect - Tor access client with country selection, bridge configuration, pluggable transports and experimental DNS support
Stars: ✭ 150 (-65.91%)
Mutual labels:  tor, tor-network
tor-ip-changer
request new identity every X seconds interval using TOR client
Stars: ✭ 233 (-47.05%)
Mutual labels:  tor, tor-network
Private Tor Network
Run an isolated instance of a tor network in Docker containers
Stars: ✭ 125 (-71.59%)
Mutual labels:  tor, tor-network
Attacks-on-Tor
Thirteen Years of Tor Attacks
Stars: ✭ 170 (-61.36%)
Mutual labels:  tor, tor-network
sbws
Unofficial clone of gitweb.torproject.org. Report issues and open merge requests at: https://gitlab.torproject.org/tpo/network-health/sbws/
Stars: ✭ 15 (-96.59%)
Mutual labels:  tor, tor-network
Online Privacy Test Resource List
Privacy Online Test and Resource Compendium (POTARC) 🕵🏻
Stars: ✭ 185 (-57.95%)
Mutual labels:  tor, tor-network
Docker Onion Nmap
Scan .onion hidden services with nmap using Tor, proxychains and dnsmasq in a minimal alpine Docker container.
Stars: ✭ 345 (-21.59%)
Mutual labels:  tor, scanner
Ansible Relayor
An Ansible Role for Tor Relay Operators
Stars: ✭ 165 (-62.5%)
Mutual labels:  tor, tor-network
T0rlib4j
T0rlib4j is a Java controller library for Tor
Stars: ✭ 50 (-88.64%)
Mutual labels:  tor, tor-network
Docker Tor Hiddenservice Nginx
Easily setup a hidden service inside the Tor network
Stars: ✭ 145 (-67.05%)
Mutual labels:  tor, tor-network
Tor-IP-Addresses
Hourly checked and updated list of IP Addresses of Tor and Tor Exit Nodes
Stars: ✭ 182 (-58.64%)
Mutual labels:  tor, tor-network
Torpy
Pure python Tor client implementation
Stars: ✭ 104 (-76.36%)
Mutual labels:  tor, tor-network
Onionbrowser
An open-source, privacy-enhancing web browser for iOS, utilizing the Tor anonymity network
Stars: ✭ 1,702 (+286.82%)
Mutual labels:  tor, tor-network
onionbox
Send and receive files securely through Tor.
Stars: ✭ 39 (-91.14%)
Mutual labels:  tor, tor-network
Toriptables2
Tor Iptables script is an anonymizer that sets up iptables and tor to route all services and traffic including DNS through the Tor network.
Stars: ✭ 287 (-34.77%)
Mutual labels:  tor, tor-network

exitmap logo

Build Status

Overview

Exitmap is a fast and modular Python-based scanner for Tor exit relays. Exitmap modules implement tasks that are run over (a subset of) all exit relays. If you have a background in functional programming, think of exitmap as a map() interface for Tor exit relays: Modules can perform any TCP-based networking task like fetching a web page, uploading a file, connecting to an SSH server, or joining an IRC channel.

In practice, exitmap is useful to monitor the reliability and trustworthiness of exit relays. The Tor Project uses exitmap to check for false negatives on the Tor Project's check service and to find malicious exit relays. It is easy to develop new modules for exitmap; just have a look at the file HACKING in the doc/ directory or check out one of the existing modules.

Exitmap uses Stem to create circuits to all given exit relays. Each time tor notifies exitmap of an established circuit, a module is invoked for the newly established circuit. Modules can be pure Python scripts or executables. For executables, torsocks is necessary.

Finally, note that exitmap is a network measurement tool and of little use to ordinary Tor users. The Tor Project is already running the tool regularly. More exitmap scans just cause unnecessary network load. The only reason exitmap is publicly available is because its source code and design might be of interest to some.

Installation

Exitmap uses the library Stem to communicate with Tor. There are plenty of ways to install Stem. The easiest might be to use pip in combination with the provided requirements.txt file:

$ pip install -r requirements.txt

Running exitmap

The only argument exitmap requires is the name of a module. For example, you can run exitmap with the checktest module by running:

$ ./bin/exitmap checktest

The command line output will then show you how Tor bootstraps, the output of the checktest module, and a scan summary. If you don't need three hops and prefer to use two hops with a static first hop, run:

$ ./bin/exitmap --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest

To run the same test over German exit relays only, execute:

$ ./bin/exitmap --country DE --first-hop 1234567890ABCDEF1234567890ABCDEF12345678 checktest

If you want to pause for five seconds in between circuit creations to reduce the load on the Tor network and the scanning destination, run:

$ ./bin/exitmap --build-delay 5 checktest

Note that 1234567890ABCDEF1234567890ABCDEF12345678 is a pseudo fingerprint that you should replace with an exit relay that you control.

To learn more about all of exitmap's options, run:

$ ./bin/exitmap --help

Exitmap comes with batteries included, providing the following modules:

  • testfds: Tests if an exit relay is able to fetch the content of a simple web page. If an exit relay is unable to do that, it might not have enough file descriptors available.
  • checktest: Attempts to find false negatives in the Tor Project's check service.
  • dnspoison: Attempts to resolve several domains and compares the received DNS A records to the expected records.
  • dnssec: Detects exit relays whose resolver does not validate DNSSEC.
  • patchingCheck: Checks for file tampering.
  • cloudflared: Checks if a web site returns a CloudFlare CAPTCHA.
  • rtt: Measure round-trip times through an exit to various destinations.

Configuration

By default, exitmap tries to read the file .exitmaprc in your home directory. The file accepts all command line options, but you have to replace minuses with underscores. Here is an example:

[Defaults]
first_hop = 1234567890ABCDEF1234567890ABCDEF12345678
verbosity = debug
build_delay = 1
analysis_dir = /path/to/exitmap_scans

Alternatives

Don't like exitmap? Then have a look at tortunnel, SoaT, torscanner, DetecTor, or SelekTOR.

Tests

Before submitting pull requests, please make sure that all unit tests pass by running:

$ pip install -r requirements-dev.txt
$ py.test --cov-report term-missing --cov-config .coveragerc --cov=src test

Feedback

Contact: Philipp Winter [email protected]
OpenPGP fingerprint: B369 E7A2 18FE CEAD EB96 8C73 CF70 89E3 D7FD C0D0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].