You can take a look at the git repo here: gitlab.com/nickfreeman/sixspotting

SixSpotting is a website which gamifies the IPv6 adoption. This repo contains a script which iterates through all exit-nodes of the Tor Project and for each tries to connect to the check-in page of SixSpotting.

Get started

  • Create an account or login on SixSpotting
  • Get the cookie session_id from the browser console (F12)
  • Make sure Tor is installed
  • Run ./torbulkexitlist.sh [session_id] with your session_id
  • You can run tail -f tmp/log.txt to read the log of Tor

What exactly is happening here?

The configuration file of Tor is called torrc. First we set the ControlSocket and CookieAuthFile to a local folder, so we can start tor without any privileges. Next we start Tor in the background, get the pid and wait for 3 seconds.

To get a List of all Tor exit-nodes, we execute LINES=$(wget -qO- https://check.torproject.org/torbulkexitlist). This gives us the list of all Tor nodes which looks something like that:

93.95.230.253
23.137.249.143
185.244.195.103
185.220.101.18
185.220.101.76
...

Now we can iterate over these. For each LINE in $LINES we set the allowed exit-nodes to be just the current LINE by restoring torrc, adding ExitNodes $LINE and then reloading Tor. Now we can make a http-request to SixSpotting via Tor using curl. To do that we set the proxy to be socks5://localhost:9050. To force Tor to use a new connection every time, we use a new password by adding -U new:$(openssl rand -hex 10).

Sadly IPv6 is still somehow broken somewhere (at least it just didn’t work for me), so we need to tell curl the address to connect to by adding --connect-to game.flyingpenguintech.org:443:\[$ipv6\]:443. The variable $ipv6 has been set to be the IPv6-address of game.flyingpenguintech.org at the beginning of the script using ipv6=$(dig game.flyingpenguintech.org AAAA +short || echo "2600:3c03:e001:600::1").

Last but not least we set the session_id cookie by adding --cookie "session_id=$sessionid".