Esta sessão de perguntas e respostas da SO intitulada: Existe um padrão que define o que é um SSID e senha válidos? responde a algumas de suas perguntas.
excerto
A seção 7.3.2.1 da especificação 802.11-2007 ( http://standards.ieee.org/getieee802/download/802.11-2007.pdf ) define SSIDs.
Um SSID válido é de 0 a 32 octetos com conteúdo arbitrário. Um SSID de comprimento 0 indica o SSID curinga (em quadros de solicitação de análise, por exemplo).
Não há um conjunto de caracteres associado ao SSID - uma seqüência de 32 bytes de NUL-bytes é um SSID válido.
Isso implica:
- você nunca deve usar funções normais de string ao manipular SSIDs genéricos (strcpy () e amigos).
- você não deve assumir que o SSID é imprimível ao, por exemplo, registrá-lo no disco
Há também este comentário na resposta à pergunta SO:
Há uma versão atualizada do padrão ( http://standards.ieee.org/getieee802/download/802.11-2012.pdf ), que define o SSIDEncoding
campo. Pode ser UNSPECIFIED
(para dados arbitrários) ou UTF8
.
Então, eu procuraria o padrão mais recente para obter orientação e garantir que você possa lidar com o que é legal com base nisso.
O quê mais?
Além disso, posso estar inclinado a me proteger normalizando a entrada de um usuário usando alguma forma de função de codificação de URL (algo que funcionaria com os SSIDs obviamente) ou simplesmente remover caracteres ilegais e simplesmente não permitir que eles antes de escrever essas strings neste arquivo .
Personagens estranhos?
Os únicos problemas que eu pude encontrar com caracteres estranhos / especiais relacionados ao interfaces
arquivo foram esses tipos de bugs que foram arquivados no debian-installer.
O debian-installer solicitou minhas informações de rede sem fio e a usou com sucesso para conectar-se sem fio à rede. Ele também escreveu minhas informações de rede sem fio em / etc / network / interfaces. No entanto, a chave WPA que eu inseri continha pelo menos um caractere especial, e o debian-installer não escapou ou citou os caracteres especiais em / etc / network / interfaces. O resultado foi que, na reinicialização, o sistema travou por muito tempo durante o processo de inicialização, enquanto tentava (sem êxito) reconectar-se à rede sem fio. Corrigi o problema simplesmente citando a chave WPA listada em / etc / network / interfaces. Isso deve acontecer automaticamente se a chave contiver caracteres especiais.
Também havia esses bugs, um relacionado a espaços no SSID, os outros relacionados à senha:
Em ambos os casos, parece que agrupar as cadeias com aspas duplas é suficiente para proteger os valores de ambas.
Exemplos adicionais
Documentos oficiais
Pesquisando a documentação oficial, encontrei este trecho aqui:
Os documentos oficiais mostram este exemplo:
ap_scan=2
network={
ssid="test adhoc"
mode=1
frequency=2412
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="passphrase"
}
Portanto, parece que os espaços são permitidos, desde que sejam citados corretamente. Também há este exemplo explicando como fornecer um SSID com espaços para a iwconfig
ferramenta:
Adicione o nome (ssid) à rede que você deseja criar / ingressar. Use aspas simples se houver um espaço no nome.
$ sudo iwconfig eth1 essid 'name'
Webconverger
Eu encontrei este exemplo que parece ser o Debian, então o exemplo pode ser apropriado à sua situação, mas é difícil dizer com certeza. Apresento isso apenas porque mostra um exemplo de como eu esperaria que um método de codificação de URI fosse exposto para proteger contra caracteres ilegais.
excerto
Exemplo 4 "Espaços no ESSID", transmitindo o essid 'Hopstock Gjestenett', com a chave WPA uiopzxcv
Evite espaços nos ESSIDs. Nesse caso, contornamos um encodeURI ('Hopstock Gjestenett'), para obter a seguinte receita de inicialização:
wpa-ssid=Hopstock%20Gjestenett wpa-psk=uiopzxcv
Portanto, você poderá codificar os espaços que aparecem nos SSIDs usando %20
.
SSIDs
Aprofundando ainda mais, encontrei esse comentário na página da Wikipedia no conjunto de serviços (rede 802.11) .
Cada BSS ou ESS é identificado por um identificador de conjunto de serviços (SSID) - uma sequência de 1 a 32 bytes. Normalmente, é uma string legível por humanos e, portanto, comumente chamada de "nome da rede". 6 Em um IBSS, o SSID é escolhido pelo dispositivo cliente que inicia a rede e a transmissão do SSID é realizada em uma ordem pseudo-aleatória por todos os dispositivos que são membros da rede.
Este comentário é apoiado por esta apresentação da Blackhat EU 2013, intitulada: Exploração prática usando um identificador de conjunto de serviços maliciosos (SSID) .
excerto
- Nenhuma restrição definida sobre quais caracteres podem ser usados em um SSID (IEEE Std 802.11 ™ -2012)
- Alguma limitação baseada em produtos
- Alguma limitação de caracteres (apenas ascii)
- Unicode
Portanto, tecnicamente, qualquer caractere é permitido em um SSID, diferentes implementações, como Windows XP, Windows 7, vs. várias versões do Linux, permitem / não permitem subconjuntos de caracteres nos SSIDs.
Referências
wpa-ssid my ssid
.