MAC ADDRESS
- Media Access Control
- Permanent
- Physical
- Unique
- Assigned by manufacturer
WHY CHANGE THE MAC ADDRESS
1.Increase anonymity
2.Impersonate other devices
3.Bypass filters
Change the MAC Address manually.
ifconfig ifconfig eth0 down ifconfig eth0 hw ether 00:11:22:33:44:55 ifconfig eth0 up ifconfig
MAC_CHANGER USING A PYTHON MODULE TO EXECUTE SYSTEM COMMANDS
- The subprocess module contains a number of functions.
- These functions allow us to execute system commands.
- Commands depend on the OS which executes the script.
Refer to the Python Documentation: https://docs.python.org/3/library/subprocess.html
Simple sample:
#!/usr/bin/env python import subprocess subprocess.call("ifconfig", shell=True)
The Python script to change the MAC Address:
#!/usr/bin/env python import subprocess subprocess.call("ifconfig eth0 down", shell=True) subprocess.call("ifconfig eth0 hw ether 00:11:22:33:44:66", shell=True) subprocess.call("ifconfig eth0 up", shell=True)
It works.
The updated Python script to change the MAC address using variables.
#!/usr/bin/env python import subprocess interface = "eth0" new_mac = "00:11:22:33:44:77" print("[+] Changing MAC address for " + interface + " to " + new_mac) subprocess.call("ifconfig " + interface + " down", shell=True) subprocess.call("ifconfig " + interface + " hw ether " + new_mac, shell=True) subprocess.call("ifconfig " + interface + " up", shell=True)
Run the script successfully.
The updated Python script using the user's input.
#!/usr/bin/env python import subprocess interface = input("interface > ") new_mac = input("new MAC > ") print("[+] Changing MAC address for " + interface + " to " + new_mac) subprocess.call("ifconfig " + interface + " down", shell=True) subprocess.call("ifconfig " + interface + " hw ether " + new_mac, shell=True) subprocess.call("ifconfig " + interface + " up", shell=True)
Run the new scripts successfully.
Enhance the security of the Python script by changing the use of the call function.
#!/usr/bin/env python import subprocess interface = raw_input("interface > ") new_mac = raw_input("new MAC > ") print("[+] Changing MAC address for " + interface + " to " + new_mac) subprocess.call(["ifconfig", interface, "down"]) subprocess.call(["ifconfig", interface, "hw", "ether", new_mac]) subprocess.call(["ifconfig", interface, "up"])
Run the script successfully and more secure.
Update the Python script to handle command-line arguments.
Use the module Parser: https://docs.python.org/2/library/optparse.html
#!/usr/bin/env python import subprocess import optparse parser = optparse.OptionParser() parser.add_option("-i", "--interface", dest="interface", help="Interface to change its MAC address") parser.parse_args() interface = raw_input("interface > ") new_mac = raw_input("new MAC > ") print("[+] Changing MAC address for " + interface + " to " + new_mac) subprocess.call(["ifconfig", interface, "down"]) subprocess.call(["ifconfig", interface, "hw", "ether", new_mac]) subprocess.call(["ifconfig", interface, "up"])
Initializing the variables based on the command arguments.
#!/usr/bin/env python import subprocess import optparse parser = optparse.OptionParser() parser.add_option("-i", "--interface", dest="interface", help="Interface to change its MAC address") parser.add_option("-m", "--mac", dest="new_mac", help="New MAC address") (options, arguments) = parser.parse_args() interface = options.interface new_mac = options.new_mac print("[+] Changing MAC address for " + interface + " to " + new_mac) subprocess.call(["ifconfig", interface, "down"]) subprocess.call(["ifconfig", interface, "hw", "ether", new_mac]) subprocess.call(["ifconfig", interface, "up"])
Execute the following commands.
python mac_changer.py --interface eth0 --mac 00:11:22:33:44:55 or python mac_changer.py -i eth0 -m 00:11:22:33:44:55