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:
- Echtzeit-Zwischenflussschätzung für die Videoframe-Interpolation mit Python
- Extrahieren Sie gespeicherte Chrome-Passwörter und entschlüsseln Sie sie mit Python
- Vergleichen Sie zwei Bilder und markieren Sie Unterschiede mit Python
- Generieren von QR-Codes und Barcodes in Python
- So erstellen Sie ein Wortratespiel in Python
- Python-Programm zum Erstellen von Blockchain und Mining
- Wetterinformationen mit Python abrufen
- RDF-Verarbeitung in Python mit RDFLib
- Erstellen Sie einen Websocket-Server mit Python und Tornado