WLAN/Sonderzeichen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Ein Terminal öffnen

  2. ⚓︎ Einen Editor öffnen

Inhaltsverzeichnis
  1. Zeichenkodierung ändern
  2. ESSID kodieren
  3. Zugangsschlüssel kodieren
  4. Konfigurationsdateien vervollständigen
  5. Links

Wiki/Icons/Oxygen/network-wireless.png Das Verbinden zu einem WLAN, das bestimmte Sonderzeichen wie z.B. ö, ä, ü, ß und § im Namen (ESSID) oder im Kennwort hat, bereitet unter Linux Probleme. Das gilt für alle Zeichen im erweiterten Zeichensatz ab Dezimalwert 128 (siehe ASCII-Tabelle 8Bit 🇩🇪 ). Es wird generell dazu geraten, keine Sonderzeichen bei der Einrichtung von WLAN zu verwenden. Wenn man allerdings darauf keinen Einfluss hat (Universität, Arbeit oder Familie), kann folgende Anleitung helfen.

Andere Betriebssysteme verwenden oft noch die ältere ISO-8859-15 Zeichenkodierung, Ubuntu allerdings den neuen internationalen Standard UTF-8. Ein Sonderzeichen oder Umlaut unter Ubuntu stimmt dann mit dem entsprechenden Zeichen im Zugangsschlüssel oder der ESSID des Routers nicht überein. Mit einer manuellen Konfiguration über wpa_supplicant und durch das Umwandeln der ESSID und/oder des Kennworts in hexadezimalen Code können auch Sonderzeichen verwendet werden.

Bei der Einrichtung des eigenen WLAN-Netzes können folgende Zeichen für die SSID und das Kennwort (PSK) problemlos verwendet werden. Das Kennwort muss mindesten 8 Stellen lang sein und darf max. 63 Zeichen in Klartext (ASCII) umfassen. Folgende Zeichen sind erlaubt und werden auch von anderen Betriebssystemen wie Windows oder macOS / Mac OSX richtig erkannt:

a-z A-Z 0-9 ! " # $ % & '( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

Umlaute wie z.B. ä ü ö Ä Ü Ö ß und das Akzentzeichen ´ sind nicht erlaubt.

⚓︎

Zeichenkodierung ändern

Ist die Konfigurationsdatei /etc/wpa_supplicant/wpa_supplicant.conf bereits vorhanden, sollte diese wegen der falschen Zeichenkodierung zuerst umbenannt oder gelöscht [1] werden.

sudo mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.utf8 

sudo rm /etc/wpa_supplicant/wpa_supplicant.conf 

Dann muss die Zeichenkodierung der Konsole geändert werden. Dazu öffnet man ein Terminal [1], und navigiert in der Menüleiste zu "Terminal → Zeichenkodierung festlegen → ISO-8859-15". Gegebenenfalls muss diese Auswahl noch hinzugefügt werden.

ESSID kodieren

Sind im Zugangsschlüssel keine Sonderzeichen enthalten, genügt es die ESSID in Hex-Code umzuwandeln und in die wpa_supplicant.conf einzutragen. Dazu verwendet man das Programm hexdump im Terminal [1]. Zuerst wird die ESSID mit Sonderzeichen in die Datei ~/essid übertragen, da hexdump nicht direkt über die Terminaleingabe decodieren kann. Grundsätzlich sollte der Name keine Rückschlüsse auf die verwendete Hardware zulassen, um Angriffe auf das WLAN zu erschweren.

Es wird die Textdatei ~/essid mit dem Inhalt ESSID-mit-Sonderzeichen-öäüÖÄÜß erzeugt:

echo 'ESSID-mit-Sonderzeichen-öäüÖÄÜß' > essid 

