I've had to change my MAC address for countless reasons. Either because I was doing some penetration testing, or just to debug some network errors.

The most recent motive for changing my MAC Address was: fun. I had set up airdrop-ng (http://www.aircrack-ng.org/doku.php?id=airdrop-ng) to drop all wireless clients from my university wireless network, except the ones whose MAC address begins with DE:AD:BE:EF. Obviously, I configured the MAC addresses of all my hosts to begin with that prefix.

However, when changing from OS X to Linux, the command-line syntax changes. And that gave me the idea of doing a simple script that I could call, independently of the host I was in. Also, I wanted the ability to generate a random MAC Address, or a random MAC address from a specific Manufacturer.

Thus, py-MACtool (https://github.com/diogomonica/py-MACtool) was born. It works on both Linux and OS X, generating and changing the MAC address of a chosen interface, also allowing: the random generation of a MAC address; generation of a random MAC address beginning with a given prefix; and also, generation of a random MAC address from any manufacturer (I'm using the wireshark's manufacturer list as the source).

For example, if I wanted to generate an Apple MAC Address I would do:

husk:py-MacTool hip$ sudo python MACtool.py -m Apple en0 
[+] Found Manufacturer List: manufacturer_list.txt 
[*] Generated MAC address: 00:26:08:0f:09:1a for device en0
[*] Done

If, on the other hand, I wanted my MAC address to begin with DE:AD:BE:EF, I could do:

husk:py-MacTool hip$ sudo python MACtool.py -p de:ad:be:ef en0 
[*] Generated MAC address: de:ad:be:ef:55:0e for device en0 
[*] Done

You can get the source for py-MACtool on github. Also, if you just want the wireshark manufacturer wrapper, you can download getMAN.py directly.