Tags: Netzwerk, Passwort, WLAN
Wenn man auf einem Notebook viele WiFi-Verbindungen gespeichert hat, dann möchte man diese manchmal auch auf einem anderen Rechner nutzen. Windows sieht dafür den Export und Import mittels netsh.exe vor. PowerShell ist dazu nur mit einem Community-Modul in der Lage, alternativ kann man dafür kostenlose GUI-Tools einsetzen.
Wenn man nur den WPA-Schlüssel des aktuell verbundenen WLAN auslesen möchte, dann kann man das über das Netzwerk- und Freigabecenter tun.
Dort klickt man auf die WiFi-Verbindung und im daraufhin angezeigten Dialog betätigt man den Button Drahtloseigenschaften und wechselt anschließend zur Registerkarte Sicherheit. Durch Aktivieren der Checkbox Zeichen anzeigen kann man das Passwort sichtbar machen.
Dieses Vorgehen klappt unter Windows 10 und 11 gleichermaßen. Wenn man jedoch die Kennwörter für alle gespeicherten Verbindungen auslesen möchte, dann ist diese Methode unbrauchbar.
In diesem Fall bieten die Bordmittel nur ein Tool für die Kommandozeile, nämlich netsh.exe. Es erfordert im Unterschied zur GUI für diesen Zweck keine erhöhten Rechte.
Aber auch dieses Dienstprogramm zeigt mit dem Parameter show nur die Eigenschaften eines einzigen Profils an, dessen Namen man beim Aufruf übergeben muss:
netsh wlan show profile name=<SSID> key=clear |
findstr /i "SSID key"
bzw. auf einem deutschen Windows filtert man die Ausgabe so:
netsh wlan show profile name=<SSID> key=clear |
findstr /i "SSID Schlüsselinhalt"
Man kann zwar das Auslesen aller Passwörter über PowerShell automatisieren, aber einfacher ist es, wenn man die Exportfunktion von netsh.exe benutzt. Sie schreibt alle Einstellungen eines Profils in eine XML-Datei, so dass man sie dann auch auf einen anderen Rechner übertragen kann:
netsh wlan export profile key=clear folder=.\profiles
In diesem Beispiel speichert netsh.exe die Einstellungen aller Profile in das Verzeichnis profiles. Dieses muss existieren, es wird nicht automatisch erstellt. Verzichtet man auf den folder-Parameter, dann legt netsh.exe die XML-Dateien im aktuellen Verzeichnis ab.
Man könnte die Schlüssel mit
findstr /i "<keyMaterial" .\profiles\*.xml
oder in PowerShell mit
select-string -Path .\profiles\*.xml -Pattern "<keyMaterial"
aus den XML-Dateien extrahieren.
Profile auf anderen PC übertragen
Dazu kopiert man die XML-Dateien auf den betreffenden Rechner und führt einen Befehl nach diesem Muster aus:
netsh wlan add profile filename="<Name-XML-Datei>" user=current
Damit kann man aber immer nur ein Profil auf einmal importieren. Möchte man alle in einem Durchgang übernehmen, dann behilft man sich in der Eingabeaufforderung mit einer Schleife:
for %a in (*.xml) do netsh wlan add profile filename="%a"
In PowerShell sieht dieser Befehl so aus:
dir *.xml | foreach {netsh wlan add profile filename="$_."}
Wenn man beim Export den Parameter key=clear auslässt, dann schreibt das Tool die verschlüsselten Kennwörter in die XML-Dateien. Der Import klappt dann nicht, weil jeder Rechner einen anderen Key für die Verschlüsselung nutzt und der Zielrechner die Passwörter somit nicht dechiffrieren kann.
Das obige Beispiel verwendet den Parameter user=current, so dass die Profile nur für den aktuell angemeldeten Benutzer übernommen werden. Lässt man ihn weg, dann erfolgt der Import für alle Konten.
Eine weitere Bedingung für den erfolgreichen Import ist natürlich, dass auf dem Rechner ein WLAN-Interface existiert. Das lässt sich mit
netsh.exe wlan show interfaces | findstr /i "name"
prüfen. Hat man mehrere davon, dann kann man das gewünschte beim Import über den interface-Parameter spezifizieren:
netsh wlan add profile filename=MyWi-Fi.xml interface="Wi-Fi"
Alternative Methoden
Wer statt des relativ umständlichen Dienstprogramms netsh.exe lieber PowerShell verwenden möchte, der benötigt dafür ein externes Modul.
Falls man die Kommandozeile insgesamt meiden will, kann man zu kostenlosen GUI-Tools greifen. In Frage kommen dafür WirelessKeyView oder NetSetMan.
Zusammenfassung
Die Exportfunktion von netsh.exe schreibt ganze WLAN-Profile in jeweils eigene XML-Dateien. Von dort kann man sie auf einen anderen Rechner übernehmen, vorausgesetzt, man hat die Passwörter im Klartext gespeichert.
Wenn man die Kennwörter einzelner Verbindungen nur ansehen möchte, dann geht das über den show-Parameter von netsh.exe. Möchte man jedoch die Schlüssel aller Profile anzeigen, dann ist das Exportieren auch dafür die einfachste Methode.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links