#!/bin/sh # /etc/NetworkManager/dispatcher.d/pre-up.d/randomize-mac-addresses # Configure every saved WiFi connection in NetworkManager with a spoofed MAC # address, seeded from the UUID of the connection and the date eg: # 'c31bbcc4-d6ad-11e7-9a5a-e7e1491a7e20-2017-11-20' # This makes your MAC impossible(?) to track across WiFi providers, and # for one provider to track across days. # For craptive portals that authenticate based on MAC, you might want to # automate logging in :) # Note that NetworkManager >= 1.4.1 (Ubuntu 17.04+) can do something similar # automatically. export PATH=$PATH:/usr/bin:/bin LOG_FILE=/var/log/randomize-mac-addresses echo "$(date): $*" > ${LOG_FILE} WIFI_UUIDS=$(nmcli --fields type,uuid connection show |grep 802-11-wireless |cut '-d ' -f3) for UUID in ${WIFI_UUIDS} do UUID_DAILY_HASH=$(echo "${UUID}-$(date +F)" | md5sum) RANDOM_MAC="b4:b6:76:$(echo -n ${UUID_DAILY_HASH} | sed 's/^\(..\)\(..\)\(..\).*$/\1:\2:\3/')" CMD="nmcli connection modify ${UUID} wifi.cloned-mac-address ${RANDOM_MAC}" echo "$CMD" >> ${LOG_FILE} $CMD & done wait