Connect to routers anonymously

Posted on Sat 28 September 2013 in Tech

I've created a little script that incorporates wicd, macchanger, hostname and john the ripper's password list to randomise your mac address and hostname when connecting to the internet.

I've gone with wicd over network manager as network-manager has a tendency to store connection details, so while your machine might id your hostname or mac address as something new, network-manager will actually connect using the original stored details.

I must admit I enjoyed writing this, it reminded me of the old days when linux network managers were all rubbish and you had to write bash scripts to connect to vaguely complex network configurations.

#!/bin/bash
 # Anonymise your machines internet connection

# Settings
 INTERFACE=wlan1
 HOSTS_FILE="/etc/hosts"
 START_TOKEN="## start-anon"
 END_TOKEN="## end-anon"

# Must be run as root
 if [[ $EUID -ne 0 ]]; then
 printf "This script must be run as root\\n" 1>&2
 exit 1
 fi

# Network restart function
 if [ "Linux" == \`uname\` ]; then
 restart_network="/etc/init.d/networking restart"
 fi

# Function to clear old data and add new hosts entry
 function update_hosts()
 {
 # if no hosts file found…
 if [ ! -f $1 ]
 then
 printf \\n"No hosts file found\\n" 1>&2
 exit 1
 fi

file=$1
 host=$2

sed_script="{
 s/$END_TOKEN/$END_TOKEN/
 t finished_sites

s/$START_TOKEN/$START_TOKEN/
 x
 t started_sites

s/$START_TOKEN/$START_TOKEN/
 x
 t started_sites

p
 b end
 : started_sites
 d
 : finished_sites
 x
 d
 : end
 d
 }"

hostname $host

sed  in-place -e "$sed_script" $file
 echo $START_TOKEN >> $file
 printf "\\n127.0.1.1 $host\\n" >> $file
 echo $END_TOKEN >> $file
 }

# Presenting original information
 printf "Starting to anonimise your data\\n"

# Stop Wicd
 sudo service wicd stop
 sleep 1

#changing mac address to random
 ifconfig $INTERFACE down > /dev/null
 if [ $? == 0 ]; then
 printf "%snChanging mac address…\\n"
 macchanger -r $INTERFACE
 else
 printf "%sScript encountered an error, sorry…\\n"
 exit 1
 fi
 sleep 1

# Use john to supply new hostname to function
 OLDHOST=$(hostname)
 printf "%s\\nChanging hostname…\\n"
 printf "Current : $OLDHOST \\n"
 FILE=/usr/share/john/password.lst
 WORD=$(sort -R $FILE | head -1)
 update_hosts $HOSTS_FILE $WORD
 NEWHOST=$(hostname)
 printf "New : $NEWHOST \\n"
 sleep 1

# putting interface up
 ifconfig $INTERFACE up > /dev/null
 printf "\\n"
 sleep 1

# Restart networking
 $restart_network

# Get wicd back up and running
 service wicd start
 sleep 1

wicd-gtk > /dev/null 2>&1 &