Also, was ist eine MAC-Adresse? Dies kann entweder physisch oder virtuell sein. Dies kann vom Hersteller identifiziert werden, um sicherzustellen, dass alle kundenspezifischen Maschinen einzigartig sind. Die MAC-Adresse einer Maschine wiederum könnte mit einer Netzwerkkarte und der richtigen Software untersucht werden. In diesem Tutorial besprechen wir, wie Sie Ihre Mac-Adresse mit Python aktualisieren.

So aktualisieren Sie Ihre Mac-Adresse mit Python in Windows

import subprocess
import winreg
import re
import codecs

Erstellen Sie eine Variable, um die Liste der MAC-Adresse zu speichern

mac_to_change_to = ["0A1122334455", "0E1122334455", "021122334455", "061122334455"]

Erstellen Sie eine leere Liste, um alle MAC-Adressen zu speichern, die wir sammeln möchten

mac_addresses = list()

Wir beginnen mit der Erstellung eines regulären Ausdrucks (Regex) für MAC-Adressen, dann erstellen wir eine Regex für die Transportnamen. Und dann erstellen wir eine Regex, um den Adapterindex auszuwählen.

macAddRegex = re.compile(r"([A-Za-z0-9]{2}[:-]){5}([A-Za-z0-9]{2})")
transportName = re.compile("({.+})")
adapterIndex = re.compile("([0-9]+)")

Wir verwenden Python, um den Befehl getmac auszuführen, und erfassen dann die Ausgabe. Dann teilen wir die Ausgabe in der neuen Zeile auf, damit wir mit den einzelnen Zeilen arbeiten können.

getmac_output = subprocess.run("getmac", capture_output=True).stdout.decode().split('\n')

Hier durchlaufen wir die Ausgabe, um die Regex zu verwenden, um die Mac-Adressen zu finden, und dann verwenden wir die Regex, um den Transportnamen zu finden

for macAdd in getmac_output:
    macFind = macAddRegex.search(macAdd)
    transportFind = transportName.search(macAdd)
    if macFind == None or transportFind == None:
        continue
    mac_addresses.append((macFind.group(0),transportFind.group(0)))

Erstellen Sie ein einfaches Menü, um auszuwählen, welche Mac-Adresse der Benutzer aktualisieren möchte.

print("select the MAC Address want to update")
for index, item in enumerate(mac_addresses):
    print(f"{index} - Mac Address: {item[0]} - Transport Name: {item[1]}")

Fordern Sie den Benutzer auf, die zu aktualisierende Mac-Adresse auszuwählen

option = input("Select the number of the MAC address you want to change:")

Erstellen Sie eine einfache Konsole, mit der der Benutzer die MAC-Adresse auswählen kann. Wenn der Benutzer eine gültige MAC-Adresse auswählt, ersetzen Sie sie. Geben Sie andernfalls einen Fehler aus, um sicherzustellen, dass nur gültige ausgewählt werden.

while True:
    print("Which MAC address would you like us to use? ")
    for index, item in enumerate(mac_to_change_to):
        print(f"{index} - Mac Address: {item}")

    update_option = input("Select the item number of the new MAC address you want to use:")
    if int(update_option) >= 0 and int(update_option) < len(mac_to_change_to):
        print(f"Mac Address you selected: {mac_to_change_to[int(update_option)]}")
        break
    else:
        print("this address is not valid, please select different address")

Wir kennen den ersten Teil des Schlüssels und hängen den Ordner an, in dem ich nach den Werten suche

controller_key_part = r"SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}"

Wir stellen eine Verbindung zur HKEY_LOCAL_MACHINE-Registrierung her. Wenn wir None angeben, bedeutet dies, dass wir uns mit der Registrierung des lokalen Computers verbinden

with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as hkey:

Erstellen Sie eine Liste für die 21. Ordner, die einen ternären Operator verwenden sollen. Der Transportwert für Ihre Mac-Adresse sollte in diesen Bereich fallen.“

    controller_key_folders = [("\\000" + str(item) if item < 10 else "\\00" + str(item)) for item in range(0, 21)]

Wir durchlaufen nun die Liste der von uns erstellten Ordner und versuchen, den Schlüssel zu öffnen. Dann müssen wir die Registrierung angeben, mit der wir uns verbunden haben.

  for key_folder in controller_key_folders:
        try:
            with winreg.OpenKey(hkey, controller_key_part + key_folder, 0, winreg.KEY_ALL_ACCESS) as regkey:
                try:
                    count = 0
                    while True:
                        name, value, type = winreg.EnumValue(regkey, count)
                        count = count + 1
                        if name == "NetCfgInstanceId" and value == mac_addresses[int(option)][1]:
                            new_mac_address = mac_to_change_to[int(update_option)]
                            winreg.SetValueEx(regkey, "NetworkAddress", 0, winreg.REG_SZ, new_mac_address)
                            print("Successfully matched Transport Number")
                            break
                except WindowsError:
                    pass
        except:
            pass

