SixSpotting via Tor
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_idfrom the browser console (F12) - Make sure Tor is installed
- Run
./torbulkexitlist.sh [session_id]with yoursession_id - You can run
tail -f tmp/log.txtto 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 https://game.flyingpenguintech.org/checkin 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".