Internal Tor configuration for the scanner¶
The scanner needs a specific Tor configuration. The following options are either set when launching Tor or required when connection to an existing Tor daemon.
Default configuration:
SocksPort auto: To proxy requests over Tor.CookieAuthentication 1: The easiest way to authenticate to Tor.UseEntryGuards 0: To avoid path bias warnings.UseMicrodescriptors 0: Because full server descriptors are needed.SafeLogging 0: Useful for logging, since there’s no need for anonymity.LogTimeGranularity 1ProtocolWarnings 1FetchDirInfoEarly 1FetchDirInfoExtraEarly 1: Respond to MaxAdvertisedBandwidth as soon as possible.FetchUselessDescriptors 1: Keep fetching descriptors, even when idle.LearnCircuitBuildTimeout 0: To keep circuit build timeouts static.
Configuration that depends on the user configuration file:
CircuitBuildTimeout ...: The timeout trying to build a circuit.DataDirectory ...: The Tor data directory path.PidFile ...: The Tor PID file path.ControlSocket ...: The Tor control socket path.Log notice ...: The Tor log level and path.
Configuration that needs to be set on runtime:
__DisablePredictedCircuits 1: To build custom circuits.__LeaveStreamsUnattached 1: The scanner is attaching the streams itself.
Configuration that can be set on runtime and fail:
ConnectionPadding 0: Useful for avoiding extra traffic, since scanner anonymity is not a goal.
Currently most of the code that sets this configuration is in sbws.util.stem.launch_tor()
and the default configuration is sbws/globals.py.
Note
the location of this code is being refactored.