Ich möchte sicher sein , dass alles , was Zeichenfolge ich in die Leitung passieren wpa-ssid "abc"in /etc/network/interfacesnicht zu brechen aus der Konfiguration verwendet werden.
Alles, was ich im Handbuch finden kann, ist, \dass es am Ende einer Zeile verwendet werden kann, um mit der nächsten Zeile fortzufahren.
Aber was ist mit \"mitten in einer Zeile?
Meine Sorge ist so etwas wie eine SSID
A"
up rm -rf /\
Gibt es eine allgemeine Codierung, die für beliebige Zeichen im SSID-Feld verwendet werden kann?
In Debians /etc/network/interfaces(oder einer anderen Distribution, die das ifupdown-Dienstprogramm von Debian verwendet) wird eine Backslash-Newline-Sequenz entfernt, und Backslash ist nirgendwo anders etwas Besonderes. Ein doppeltes Anführungszeichen ist ebenfalls nichts Besonderes. Das Zeichen #beginnt einen Kommentar, wenn es das erste Nicht-Leerzeichen in einer Zeile (ohne Fortsetzung) ist. Null-Bytes werden als Zeilenumbruchzeichen behandelt (ich denke, der Parser verwendet C-Zeichenfolgen und hat keine spezielle Behandlung für Null-Bytes, sodass sie möglicherweise zusätzlichen Schaden anrichten).
Konfigurationszeilen haben die Form eines Optionsnamens, gefolgt von einem durch Leerzeichen getrennten Wert. Führende und nachfolgende Leerzeichen werden ignoriert. Einige integrierte Optionen analysieren die Zeile weiter in Wörter. Der Wert der Optionen ifaceläuft immer bis zum Ende der Zeile.
Zum Beispiel die Linie
wpa-ssid "a b" "cd"
Setzt die Option wpa-ssidauf die 12-stellige Zeichenfolge "a b" "cd"(das interne Leerzeichen bleibt erhalten).
Das ifupdown-Skript von WPA Supplicant entfernt doppelte Anführungszeichen am Anfang und am Ende der wpa-ssidKonfigurationszeichenfolge. Die obige Zeile entspricht wpa-ssid a b" "cd. Auf diese Weise können Sie führende und nachfolgende Leerzeichen in der SSID haben.
Ich kann in den ifupdown-Skripten von WPA Supplicant kein Angebotsproblem finden. Es sieht also so aus, als ob alles, was ifupdown erzeugt, sicher ist.
Auf diese Weise können Sie zulassen, dass eine beliebige Zeichenfolge als SSID /etc/network/interfaceseingefügt wird , sofern sie keine Zeilenumbrüche oder Nullbytes enthält. Fügen Sie um die Zeichenfolge doppelte Anführungszeichen hinzu (wenn Sie dies nicht tun, werden SSIDs mit führenden oder nachfolgenden Leerzeichen oder solche, die mit enden \oder mit beginnen oder enden ", entstellt).
Daher würde ich mich an den neuesten Standard halten und sicherstellen, dass Sie sich mit den rechtlichen Bestimmungen befassen können.
Was sonst?
Außerdem könnte ich geneigt sein, mich selbst zu schützen, indem ich die Eingaben eines Benutzers mithilfe einer URL-Codierungsfunktion normalisiere (was offensichtlich mit SSIDs funktionieren würde) oder einfach unzulässige Zeichen streife und sie einfach nicht zulasse, bevor diese Zeichenfolgen in diese Datei geschrieben werden .
Seltsame Charaktere?
Die einzigen Probleme, die ich mit seltsamen / speziellen Zeichen im Zusammenhang mit der interfacesDatei finden konnte, waren diese Arten von Fehlern, die gegen den Debian-Installer eingereicht wurden.
debian-installer hat nach meinen Informationen zum drahtlosen Netzwerk gefragt und diese erfolgreich verwendet, um eine drahtlose Verbindung zum Netzwerk herzustellen. Außerdem wurden meine Informationen zu drahtlosen Netzwerken in / etc / network / interfaces geschrieben. Der von mir eingegebene WPA-Schlüssel enthielt jedoch mindestens ein Sonderzeichen, und das Debian-Installationsprogramm hat die Sonderzeichen in / etc / network / interfaces nicht maskiert oder zitiert. Das Ergebnis war, dass das System beim Neustart während des Startvorgangs sehr lange hängen blieb, als es (erfolglos) versuchte, erneut eine Verbindung zum drahtlosen Netzwerk herzustellen. Ich habe das Problem behoben, indem ich einfach den in / etc / network / interfaces aufgeführten WPA-Schlüssel zitiert habe. Dies sollte automatisch geschehen, wenn der Schlüssel Sonderzeichen enthält.
Es gab auch diese Fehler, einer in Bezug auf Leerzeichen innerhalb der SSID, der andere in Bezug auf die Passphrase:
Es scheint also, dass Leerzeichen zulässig sind, solange sie korrekt zitiert werden. Außerdem gibt es dieses Beispiel, in dem erläutert wird, wie eine SSID Leerzeichen für das iwconfigTool bereitgestellt wird:
Fügen Sie den Namen (ssid) für das Netzwerk hinzu, das Sie erstellen / beitreten möchten. Verwenden Sie einfache Anführungszeichen, wenn der Name ein Leerzeichen enthält.
$ sudo iwconfig eth1 essid 'name'
Webconverger
Ich habe dieses Beispiel gefunden, das unter der Haube Debian zu sein scheint, daher mag das Beispiel Ihrer Situation angemessen sein, aber es ist schwer sicher zu sagen. Ich spreche es nur an, weil es ein Beispiel dafür zeigt, wie ich erwartet hätte, dass eine URI-Codierungsmethode zum Schutz vor illegalen Zeichen verfügbar gemacht wird.
Beispiel 4 "Spaces in the ESSID", das essid 'Hopstock Gjestenett' mit dem WPA-Schlüssel uiopzxcv sendet
Bitte vermeiden Sie Leerzeichen in ESSIDs. In diesem Fall umgehen wir mit einem encodeURI ('Hopstock Gjestenett'), um das folgende Boot-Rezept zu erhalten:
wpa-ssid=Hopstock%20Gjestenett wpa-psk=uiopzxcv
So können Sie möglicherweise die Leerzeichen codieren, die in SSIDs angezeigt werden %20.
Jedes BSS oder ESS wird durch eine Service Set Identifier (SSID) identifiziert - eine 1 bis 32-Byte-Zeichenfolge. Dies ist normalerweise eine für Menschen lesbare Zeichenfolge und wird daher üblicherweise als "Netzwerkname" bezeichnet. 6 In einem IBSS wird die SSID vom Clientgerät ausgewählt, das das Netzwerk startet, und die Übertragung der SSID wird von allen Geräten, die Mitglieder des Netzwerks sind, in einer pseudozufälligen Reihenfolge ausgeführt.
Keine definierten Einschränkungen hinsichtlich der Verwendung von Zeichen innerhalb einer SSID (IEEE Std 802.11 ™ -2012)
Einige Einschränkungen basierend auf Produkten
Einige Zeichenbeschränkungen (nur ASCII)
Unicode
Technisch gesehen ist also jedes Zeichen in einer SSID zulässig. Unterschiedliche Implementierungen wie Windows XP, Windows 7 und verschiedene Linux-Versionen erlauben / verbieten Teilmengen von Zeichen in SSIDs.
Ihre Antwort kommt nicht auf den Punkt: In was ist Flucht möglich /etc/network/interfaces?
Gilles 'SO - hör auf böse zu sein'
@ Gilles - danke, es war ein früherer Start heute bei der Arbeit. Ich habe einige zusätzliche Informationen hinzugefügt, die ich gefunden, aber damals nicht zum A hinzugefügt hatte. Meistens Fehler im Zusammenhang mit der Flucht von Zeichen für "wpa-ssid" & "wpa-psk".
slm
Ich kann nicht sagen, ob die Urlencodierung der essid als Boot-Parameter funktioniert, aber in der Interfaces-Datei nicht.
Hultqvist
@phq - Ich bin nicht überrascht, dies war nur eine Idee, und die Codierung ist im Allgemeinen die Art und Weise, wie Sie mit der Bereinigung von Daten wie diesen in anderen Anwendungen umgehen. Es scheint die einzige andere Option zu sein, außer sie zu entfernen.
wpa-ssid my ssid
.wpa-ssid=my ssid
?/etc/network/interfaces
wird nicht=
in seiner Syntax verwendet, ich habe es gerade versucht und es funktioniert nicht mit=
.my ssid
?Diese SO Q & A mit dem Titel: Gibt es einen Standard, der definiert, was eine gültige SSID und ein gültiges Passwort sind? beantwortet einige Ihrer Fragen.
Auszug
Es gibt auch diesen Kommentar zur Antwort auf die SO-Frage:
Daher würde ich mich an den neuesten Standard halten und sicherstellen, dass Sie sich mit den rechtlichen Bestimmungen befassen können.
Was sonst?
Außerdem könnte ich geneigt sein, mich selbst zu schützen, indem ich die Eingaben eines Benutzers mithilfe einer URL-Codierungsfunktion normalisiere (was offensichtlich mit SSIDs funktionieren würde) oder einfach unzulässige Zeichen streife und sie einfach nicht zulasse, bevor diese Zeichenfolgen in diese Datei geschrieben werden .
Seltsame Charaktere?
Die einzigen Probleme, die ich mit seltsamen / speziellen Zeichen im Zusammenhang mit der
interfaces
Datei finden konnte, waren diese Arten von Fehlern, die gegen den Debian-Installer eingereicht wurden.Es gab auch diese Fehler, einer in Bezug auf Leerzeichen innerhalb der SSID, der andere in Bezug auf die Passphrase:
In beiden Fällen scheint es ausreichend zu sein, die Zeichenfolgen in doppelte Anführungszeichen zu setzen, um die Werte für beide zu schützen.
Zusätzliche Beispiele
Offizielle Dokumente
Beim Durchstöbern der offiziellen Dokumentation habe ich dieses Bit hier gefunden:
Die offiziellen Dokumente zeigen dieses Beispiel:
Es scheint also, dass Leerzeichen zulässig sind, solange sie korrekt zitiert werden. Außerdem gibt es dieses Beispiel, in dem erläutert wird, wie eine SSID Leerzeichen für das
iwconfig
Tool bereitgestellt wird:Webconverger
Ich habe dieses Beispiel gefunden, das unter der Haube Debian zu sein scheint, daher mag das Beispiel Ihrer Situation angemessen sein, aber es ist schwer sicher zu sagen. Ich spreche es nur an, weil es ein Beispiel dafür zeigt, wie ich erwartet hätte, dass eine URI-Codierungsmethode zum Schutz vor illegalen Zeichen verfügbar gemacht wird.
Auszug
So können Sie möglicherweise die Leerzeichen codieren, die in SSIDs angezeigt werden
%20
.SSIDs
Als ich noch tiefer grub, fand ich diesen Kommentar von der Wikipedia-Seite auf Service Set (802.11-Netzwerk) .
Dieser Kommentar wird durch diese Präsentation von Blackhat EU 2013 mit dem Titel: Praktische Nutzung unter Verwendung einer SSID (Malicious Service Set Identifier) untermauert .
Auszug
Technisch gesehen ist also jedes Zeichen in einer SSID zulässig. Unterschiedliche Implementierungen wie Windows XP, Windows 7 und verschiedene Linux-Versionen erlauben / verbieten Teilmengen von Zeichen in SSIDs.
Verweise
quelle
/etc/network/interfaces
?