символы ESC в/etc/network/interfaces

UDF является кандидатом. Это работает out-of-the-box над Linux> = 2.6.31, Windows> = Vista, MacOS> = 9 и на многих BSDs.

Примечание: UDF существует различных версий, которые одинаково не поддерживаются на всех платформах, видят Википедию - Совместимость.

UDF может быть создан на Linux с инструментом mkudffs от пакета udftools.

8
26.11.2013, 01:46
2 ответа

В Debian /etc/network/interfaces (или любое другое распределение с помощью ifupdown утилиты Debian), последовательность новой строки обратной косой черты удалена, и обратная косая черта не является особенной больше нигде. Символ двойной кавычки не специален также. Символ # запускает комментарий, если это - первый непробельный символ на (непродолжение) строка. Пустые байты рассматривают как символы новой строки (я думаю — синтаксический анализатор использует струны до и не имеет никакой специальной обработки для пустых байтов, таким образом, они могли бы вызвать дополнительный вред).

Строки конфигурации принимают форму имени опции, сопровождаемого значением, разделенным пробелом. При продвижении и запаздывании проигнорирован пробел. Некоторые встроенные опции далее анализируют строку в слова; значение опций к iface всегда выполнения в конец строки.

Например, строка

wpa-ssid  "a  b"  "cd"  

устанавливает опцию wpa-ssid к 12 символьным строкам "a  b"  "cd" (внутренний пробел сохраняется).

ifupdown сценарий Суппликанта WPA разделяет двойные кавычки вначале и в конце wpa-ssid строка конфигурации, строка выше эквивалентна wpa-ssid a  b"  "cd. Таким образом, у Вас может быть ведущий и запаздывающий пробел в SSID.

Я не могу найти проблему заключения в кавычки в Суппликанте WPA ifupdown сценариями, таким образом, он похож на что-либо, что произведет ifupdown, безопасно.

