Changing MAC Address Using Python: A Practical Guide


In today’s world, technology is evolving rapidly, and devices connected to the internet are becoming an integral part of our lives. In this context, network security and privacy are gaining importance. MAC (Media Access Control) addresses are unique identifiers used to identify your network devices. However, sometimes you may need to change these MAC addresses. In this article, you will learn how to write a MAC address changer using Python.

Learning Objectives:

  • Understanding what a MAC address is.
  • Learning how to manually change a MAC address.
  • Learning to write a MAC address changer using Python.

What is a MAC Address?

A MAC (Media Access Control) address is a unique identifier assigned to your network devices at the hardware level. This address allows the device to communicate with other devices on the network and be identified on the network. MAC addresses are typically expressed in hexadecimal format and are standardly six octets (bytes) in length.

How to Manually Change a MAC Address?

Changing a MAC address is usually done through your device’s network interface settings or via the terminal.

  • Finding the Interface Name and Current MAC Address: The first step is to determine the name of the network interface and its current MAC address. You can do this by using the ifconfig command in the terminal. This command will show you the names of the current network interfaces and their associated MAC addresses.
  • Turning Off the Network Interface and Assigning a New MAC Address: You can turn off the relevant network interface and assign a new MAC address by using the following commands:
sudo ifconfig [INTERFACE_NAME] down
sudo ifconfig [INTERFACE_NAME] hw ether [NEW_MAC_ADDRESS]

Replace [INTERFACE_NAME] with the name of the network interface you want to change, and [NEW_MAC_ADDRESS] with the new MAC address.

  • Turning On the Network Interface Again: After assigning the new MAC address, you can turn the network interface back on using the following command:
    sudo ifconfig [INTERFACE_NAME] up

    Python Code for MAC Address Changer:

    In Python, you can use the subprocess module to execute system commands. This can be particularly useful for changing MAC addresses of network interfaces on UNIX-based operating systems (such as Linux and macOS). Below is a Python code using the argparse and subprocess modules to write a MAC address changer:

    1 Importing Modules:

    import argparse
    import subprocess
    import os
    • argparse: Used for parsing command-line arguments.
    • subprocess: Used for running system commands.
    • os: Used for operating system functions.
    Amazon Product
    Programming Symbols Stickers

    Book Recommendation from Experts

    Black Hat Python, 2nd Edition: Python Programming for Hackers and Pentesters 2nd Edition

    -10% $26.44 on Amazon

    2. Defining the MacChanger Class with __init__ Method:

    class MacChanger:
        def __init__(self, interface, mac_address):
            self.interface = interface
            self.mac_address = mac_address
        def change_mac(self):
            if os.geteuid() != 0:
                print("[-] This script must be run as root!")
            print(f"[+] Changing MAC address for {self.interface} to {self.mac_address}")
  ["ifconfig", self.interface, "down"])
  ["ifconfig", self.interface, "hw", "ether", self.mac_address])
  ["ifconfig", self.interface, "up"])
    • __init__: This is the initializer method that sets up the network interface and the new MAC address.
    • change_mac: This method changes the MAC address. It checks if the script is run as root, then uses the subprocess module to execute the necessary commands to change the MAC address.

    3. Defining the Main Function:

    def main():
        parser = argparse.ArgumentParser(description="MAC Changer Tool By DenizHalil")
        parser.add_argument("-i", "--interface", dest="interface", help="Interface to change its MAC address")
        parser.add_argument("-m", "--mac", dest="mac_address", help="New MAC address")
        args = parser.parse_args()
        if not args.interface or not args.mac_address:
        changer = MacChanger(args.interface, args.mac_address)
    if __name__ == "__main__":
    • main: The main function of the program. It takes arguments (interface and mac_address) from the user, initializes a MacChanger object with these values, and calls the change_mac method to change the MAC address(ARP Discover Understanding Outgoing & Incoming Packets).

    This code allows the user to change the MAC address of a network interface via the command line.


    In this article, you have taken a step towards changing MAC addresses using the Python programming language. You have understood what MAC addresses are and learned how they can be manually changed. Additionally, you have developed a basic tool using Python to automate this process. Now, you can use these skills to enhance network security and privacy.

    Leave a Comment

    Join our Mailing list!

    Get all latest news, exclusive deals and academy updates.