Я хочу , чтобы убедиться , что все строки я прохожу в линию wpa-ssid "abc"в /etc/network/interfacesне будет использоваться , чтобы вырваться из конфигурации.
Все, что я могу найти в руководстве, это то, что \можно использовать в конце строки для продолжения на следующей строке.
Но как насчет \"посередине строки?
Меня беспокоит SSID что-то вроде
A"
up rm -rf /\
Есть ли какая-либо общая кодировка, которая может использоваться для произвольных символов в поле SSID?
В Debian /etc/network/interfaces(или любом другом дистрибутиве, использующем утилиту Debian ifupdown) последовательность обратного слэша-новой строки удаляется, и обратный слэш не является особенным где-либо еще. Символ двойной кавычки тоже не особенный. Символ #начинает комментарий, если это первый непробельный символ в строке (без продолжения). Нулевые байты обрабатываются как символы новой строки (я думаю - синтаксический анализатор использует строки C и не имеет специальной обработки для нулевых байтов, поэтому они могут вызвать дополнительные неприятности).
Строки конфигурации принимают форму имени опции, за которым следует значение, разделенное пробелом. Ведущие и конечные пробелы игнорируются. Некоторые встроенные опции дополнительно разбивают строку на слова; значение параметров ifaceвсегда выполняется до конца строки.
Например, строка
wpa-ssid "a b" "cd"
устанавливает параметр wpa-ssidв 12-символьную строку "a b" "cd"(внутренний пробел сохраняется).
Сценарий ifupdown WPA Supplicant удаляет двойные кавычки в начале и в конце wpa-ssidстроки конфигурации, строка выше эквивалентна wpa-ssid a b" "cd. Таким образом, вы можете иметь начальные и конечные пробелы в SSID.
Я не могу найти проблему цитирования в сценариях WPA Supplicant ifupdown, поэтому похоже, что все, что создаст ifupdown, безопасно.
Таким образом, вы можете разрешить вставку любой строки в качестве SSID при /etc/network/interfacesусловии, что она не содержит символа новой строки или нулевого байта. Добавьте двойные кавычки вокруг строки (если вы этого не сделаете, SSID с начальным или конечным пробелом, или с тем концом \, который начинается или заканчивается ", будут искажены).
Поэтому я хотел бы обратиться к последнему стандарту для руководства и убедиться, что вы можете разобраться с тем, что на этом основано.
Что еще?
Кроме того, я могу быть склонен защищать себя, нормализуя ввод пользователя, используя некоторую форму функции кодирования URL (что-то, что, очевидно, будет работать с SSID), или просто убирать недопустимые символы и просто не разрешать их до записи этих строк в этот файл. ,
Странные персонажи?
Единственные проблемы, которые я мог найти со странными / специальными символами, связанными с interfacesфайлом, были эти типы ошибок, которые были поданы против установщика debian.
debian-installer запросил информацию о моей беспроводной сети и успешно использовал ее для беспроводного подключения к сети. Он также записал информацию о моей беспроводной сети в / etc / network / interfaces. Однако введенный мною ключ WPA содержал как минимум один специальный символ, и debian-installer не экранировал и не заключал в кавычки специальный символ (ы) в / etc / network / interfaces. В результате при перезагрузке система очень долго зависала в процессе загрузки, пытаясь (безуспешно) повторно подключиться к беспроводной сети. Я исправил проблему, просто цитируя ключ WPA, указанный в / etc / network / interfaces. Это должно произойти автоматически, если ключ содержит специальные символы.
Также были следующие ошибки: одна связана с пробелами в SSID, другие - с парольной фразой:
Поэтому может показаться, что пробелы разрешены, если они указаны правильно. Также есть этот пример, объясняющий, как предоставить SSID с пробелами для iwconfigинструмента:
Добавьте имя (ssid) для сети, которую вы хотите создать / присоединить. Используйте одинарные кавычки, если в имени есть пробел.
$ sudo iwconfig eth1 essid 'name'
Webconverger
Я нашел этот пример, который выглядит как Debian под капотом, так что пример может соответствовать вашей ситуации, но трудно сказать наверняка. Я поднял его только потому, что он показывает пример того, как я ожидал, что метод кодирования URI будет открыт для защиты от недопустимых символов.
Пример 4 "Пробелы в ESSID", передача essid 'Hopstock Gjestenett' с ключом WPA uiopzxcv
Пожалуйста, избегайте пробелов в ESSID. В этом случае мы используем обходной путь для encodeURI ('Hopstock Gjestenett'), чтобы получить следующий загрузочный рецепт:
wpa-ssid=Hopstock%20Gjestenett wpa-psk=uiopzxcv
Таким образом, вы можете кодировать пробелы, которые отображаются в SSID, используя %20.
Каждый BSS или ESS идентифицируется идентификатором набора услуг (SSID) - строкой от 1 до 32 байтов. Обычно это читаемая человеком строка, и поэтому ее обычно называют «сетевым именем». 6 В IBSS SSID выбирается клиентским устройством, которое запускает сеть, и широковещательная передача SSID выполняется в псевдослучайном порядке всеми устройствами, которые являются членами сети.
Нет определенных ограничений относительно того, какие символы могут использоваться в SSID (IEEE Std 802.11 ™ -2012)
Некоторые ограничения на основе продуктов
Некоторое ограничение характера (только ascii)
Unicode
Таким образом, технически любой символ разрешен в SSID, различные реализации, такие как Windows XP, Windows 7, в отличие от различных версий Linux позволяют / запрещают подмножества символов в SSID.
Ваш ответ не доходит до сути: в чем доступно спасение /etc/network/interfaces?
Жиль "ТАК - перестань быть злым"
@ Жиль - спасибо, это было начало сегодня на работе, я добавил некоторую дополнительную информацию, которую я нашел, но не добавил к А тогда. В основном ошибки, связанные с экранированием символов для "wpa-ssid" и "wpa-psk".
SLM
Я не могу сказать, работает ли urlencoding essid в качестве параметра загрузки, но он не работает в файле интерфейсов.
Hultqvist
@phq - Я не удивлен, это была только идея, и кодирование - это, как правило, способ обработки данных, как эта, в других приложениях, например, цитирование - единственный выход, кроме удаления.
wpa-ssid my ssid
.wpa-ssid=my ssid
?/etc/network/interfaces
не использует=
в своем синтаксисе, я пытался прямо сейчас, и он не работает с=
.my ssid
?Это SO Q & A под названием: Существует ли стандарт, который определяет, что является действительным SSID и паролем? отвечает на некоторые ваши вопросы.
выдержка
Также есть комментарий к ответу на вопрос SO:
Поэтому я хотел бы обратиться к последнему стандарту для руководства и убедиться, что вы можете разобраться с тем, что на этом основано.
Что еще?
Кроме того, я могу быть склонен защищать себя, нормализуя ввод пользователя, используя некоторую форму функции кодирования URL (что-то, что, очевидно, будет работать с SSID), или просто убирать недопустимые символы и просто не разрешать их до записи этих строк в этот файл. ,
Странные персонажи?
Единственные проблемы, которые я мог найти со странными / специальными символами, связанными с
interfaces
файлом, были эти типы ошибок, которые были поданы против установщика debian.Также были следующие ошибки: одна связана с пробелами в SSID, другие - с парольной фразой:
В любом случае может показаться, что для защиты значений для обоих достаточно заключить строки в двойные кавычки.
Дополнительные примеры
Официальные документы
Копаясь в официальной документации, я нашел этот бит здесь:
Официальные документы показывают этот пример:
Поэтому может показаться, что пробелы разрешены, если они указаны правильно. Также есть этот пример, объясняющий, как предоставить SSID с пробелами для
iwconfig
инструмента:Webconverger
Я нашел этот пример, который выглядит как Debian под капотом, так что пример может соответствовать вашей ситуации, но трудно сказать наверняка. Я поднял его только потому, что он показывает пример того, как я ожидал, что метод кодирования URI будет открыт для защиты от недопустимых символов.
выдержка
Таким образом, вы можете кодировать пробелы, которые отображаются в SSID, используя
%20
.SSIDs
Копая еще глубже, я нашел этот комментарий на странице Википедии о наборе услуг (сеть 802.11) .
Этот комментарий подкреплен презентацией Blackhat EU 2013 под названием: « Практическая эксплуатация с использованием идентификатора вредоносного набора услуг (SSID)» .
выдержка
Таким образом, технически любой символ разрешен в SSID, различные реализации, такие как Windows XP, Windows 7, в отличие от различных версий Linux позволяют / запрещают подмножества символов в SSID.
Ссылки
источник
/etc/network/interfaces
?