Не все и не сразу стали поддерживать этот стандарт. Однако прошло 7 лет, а бума смайликов в названиях домашних роутеров так и не произошло. Так давайте устроим этот бум сейчас!
Жаль, далеко не все прошивки позволяют это сделать, например ZyXel Keenetic 4G II с последней бета прошивкой 2017 года не умеет UTF-8 в SSID. Возможно как-то можно через CLI настроить, но у меня не получилось. В новых версиях прошивки ZyXel добавили эту возможность, однако нужно более свежее железо. Пусть это будет еще один повод обновить роутер. На ASUS, TP-Link и прочем зоопарке не пробовал, сразу взял MikroTik, т.к. там это точно работает.
MikroTik
Я проводил свои опыты на MicroTik hAP lite с последней на сегодня стабильной прошивкой. Скорее всего этот трюк будет работать на всех микротиках с любой прошивкой.
SSID UTF-8
Сменить название довольно просто, идем на сайт, копипастим в формочку любые символы из таблички, жмем Go и копируем результат в терминал:
/interface wireless set [find name="wlan1"] ssid="\F0\9F\86\93\F0\9F\A7\80"
Пароль UTF-8
Когда гости разошлись, сеть Wi-Fi надо запаролить. Паролем сделаем также UTF-8 строку. Все на том же сайте выбираем себе подходящий пароль, жмем Go. Из результата берем только значение в кавычках и пишем в терминал:
/interface wireless security-profiles set [find name="default"]
mode=dynamic-keys authentication-types=wpa2-psk wpa2-pre-shared-key="\F0\9F\86\93\F0\9F\A7\80"
Подключение с паролем UTF-8
И вот теперь самое сложное. Как ввести пароль UTF-8? Когда Вы вводите текст в мессенджеры, то там и раскладка клавиатуры специальная есть с иконками Emoji. Но при вводе пароля Wi-Fi доступна только стандартная клавиатура! Можно догадаться скопировать текст сообщения из мессенджера и вставить его вместо пароля, но вряд ли это сработает. Можете задать эту задачку своим знакомым сисадминам.
Пользователь ky0 предложил использовать QR-код с реквизитами подключения. Однако на моем iPhone этот трюк не сработал.
Подключение Mac, iPhone, iPad
Вот как я обошел это ограничение на устройствах Apple: подключил Мак через консоль, а остальные iДевайсы загрузили профиль сети Wi-Fi из облака!
Просканируем сети Wi-Fi командой:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
И подключимся к нашей сети с заданным паролем (терминал умеет в UTF-8, в отличие от Хабра):
networksetup -setairportnetwork en1 [название] [пароль]
У меня сетевая карточка сидит на en1, у Вас может отличаться. Проверьте командой:
networksetup -listallhardwareports
Теперь Mac успешно подключился к сети, спустя какое-то небольшое время он синхронизирует пароли в iCloud, и iPhone скоро загрузит их и самостоятельно подключится к нашей Wi-Fi.
P.S.: В боевой системе такие пароли ставить точно не следует. Хотя в названии сети вреда от них не будет, даже если не отобразит смайлик, к сети устройство подключиться сможет. Но ставить UTF-8 пароль в кафе или офисе точно не следует — посетители и коллеги не оценят юмора.
Дома — почему бы и нет? К тому же если все устройства нормально примут такой пароль, то вот сосед Васька вряд ли сможет подключиться к такой сети. Плюсом будет защита от перебора и от слива пароля в базы типа 3wifi.stascorp.com. Популярная крякалка роутеров RouterScan использует ASCII кодировку, по-этому при конвертации смайлика в ASCII будут либо крякозябры, либо пустая строка. Кстати, проверь свой роутер, возможно он давно уже в базе 3wifi…
Крутая вещь пароль UTF-8! Смайлики легко запомнить, можно использовать разные языки, а не только Английский+цифры+некоторые спецсимволы. Не хватает только нативной поддержки в гаджетах. Надеюсь производители внедрят поддержку UTF-8 вместе с WPA3.
ZyXel Keenetic
В ZyXel Keenetic OS реализована поддержка SSID в кодировке UTF-8 в прошивке 2.13.С0 от 20-09-2018
Keenetic Start (KN-1110)
Keenetic 4G (KN-1210)
Keenetic Lite (KN-1310)
Keenetic Omni (KN-1410)
Keenetic City (KN-1510)
Keenetic Air (KN-1610)
Keenetic Extra (KN-1710)
Keenetic Ultra (KN-1810)
Zyxel Keenetic Start II
Zyxel Keenetic Lite III rev.B
Zyxel Keenetic 4G III rev.B
Zyxel Keenetic Giga III
Zyxel Keenetic Ultra II
Zyxel Keenetic Air
Zyxel Keenetic Extra II
Для поддерживаемых устройств SSID меняется через web-интерфейс.
Xiaomi
В стоковой прошивке поддерживает UTF-8.
Коммент от extrawelt
Роутеры с прошивкой Padavan
Xiaomi router с прошивкой Padavan по-умолчанию не позволяет указывать эмодзи в качестве SSID. Но т.к. валидация происходит в JS, это довольно просто решается через консоль разработчика, например, в Хроме.
Нужно просто, находясь на странице редактирования SSID, написать в консоли:
window.validate_ssidchar = function () { return true; };
Чтобы эмодзи можно было указать и в пароле, нужно выполнить отключить еще одну функцию валидации:
window.validate_string = function () { return true; };
Источник: www.reddit.com/r/javascript/comments/5zcb8m/can_you_help_me_allow_my_router_to_accept_as_the
Спасибо пользователю ferosod за этот комментарий!
Android
Samsung Galaxy S8+ (Android pie) позволяет вставить скопированный эмодзи из буфера как в имя сети, так и в пароль. Клавиатура стандартная от самсунга. (инфа от DaemonGloom).
UPD: Спасибо всем за обратную связь, продолжаю обновлять топик Вашими наблюдениями. Интересно, получилось ли подключиться используя QR-code? А еще интересуют роутеры Asus, Tp-link, D-Link.
TODO:
- Поддержка UTF-8 SSID в роутерах ASUS/TP-Link/D-Link/etc?
- Подключение с паролем UTF-8 в Windows/Linux/Android?
- Попробовать QR-code для подключения
- Анимация скриптом
Комментарии (92)
onix74
05.02.2019 08:34Первое, что приходит на ум — выделиться из серой массы и использовать в названии сети смайлики Emoji.
Мне не приходит. ЧЯДНТ? :-)akokarev Автор
05.02.2019 08:41К сожалению на хабре запрещены смайлики в тексте статей, а у меня они были… Поправил, обновите, теперь статья загрузится полностью. Жаль что так получилось, предпросмотр в черновиках вел себя иначе…
andreymal
05.02.2019 13:13+2Если текст порезался, то скорее всего не запрещены, а просто кому-то из админов лень сконвертировать базу из utf8 в utf8mb4
Примерно по тем же причинам, почему на десктопном хабре под этим комментарием нет кнопки «Ответить»andreymal
05.02.2019 14:14+2А вот теперь всё что ниже видно только на мобильной версии Хабра. Пришла пора писать багрепорт
brzsmg
05.02.2019 14:24Да, все перекосило списком.
Проблемаdaleraliyorov
05.02.2019 16:07А можете, пожалуйста, рассказать суть фокуса: как у вас это получилось?
daleraliyorov
05.02.2019 16:23andreymal, очень убедительно, спасибо!
Мы починим, а пока можете обратно вернуть, пожалуйста?akokarev Автор
05.02.2019 16:27+1я думаю легко чиниться простым добавлением спойлера в следующем сообщении
починилна всякий случай
ferosod
05.02.2019 09:25Xiaomi router с прошивкой Padavan по-умолчанию не позволяет указывать эмодзи в качестве SSID. Но т.к. валидация происходит в JS, это довольно просто решается через консоль разработчика, например, в Хроме.
Нужно просто, находясь на странице редактирования SSID, написать в консоли:
window.validate_ssidchar = function () { return true; };
Источник: www.reddit.com/r/javascript/comments/5zcb8m/can_you_help_me_allow_my_router_to_accept_as_the
UPD ЧТобы эмодзи можно было указать и в пароле, нужно выполнить отключить еще одну функцию валидации:
window.validate_string = function () { return true; };
Вот как выглядит на Андроидakokarev Автор
05.02.2019 10:04Спасибо за инфу, добавил в пост. Картинку добавлять не стал, могут расценить как ненависть к Андроидам…
ky0
05.02.2019 09:31И вот теперь самое сложное. Как ввести пароль UTF-8?
Очевидное решение — QR-код с реквизитами подключения. Удобно не только для ввода эмодзей, но и вообще.akokarev Автор
05.02.2019 09:44Интересное решение. На iPhone не работает с символами UTF-8.
ky0
05.02.2019 09:53Не удивлён :) По-моему, у них вообще шаринг вайфая через QR не того, только по NFC…
akokarev Автор
05.02.2019 10:01На самом деле iPhone раньше всех стали поддерживать QR-code для подключения к Wi-Fi. Но вот имено с кодировкой UTF-8 в QR не дружит. Возможно только у меня такая проблема, добавил в пост и в TODO
wxmaper
05.02.2019 10:59> пароль: кружка пива и печенька
Хммм. Минимальная длина пароля 8 символов, в андроиде даже кнопка подключения не загорается если их меньше.akokarev Автор
05.02.2019 12:46Предложенные два эмодзи в UTF-8 кодировке занимают 8 байт, это и есть минимальная необходимая длинна пароля. А вот в ASCII 8 байт это 8 символов, по-этому все и привыкли в 8ми символам.
Borz
05.02.2019 13:20а проверяется ли длина пароля в байтах? Или проверяется всё-таки в количестве символов? Если второе, то всё равно сколько фактически в байтах занимает символ
x86corez
05.02.2019 13:30Вообще зависит от каждой конкретной реализации прошивки роутера / клиента, но по стандарту WPA в байтах.
Borz
05.02.2019 13:35разговор за проверку на стороне Android был, а не со стороны роутера
DaemonGloom
05.02.2019 13:49+1Проверяется в байтах. Например, 4 «какашки» дают 8 требуемых байт для разрешения кнопки «сохранить». Samsung S8+, Android Pie. В других телефонах, впрочем, ситуация может отличаться.
akokarev Автор
05.02.2019 16:09Каждый символ UTF-8 это 4 байта. Если у Вас при копировании вставилось только 2 байта, значит какие-то 2 байта просто отбросились, скорее всего как недопустимые… Это я к тому, что 4 какашки это 16 байт, а не 8
DaemonGloom
06.02.2019 06:32Да, тогда это однозначный баг. И, может, даже в апстриме. Увы, никто с Андроидом более не отписался в комментариях для сравнения.
x86corez
05.02.2019 13:54А что, по-вашему Android бывает только в варианте одной единственной прошивки? :)
Borz
05.02.2019 14:00эм. Аргументация в комментарии, к которому я писал, была однозначная — что проверка в байтах, что не есть верно — вероятнее всего, в UI доступность кнопки проверяется не в введённых байтах, а в количестве введённых символов в текстовом поле.
Chupaka
05.02.2019 11:16Хм… Galaxy S8+, при подключении к вайфаю из клавиатуры пропадает русская раскладка и эмодзи, при попытке вставить скопированный эмодзи из буфера всплывает ошибка "Неверный символ" и ничего не вставляется :(
bopoh13
05.02.2019 11:31Так и написано, что доступна только 'стандартная клавиатура'Как ввести пароль UTF-8? (пробуйте)
На Android 8.1. добавить сеть руками, ввести Emoji в «SSID», затем вырезать и вставить в «Password».akokarev Автор
05.02.2019 16:40ZyXel Keenetic OS 2.13.С0 от 20-09-2018: Реализована поддержка SSID в кодировке UTF-8;
DaemonGloom
05.02.2019 12:03S8+ (android pie) позволяет вставить скопированный эмодзи из буфера как в имя сети, так и в пароль. Клавиатура стандартная от самсунга.
Chupaka
05.02.2019 13:05Что-то я делаю не так, видимо… Переключился на стандартную клавиатуру Samsung — всё равно «Неверный символ», даже при добавлении сети вручную (но тут хотя бы русская раскладка появилась).
Jeka178RUS
05.02.2019 12:10Не дай бог такое просочиться в массы.
brzsmg
05.02.2019 13:23+1Согласен.
Например: перебрать пароль из 2 Emoji, это не тоже самое что перебрать 8-и значный пароль.akokarev Автор
05.02.2019 13:44Сколько вариантов эмодзи? А если не только эмодзи, но и полный набор utf-8 символов? Нужно считать… Опять-таки, сейчас если кто и брутфорсит пароли, то используют словари на базе латинских букв и цифр, эмодзи никто не переберает...
brzsmg
05.02.2019 14:12+1После вашей статьи, название в Emoji будет подсказкой, попробовать перебрать.
Согласно 11 версии Unicode сейчас 1212 Emoji. В одном байте 256 значений (проигнорируем недопустимые символы).
Рассчитываем количество комбинаций.
256^8 = 18 446 744 073 709 551 616 (символов)
1212^2 = 1 468 944 (Emoji)
Разница колоссальная.akokarev Автор
05.02.2019 15:43+1В базе 3wifi есть онлайн статистика. Всего в базе почти 10млн записей, а уникальных парольных комбинаций всего 6млн. Т.е., грубо говоря, на половине роутеров стоят совпадающие пароли. Идем дальше, более 6% роутеров вообще не запоролены! Почти на каждом сотом стоит пароль 12345678. Чуть реже стоит пароль 123456789. Знаешь какой пароль на третьем месте? Правильно: 1234567890. В целом, топ 10 паролей покрывают 3% роутеров!
Так что 1,5 млн комбинаций из 2х эмодзи значительно сложнее поддаются перебору, чем любимые всеми даты рождения и номера телефонов. А ещё эмодзи легче запомнить, а значит можно сделать пароль из большего числа символов, а там уже и комбинаций значительно больше. А ещё кроме эмодзи в UTF-8 много других символов…
HappyGroundhog
05.02.2019 13:08+4Если пароли с эмодзи войдут в массу, то этот анекдот станет как никогда актуальным)
Фараон: Здравствуйте, можно забронировать столик на имя Сакрахотеп?
Администратор: Продиктуйте, пожалуйста, по буквам.
Фараон: Птичка, два треугольника, волнистая линия, солнце, опять птичка, собачья голова, скарабей.
GanulArtem
05.02.2019 15:50Можно для чайника, какие действия нужно сделать последовательно?
У меня мак и роутер тоже эпл)akokarev Автор
05.02.2019 15:51Попробуй просто скопировать эмодзи и вставить в качестве названия в утилите AirPort.
STR470S
05.02.2019 16:46Что я делаю не так?
RouterOS 6.43.11, iOS 12.1.2
Скриншоты
akokarev Автор
05.02.2019 16:47если Вы пытаетесь вставить волшебника, то через терминал попробуйте
/interface wireless set [find name="wlan2"] ssid="\f0\9f\a7\99"
STR470S
06.02.2019 14:38Спасибо большое, только пришлось латинские символы в верхний регистр перевести.
Скажите, пожалуйста, почему Ваш вариант сработал, а мой нет? (код получил по инструкции из этого поста)akokarev Автор
06.02.2019 23:21Потому что вы на сайте SSID-генератора вставили текст «U+1F9D9», а туда надо было вставлять сам смайл
tka4ev
05.02.2019 16:49С Микротиком получилось. Можно ли в Кеенетик это запихать?
tka4ev
05.02.2019 18:24Оказалось с ними вообще всё просто. Сразу в интерфейсе вставляешь и всё.
akokarev Автор
05.02.2019 18:50Зависит от прошивки. У меня на старом Keenetic 4G II с последней прошивкой не принимает UTF-8, ни через Веб морду, ни через CLI. Возможно как-то можно отключить JS скриптами, но я не осилил, слишком все обфусцировано.
tka4ev
06.02.2019 17:23А если сохранить конфигурационный файл на компьютер, в нём заменить название сети строкой взятой из новой прошивки и залить обратно?
Вот этим к примеру: ssid "\xf0\x9f\x93\x9e\xe2\x91\xa4\xe2\x91\xa2-\xe2\x91\xa3\xe2\x93\xaa-\xe2\x93\xaa\xe2\x91\xa1"
Это только название из символов так в этом файле выглядит. С паролями не заморачивался вообще.
DistortNeo
05.02.2019 17:49+1А ведь ключ и имя точки — это просто последовательсти байт (изначально ASCII), а не символов. Можно же вообще делать имена точек, которые являются некорректной UTF-8 последовательностью.
Moskus
05.02.2019 20:38+3Добавлю немного буквоедства.
Не совсем верно говорить о «поддержке стандарта Unicode в паролях» (к слову, SSID это касается ровно в той же степени — имя сети моего hotspot-а на телефоне — emoji с лягушачьей головой и осьминогом). Что пароль, что SSID, согласно стандарту — просто последовательность octet-ов, то есть байтовая последовательность, а даже не последовательность символов.
А вот уже формы ввода (и даже, вероятно, операционные системы активных сетевых устройств) — препятствие для набора произвольных последовательностей или их правильного сохранения в настройках. По идее, в соответствии с тем, что это просто байтовая последовательность, любая такая форма ввода должна бы принимать ее в виде какой-нибудь escape-последовательности, но в реальности это совершенно не так, потому что SSID и пароль стало принято интерпретировать, как строку символов.Moskus
05.02.2019 23:56Уточню, почему я говорю именно об интерфейсе. Нередки ситуации, когда, например, через ручное редактирование конфигурации или импорт профиля подключения, возможно использовать самые экзотические последовательности байт для пароля или SSID, при том, что через какой-либо интерфейс (не важно, CLI или GUI) ввести такие последовательности совершенно невозможно.
genrix936
05.02.2019 21:13-3Вот и наступила расплата
за любовь к
Router Scan by Stas'M.
В пролете
и дома и на работе.
Одно успокаивает,
здесь большинство также в пролете!
kost
06.02.2019 02:00Работает на Linksys.
akokarev Автор
06.02.2019 02:49Какая можель и прошивка? Через web интерфейс настраивали? Пароли utf-8 принимает?
kost
06.02.2019 08:20Linksys WRT1900AC: www.linksys.com/us/p/P-WRT1900AC
Прошивка родная. Пароль не пробовал.
Телефон на Android в списке сетей emoji не показывает. MacOS и Windows 10 показывают.
VADemon
06.02.2019 08:06D-Link DIR630 (старый домашний роутер dlink): Смайлы в SSID отображаются корректно, но ввод настройки ограничен Javascript'ом на странице (запрещён Unicode).
Обычным POST-запросом дело не решилось (не копался), переопределил функцию проверки в консоли:
strchk_unicode = Object.assign(function (str) { return false; }, strchk_unicode);
Завтра вечером/ночью протестирую роутер TP-Link.
ElvenSailor
06.02.2019 11:11Ещё один инструмент для достижения цели: сделать МАКСИМАЛЬНО НЕУДОБНО! :)
Senpos
06.02.2019 14:02Netis WF2411E, родная прошивка, через веб-интерфейс позволил установить SSID в виде emoji без каких-либо проблем. С телефона посмотрел, emoji видно. Выглядит забавно. :)
Установить пароль в виде emoji не позволил, сработала валидация.
ArtemDolgih
06.02.2019 17:25Смог победить Asus RT-N12
red_andr
07.02.2019 00:19Каким образом?
ArtemDolgih
07.02.2019 05:52По аналогии со всеми остальными роутерми, в js коде убрал проверку на вводимые символы. Написал автору, думаю добавит
Kernell
06.02.2019 17:25Когда Вы вводите текст в мессенджеры, то там и раскладка клавиатуры специальная есть с иконками Emoji. Но при вводе пароля Wi-Fi доступна только стандартная клавиатура!
Очень давно пользуюсь клавиатурой SwiftKey на Android, там можно включать Emoji при вводе пароля
cccco
07.02.2019 17:18+1На TP-Link (WR1043ND v1, прошивка 3.13.15 ) полёт для SSID — нормальный. Проверка идёт через JS, и символы Emoji проверку не проходят. Проверяет функция checkname() в центральном фрейме. Замена её на новую не помогла, т.к. судя по всему, js постоянно перегружается с роутера. Пришлось воспользоваться дебагером Хрома. Выставил брейкпоинт в этой функции и подменил значение на валидное (про дебагер в Хроме в этой статье можно почитать).
RealSaniok
07.02.2019 19:28UniFi с контроллером v5.9.29
SSID успешно задаётся
Про пароль говорит «This field can only contain spaces or printable ASCII characters in the length of 8-63.» (валидацию пока отключить не нашёл как)
RealSaniok
07.02.2019 20:00Кстати если кто не в курсе, в Windows «эмоджи-клавиатура» вызывается при помощи Win+;
alexanster
07.02.2019 20:28У меня вызвалась экранная лупа и сбила расположение всех иконок. Повбивав би
Nikopol25
О чем статья то?
akokarev Автор
Обновите, в статье были смайлики эмодзи, хабр порезал статью. Исправил.