Anschließend wird der Inhalt der Datei mit dem Befehl hexdump in hexadezimalen Code umgewandelt und in die Konfigurationsdatei übertragen. Der angehängte Parameter gibt zur Kontrolle nochmal den Namen in Klartext aus ('31/1 "%c"'), definiert eine einzeilige Ausgabe und die maximal mögliche Länge der ESSID von 32 Zeichen in Hex-Code (-e '32/1 "%X"') und löscht anschließend das nicht benötigte Dateiendezeichen (sed -i s/A_del_EOF//). Der komplexe Befehl kann auch einfach in ein Terminalfenster kopiert werden:

hexdump -e '"# ESSID: "' -e '31/1 "%c"' -e ' "\n" "# entspricht hex-Code: ssid="' -e '32/1 "%X"' -e '"_del_EOF\n"' essid | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf && sudo sed -i s/A_del_EOF// /etc/wpa_supplicant/wpa_supplicant.conf 

Der Eintrag in der Datei wpa_supplicant.conf sieht dann für das angegebene Beispiel so aus:

# ESSID: ESSID-mit-Sonderzeichen-öäüÖß
# entspricht hex-Code: ssid=45535349442D6D69742D536F6E6465727A65696368656E2DF6E4FCD6DF

Den beiden Einträgen ist eine Raute (#) vorangestellt. Dabei handelt es sich um Kommentare, die vom System nicht beachtet werden. Sind im Zugangsschlüssel keine Sonderzeichen enthalten, geht man zum Abschnitt Konfigurationsdateien vervollständigen.

Zugangsschlüssel kodieren

Falls noch nicht geschehen, muss auch hier zuerst die Zeichenkodierung der Konsole geändert werden.

Die Berechnung erfolgt im Terminal [1] mit dem Programm wpa_passphrase. Der kombinierte Befehl trägt den erzeugten Schlüssel direkt in die Konfigurationsdatei /etc/wpa_supplicant/wpa_supplicant.conf ein.

wpa_passphrase 'ESSID-mit-oder-ohne-Sonderzeichen' 'WPA-Key-mit-oder-ohne-Sonderzeichen' | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf 

Eventuell muss die ESSID oder der Schlüssel noch einmal manuell eingegeben werden, sollte wegen eines Sonderzeichens am Anfang die Eingabe nicht akzeptiert werden. Das Programm schaltet automatisch um und erwartet die Eingabe über Tastatur.

⚓︎

Konfigurationsdateien vervollständigen

Nun steht in der Datei /etc/wpa_supplicant/wpa_supplicant.conf die korrekte hexadezimale Zeichenfolge für die ESSID und ggf. für den Zugangsschlüssel. Die Datei kann danach mit einem Editor [2] bearbeitet werden, um die notwendige Konfiguration zu vervollständigen. Beim ersten Aufruf des Editors [2] kann es zu einer Fehlermeldung wegen des veränderten Zeichensatzes kommen. Auch dann muss zuerst der Zeichensatz ISO-8859-15 ausgewählt werden.

Inhalt der Konfigurationsdatei nach Ausführen der Befehle hier im Beispiel:

# ESSID: ESSID-mit-Sonderzeichen-öäüÖß
# entspricht hex-Code: ssid=45535349442D6D69742D536F6E6465727A65696368656E2DF6E4FCD6DF
network={
        ssid="ESSID-mit-oder-ohne-Sonderzeichen"
        #psk="WPA-Key-mit-oder-ohne-Sonderzeichen"
        psk=502595b9d040737548bfac570a3bf30798b0cc69d586276216ecbdb447809097
}

Benötigt werden jetzt nur die umgewandelte ESSID und der Zugangsschlüssel in hex-Code. Die restliche Konfiguration ist von der verwendeten Verschlüsselung abhängig und muss gemäß WLAN/wpa supplicant ergänzt werden.

Ein Beispiel für WPA2-Verschlüsselung:

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1

network={
ssid=45535349442D6D69742D536F6E6465727A65696368656E2DF6E4FCD6DF
# ssid=alternativ_Deine_ESSID_ohne Sonderzeichen_in_Klartext
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP TKIP
psk=502595b9d040737548bfac570a3bf30798b0cc69d586276216ecbdb447809097
# psk="alternativ_Dein_WPA_Netzwerkschlüssel_ohne_Sonderzeichen_in_Klartext"
}

Die Datei /etc/network/interfaces muss ebenfalls mit einem Editor [2] bearbeitet werden. Der entsprechende Verweis auf die Konfigurationsdatei ist einzufügen. Hier für die Schnittstelle wlan0. Siehe dazu auch interfaces.

auto lo
iface lo inet loopback
iface eth0 inet dhcp

iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto wlan0

Nach Änderungsarbeiten an der Datei interfaces und Einrichten der Verschlüsselung mit wpasupplicant kann das Netzwerk mit Übernahme der aktuellen Daten über das Terminal [1] neu gestartet werden:

sudo /etc/init.d/networking restart 

Sind alle Einstellungen richtig, sollte jetzt eine verschlüsselte Verbindung zum Router aufgebaut werden.