Таким образом можно позволить любой строке как SSID быть введенной в /etc/network/interfaces, при условии, что это не содержит новой строки или пустого байта. Добавьте двойные кавычки вокруг строки (если Вы не делаете, SSIDs с продвижением или запаздывающим пробелом или тем концом с \, или это начинается или заканчивается ", будет искажен).

5
27.01.2020, 20:13
  • 1
    На самом деле я успешно попробовал wpa-ssid my ssid. –  hultqvist 26.11.2013, 11:22
  • 2
    @phq - чтобы быть ясными, Вы смогли использовать строку wpa-ssid=my ssid? –  slm♦ 26.11.2013, 18:48
  • 3
    @slm не, /etc/network/interfaces не использует = в его синтаксисе я попробовал прямо сейчас, и он не работает с =. –  hultqvist 27.11.2013, 11:34
  • 4
    @phq - но к Вашей точке, Вы смогли дать ему SSID с пробелами затем? my ssid? –  slm♦ 27.11.2013, 15:00
  • 5
    @slm да SSID с пробелами всегда работал –  hultqvist 27.11.2013, 15:54

Это ТАК названные Вопросы и ответы: существует ли стандарт, который определяет то, что допустимый SSID и пароль? ответы некоторые Ваши вопросы.

выборка

Раздел 7.3.2.1 из 802.11-2007 спецификаций (http://standards.ieee.org/getieee802/download/802.11-2007.pdf) определяют SSIDs.

Допустимый SSID является 0-32 октетами с произвольным содержанием. SSID с 0 длинами указывает на подстановочный знак SSID (в тестовых кадрах запроса, например).

Нет никакого набора символов, связанного с SSID - 32 строки байтов NUL-байтов являются допустимым SSID.

Это подразумевает:

  • Вы никогда не должны использовать нормальные строковые функции при управлении универсальным SSIDs (strcpy () и друзья).
  • Вы не должны предполагать, что SSID является печатаемым когда, например, регистрируя его к диску

Существует также этот комментарий к ответу на ТАК вопрос:

Существует обновленная версия стандарта (http://standards.ieee.org/getieee802/download/802.11-2012.pdf), который определяет SSIDEncoding поле. Это может быть UNSPECIFIED (для произвольных данных) или UTF8.

Таким образом, я обратился бы к последнему стандарту для руководства и удостоверился бы, что можно иметь дело с тем, что законно на основе этого.

Что еще?

Дополнительно я мог бы быть склонен охранять, мои сам нормализуют вход пользователя с помощью некоторой формы функции кодирования URL (что-то, что работало бы с SSID's, очевидно), или просто разделите запрещенные символы и просто не позвольте им до записи этих строк в этот файл.

Странные символы?

Единственные проблемы я мог найти со странными / специальными символами связанный с interfaces файл был этими типами ошибок, которые были зарегистрированы против debian-установщика.

debian-установщик запросил мою информацию беспроводных сетей и успешно использовал ее для соединения с помощью беспроводных технологий с сетью. Это также записало мою информацию о беспроводных сетях в/etc/network/interfaces. Однако ключ WPA, который я ввел содержавший по крайней мере один специальный символ и debian-установщик, не вышел или заключил специальный символ (символы) в кавычки в/etc/network/interfaces. Результат состоял в том, что на перезагрузке система, подвешенная в течение очень долгого времени во время процесса начальной загрузки, поскольку, это пыталось (неудачно) снова соединиться с беспроводной сетью. Я решил проблему путем простого заключения в кавычки ключа WPA, перечисленного в/etc/network/interfaces. Это должно произойти автоматически, если ключ содержит специальные символы.

Также были эти ошибки, один связанный к пробелам в SSID, другие связанные с паролем:

В любом случаи казалось бы, что обертывания строк с двойными кавычками достаточно для защиты значений для обоих.

Дополнительные примеры

Официальные документы

При рытье через официальную документацию я нашел этот бит здесь:

Официальные документы показывают этот пример:

ap_scan=2
network={
        ssid="test adhoc"
        mode=1
        frequency=2412
        proto=WPA
        key_mgmt=WPA-NONE
        pairwise=NONE
        group=TKIP
        psk="passphrase"
}

Таким образом, казалось бы, что пробелы позволяются, пока они заключаются в кавычки правильно. Также существует этот пример, объясняющий, как предоставить SSID пробелы к iwconfig инструмент:

Добавьте имя (ssid) для сети, которую Вы хотите создать/присоединиться. Используйте одинарные кавычки, если существует пространство на имя.

   $ sudo iwconfig eth1 essid 'name'

Webconverger

Я нашел этот пример, который надеется быть Debian под капотом, таким образом, пример может соответствовать Вашей ситуации, но трудно сказать наверняка. Я поднимаю его только потому, что это показывает пример того, как я ожидал бы, что метод кодирования URI будет выставлен для защиты от запрещенных символов.

выборка

Пример 4 "Пробелов в ESSID", широковещательно передавая essid 'Hopstock Gjestenett', с ключом WPA uiopzxcv

Избегайте пробелов в ESSIDs. В этом случае мы обходное решение с encodeURI ('Hopstock Gjestenett'), для получения следующего рецепта начальной загрузки:

   wpa-ssid=Hopstock%20Gjestenett wpa-psk=uiopzxcv

Таким образом, Вы смогли кодировать пробелы, которые обнаруживаются в использовании SSIDs %20.

SSIDs

При рытье еще глубже я нашел этот комментарий от страницы Wikipedia на Сервисном наборе (802,11 сети).

Каждый BSS или ESS определяются сервисным идентификатором набора (SSID) - 1 - 32 строки байтов. Это обычно - человекочитаемая строка и таким образом обычно называло "сетевое имя".6 В IBSS, SSID выбран клиентским устройством, которое запускает сеть, и широковещательная передача SSID выполняется в псевдослучайном порядке всеми устройствами, которые являются членами сети.

Этот комментарий сохранен этой презентацией из ЕС Blackhat 2013, названный: Практическая Эксплуатация Используя Злонамеренный Сервисный Идентификатор Набора (SSID).

выборка

  • Никакие определенные ограничения относительно того, какие символы могут использоваться в SSID (Станд. IEEE 802.11™-2012)
  • Некоторое ограничение на основе продуктов
    • Некоторое символьное ограничение (только ASCII)
    • Unicode

Таким образом, технически любой символ позволяется в SSID, различные реализации, такие как Windows XP, Windows 7, по сравнению с различными версиями Linux позволяет/запрещает подмножества символов в SSIDs.

Ссылки

0
27.01.2020, 20:13
  • 1
    Ваш ответ не переходит к сути дела: в чем выход доступен /etc/network/interfaces? –  Gilles 'SO- stop being evil' 26.11.2013, 01:46
  • 2
    @Gilles - спасибо, это был запуск ранее сегодня на работе, я добавил некоторую дополнительную информацию, которую я нашел, но не добавил к затем. Главным образом ошибки, связанные с выходом символов для "wpa-ssid" и "wpa-psk". –  slm♦ 26.11.2013, 03:56
  • 3
    , который я не могу сказать, работает ли urlencoding essid параметром начальной загрузки, но он не работает в файле интерфейсов. –  hultqvist 26.11.2013, 11:17
  • 4
    @phq - я не удивлен, это было только идеей, и кодирование обычно является способом, которым Вы имеете дело с очисткой данных как это в других приложениях, заключая это в кавычки, казалось бы, было бы единственной другой опцией, за пределами удаления его. –  slm♦ 26.11.2013, 18:47

Теги

Похожие вопросы