Generate and Set a Random Valid MAC Address from the Command Line in OS X
We’ve shown you how to generate MAC addresses randomly and then how to go about changing a MAC address in OS X Lion and OS X Mountain Lion, but why have those be two separate actions? Using the command line, you can combine the two events into a single action to generate a valid MAC and then set it immediately.
Launch the Terminal and paste the following onto a single line:
openssl rand -hex 1 | tr '[:lower:]' '[:upper:]' | xargs echo "obase=2;ibase=16;" | bc | cut -c1-6 | sed 's/$/00/' | xargs echo "obase=16;ibase=2;" | bc | sed "s/$/:$(openssl rand -hex 5 | sed 's/\(..\)/\1:/g; s/.$//' | tr '[:lower:]' '[:upper:]')/" | xargs sudo ifconfig en0 ether
There is no confirmation or output, the MAC address is set immediately which you can verify with the following command:
ifconfig en0 |grep ether
You will probably need to reconnect to the wireless router after issuing the command, and in some cases turn wi-fi on and off again.
If you intend on using this often, setting up an alias in .bash_profile would be a good idea to avoid having to cut and paste the massive block of text.
Thanks to osmium for the great tip
how to change nokia n8 mac address
Can you explain me better (step by step…) hot to set up an alias and use .bash_profile? Do I have to do it with terminal?
I’m really confused!
Thanks
You should change ‘sed ‘s/$/00/” to ‘sed ‘s/$/10/” above so that the locally-administered bit is set. This is exactly what this bit is reserved for.
Here’s a more compact way to generate the MAC address:
perl -e ‘printf “%02x:”x 5 .”%02x\n”, int(rand(64))*4, map {int(rand(256))}(1..5)’
Be sure to keep the spaces around the first 5. You can add the trailing “| xargs …” from the other example to set your address.
I turned it into a bash script and tossed it into /usr/local/bin/ for easy access, couldn’t escape the characters properly to insert it into an alias. Thanks for the tip.