If you’re interested in performing research relating to Tor, you might find the following tools useful. Always ensure that the research you are performing is safe.
Test Networks
New design proposals and attacks on Tor are challenging to test in the live network due to deployment issues and the risk of invading users’ privacy. The following tools allow you to easily run a test Tor network, isolated from the live public network, that you can safely perform experimentation on.
- Chutney is a Tor test network configuration tool that can launch Tor processes and estabilsh connectivity between them. It can also be used for CPU-limited bandwidth testing.
- Shadow is a network simulator/emulator hybrid that uses archived Tor directory data to generate realistic network topologies.
You might also choose to build a testing network manually, or using your preferred configuration management tool. See the testing network options of the tor configuration file for more details.
Path Selection
The relays chosen for a path through the Tor network require tradeoffs to be made between anonymity, performance, and other properties.
- TorPS simulates changes to Tor’s path selection algorithm using archived data.
Controllers
A controller allows applications to interact with Tor. This happens via the Tor Control Protocol. Various events such as circuit creation and bandwidth counts will be able to be read from the Tor process. Commands can also be given to change the configuration of the Tor process or to instruct it to perform tasks.
- Stem is a Python controller library for Tor, used in the Nyx monitor application.
- txtorcon is a Python Twisted controller library for Tor.
- jtorctl is a Java controller library for Tor, used in the Orbot Android app.
Descriptor Libraries
The following libraries help you with parsing and generating Tor network related data formats. Descriptors may be obtained either from a directory authority, directory cache, local client or the CollecTor service:
- Tor Metrics Library is a Java library, used by Tor Metrics to produce analysis and visualisations, including parsers for Tor-specific data formats.
- Stem is a Python library that includes parsers for Tor-specific data formats.
- leekspin is a tool for generating mock Onion Router (OR) descriptors such as those used by relays, bridges, and onion services.
- Zoossh is a parser written in Go for Tor-specific data formats.
Add your tool
If you have developed a tool that may be useful to other researchers working on Tor, then please send a mail to research@torproject.org with the details you would like to have added.