Queste domande e risposte SO sono intitolate: esiste uno standard che definisce cosa sono un SSID e una password validi? risponde ad alcune delle tue domande.
estratto
La sezione 7.3.2.1 della specifica 802.11-2007 ( http://standards.ieee.org/getieee802/download/802.11-2007.pdf ) definisce gli SSID.
Un SSID valido è 0-32 ottetti con contenuti arbitrari. Un SSID di lunghezza 0 indica l'SSID jolly (ad esempio nei frame di richiesta del probe).
Non esiste un set di caratteri associato all'SSID: una stringa di 32 byte di NUL byte è un SSID valido.
Ciò implica:
- non dovresti mai usare le normali funzioni di stringa quando manipoli SSID generici (strcpy () e amici).
- non si deve supporre che l'SSID sia stampabile quando, ad esempio, lo si registra su disco
C'è anche questo commento sulla risposta alla domanda SO:
C'è una versione aggiornata dello standard ( http://standards.ieee.org/getieee802/download/802.11-2012.pdf ), che definisce il SSIDEncoding
campo. Può essere UNSPECIFIED
(per dati arbitrari) o UTF8
.
Quindi vorrei cercare gli standard più recenti come guida e assicurarmi di poter gestire ciò che è legale in base a ciò.
Cos'altro?
Inoltre, potrei essere incline a proteggermi normalizzando l'input di un utente usando una qualche forma di funzione di codifica URL (qualcosa che funzionerebbe ovviamente con gli SSID) o semplicemente rimuovendo i caratteri illegali e semplicemente non li autorizzo prima di scrivere queste stringhe in questo file .
Personaggi strani?
Gli unici problemi che ho riscontrato con caratteri strani / speciali relativi al interfaces
file erano questi tipi di bug che sono stati archiviati contro il debian-installer.
debian-installer ha richiesto le mie informazioni sulla rete wireless e le ha utilizzate con successo per connettersi in modalità wireless alla rete. Ha anche scritto le mie informazioni sulla rete wireless su / etc / network / interfaces. Tuttavia, la chiave WPA che ho inserito conteneva almeno un carattere speciale e debian-installer non ha evitato o citato i caratteri speciali in / etc / network / interfaces. Il risultato è stato che, al riavvio, il sistema si è bloccato per molto tempo durante il processo di avvio mentre ha tentato (senza successo) di riconnettersi alla rete wireless. Ho risolto il problema semplicemente citando la chiave WPA elencata in / etc / network / interfaces. Ciò dovrebbe accadere automaticamente se la chiave contiene caratteri speciali.
Inoltre c'erano questi bug, uno relativo agli spazi all'interno del SSID, l'altro relativo alla passphrase:
In entrambi i casi sembrerebbe che avvolgere le stringhe con virgolette doppie sia sufficiente per proteggere i valori per entrambi.
Esempi aggiuntivi
Documenti ufficiali
Scorrendo la documentazione ufficiale ho trovato questo pezzo qui:
I documenti ufficiali mostrano questo esempio:
ap_scan=2
network={
ssid="test adhoc"
mode=1
frequency=2412
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="passphrase"
}
Quindi sembrerebbe che gli spazi siano consentiti, purché siano quotati correttamente. Inoltre c'è questo esempio che spiega come fornire un SSID con spazi allo iwconfig
strumento:
Aggiungi il nome (ssid) per la rete che vuoi creare / unire. Usa virgolette singole se c'è uno spazio nel nome.
$ sudo iwconfig eth1 essid 'name'
Webconverger
Ho trovato questo esempio che sembra essere Debian sotto il cofano, quindi l'esempio potrebbe essere appropriato alla tua situazione, ma è difficile dirlo con certezza. Lo sollevo solo perché mostra un esempio di come mi sarei aspettato che un metodo di codifica URI fosse esposto per proteggere da caratteri illegali.
estratto
Esempio 4 "Spaces in the ESSID", trasmissione del saggio "Hopstock Gjestenett", con chiave WPA uiopzxcv
Evitare spazi negli ESSID. In questo caso, risolviamo il problema con un encodeURI ('Hopstock Gjestenett'), per ottenere la seguente ricetta di avvio:
wpa-ssid=Hopstock%20Gjestenett wpa-psk=uiopzxcv
Quindi potresti essere in grado di codificare gli spazi che compaiono negli SSID usando %20
.
SSID
Scavando ancora di più ho trovato questo commento dalla pagina di Wikipedia sul set di servizi (rete 802.11) .
Ogni BSS o ESS è identificato da un identificatore del set di servizi (SSID), una stringa da 1 a 32 byte. Questa è normalmente una stringa leggibile dall'uomo e quindi comunemente chiamata "nome della rete". 6 In un IBSS, l'SSID viene scelto dal dispositivo client che avvia la rete e la trasmissione dell'SSID viene eseguita in un ordine pseudo-casuale da tutti i dispositivi membri della rete.
Questo commento è supportato da questa presentazione di Blackhat EU 2013, intitolata: Sfruttamento pratico utilizzando un identificatore di set di servizi dannosi (SSID) .
estratto
- Nessuna restrizione definita su quali caratteri possono essere utilizzati all'interno di un SSID (IEEE Std 802.11 ™ -2012)
- Alcune limitazioni basate sui prodotti
- Qualche limitazione di carattere (solo ascii)
- Unicode
Quindi tecnicamente è consentito qualsiasi carattere in un SSID, diverse implementazioni come Windows XP, Windows 7 e diverse versioni di Linux consentono / impediscono sottoinsiemi di caratteri all'interno di SSID.
Riferimenti
wpa-ssid my ssid
.