Jetzt müssen wir drahtlose Geräte deaktivieren und aktivieren

run_disable_enable = input("Do you want to disable and re-enable your wireless device(s). Press Y or y to continue:")
# Changes the input to lowercase and compares it to Y. If they match, the rest of the function will run. And if they don’t then function will never run
if run_disable_enable.lower() == 'y':
    run_last_part = True
else:
    run_last_part = False
# The `run_last_part` variable should be set to True or False based on above code
while run_last_part:

Jetzt müssen wir die Netzwerkadapter deaktivieren und aktivieren

Hinweis: Wenn wir eine Liste aller Netzwerkadapter erhalten und es einen Fehler gibt, müssen Sie die Fehler ignorieren, weil es das Format nicht mag, in dem der Befehl die Daten zurückgibt.

    network_adapters = subprocess.run(["wmic", "nic", "get", "name,index"], capture_output=True).stdout.decode('utf-8', errors="ignore").split('\r\r\n')
    for adapter in network_adapters:
        # getting the index for each of the adapter available
        adapter_index_find = adapterIndex.search(adapter.lstrip())
        # If the user's adapter has wireless in its description, we're going to toggle it off and on.
        if adapter_index_find and "Wireless" in adapter:
            disable = subprocess.run(["wmic", "path", "win32_networkadapter", "where", f"index={adapter_index_find.group(0)}", "call", "disable"],capture_output=True)
            if(disable.returncode == 0):
                print(f"Disabled {adapter.lstrip()}")
            # enable the network adapter again.
            enable = subprocess.run(["wmic", "path", f"win32_networkadapter", "where", f"index={adapter_index_find.group(0)}", "call", "enable"],capture_output=True)
            if (enable.returncode == 0):
                print(f"Enabled {adapter.lstrip()}")

Führen Sie den Befehl getmac erneut aus, um zu überprüfen, ob die MAC-Adresse, zu der wir uns geändert haben, in der Liste enthalten ist, die durch Ausführen von „getmac“ zurückgegeben wird. Wenn es vorhanden ist, waren wir erfolgreich.

    getmac_output = subprocess.run("getmac", capture_output=True).stdout.decode()
    mac_add = "-".join([(mac_to_change_to[int(update_option)][i:i+2]) for i in range(0, len(mac_to_change_to[int(update_option)]), 2)])
    if mac_add in getmac_output:
        print("Mac Address Success")
    break

Und dass wir jetzt Code ausführen können, um die Mac-Adresse zu ändern

Hinweis: Bevor Sie den Code ausführen, stellen Sie sicher, dass Sie Ihre Eingabeaufforderung mit Als Administrator ausführen öffnen und auch eine Verbindung zu einem drahtlosen Netzwerk herstellen.

Ausgabe:

So aktualisieren Sie Ihre Mac-Adresse mit Python unter Linux

Lassen Sie uns zuerst die aktuelle MAC-Adresse überprüfen. Dazu können Sie den folgenden Befehl in Ihrem Terminal verwenden

Ifconfig

Sehen wir uns nun an, wie Sie Ihre Mac-Adresse mit Python aktualisieren:

import subprocess

Fügen Sie Ihren Namen des Netzwerks hinzu

interface = "wlan0"

Fügen Sie die neue Mac-Adresse hinzu, die Sie ändern möchten

mac = "00:11:11:11:11:07"

Lassen Sie uns jetzt das Netzwerk herunterfahren

subprocess.call(["ifconfig", interface, "down"])

Ändern Sie nun die MAC-Adresse

subprocess.call(["ifconfig", interface, "hw", "ether", mac])

Und zuletzt, lassen Sie uns das Netzwerk hochfahren

subprocess.call(["ifconfig", interface, "up"])

Um den Code auszuführen, öffnen Sie nun das Terminal in demselben Verzeichnis, in dem sich Ihre Python-Datei befindet, und führen Sie dann den Code aus.

Ausgabe:

Vor dem Ändern der MAC-Adresse

Nach Änderung der MAC-Adresse

Letzte Worte

Wir hoffen, dass Ihnen unser Artikel zum Aktualisieren Ihrer Mac-Adresse mit Python gefallen hat und Sie ihn für wertvoll hielten. Wir wissen, dass Technologie in der modernen Welt allgegenwärtig ist, was bedeutet, dass unsere Computer für verschiedene Zwecke verwendet werden. Obwohl Computer eine Vielzahl von Zwecken haben, sind sie alle auf irgendeine Weise miteinander verbunden. Wenn Sie Fragen oder Kommentare zu diesem Blog haben, zögern Sie bitte nicht, uns unter zu kontaktieren.

Hier sind einige nützliche Tutorials, die Sie lesen können: