ScriptUtilities ByteArray sample — unicode to punycode online decoder and encoder.
This sample converter demonstrates Punycode property of a ByteArray object. This property let’s you convert data between Unicode and Punycode. You can use the property as an IDN (Internationalized Domain Names, RFC3492) convertor for DNS hosts,
the ByteArray object let’s you do utf-8 to idn conversion (or another code pages, for example windows-1250, iso-8859-2, shift-jis, see available ConvertCodePages)
The ByteArray let’s you work with binary and unicode data, save and restore the data, convert the data between more than 100 code pages, convert to HexString and Base64.
Another online samples (utilities, converting, upload)
On-line base64 decoder and encoder — let’s you convert text data and files from/to a Base64 string.
Punycode/IDN decoder and encoder — online conversion between unicode (utf-8), punycode and IDNs (Internationalized Domain Names)
URL Encoder, escape with charset conversion
URL Decoder, unescape with charset conversion
Online binary file to SQL field (HexString or base16) — let’s you create an SQL statement to insert/update binary or a text file to a SQL database field. You can also create whole WSH (VBScript) to do the action.
Online Codepage & Charset text and file converter — let’s you convert text, html and files between many code pages.
Live upload with progress sample — simple upload of files to ASP with progress bar.
Live upload with image preview — Upload with many additional features: image preview, size preview and file type checking (before upload), server-side checking for file type, file contents, file size and upload size and more.
IAF password recovery — Recovery passwords from your IAF File. Online IAF file generator — Create email account configuration file for Outlook express online.
Online IAF decoder — Decode IAF configuration files online.
Gmail pop and smtp configuration generator — Outlook config for Gmail.
quoted-printable encoder online sample.
quoted-printable decoder online sample.
Related links
Punycode property
ScriptUtilities ByteArray class
Download trial version of ScriptUtilities 800kB .exe setup, evaluation version with help and samples.
RFC 3492 — Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)
Punycode — Вебмастерье
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Автор
Majornetik
Дата публикации
Article read time
2 мин. на чтение
Punycode — это метод преобразования символов, содержащихся в доменных именах, из Unicode в ACE (ASCII Compatible Encoding). Полученные на выходе символы, полностью соответствуют стандартам инфраструктуры DNS.
Зачем нужен
Система доменных имен располагает собственными правилами. Одним из них является следующее условие: домен должен состоять максимум из 26 символов, относящихся к латинскому алфавиту или цифрам. Также в доменном имени может использоваться дефис.
Процедура преобразования проходит в два этапа:
Сначала анализируется исходник, из которого отбираются все символы, соответствующие кодировке ACE.
Если в домене встретились символы, отличные от ACE, к итоговому слову прибавляется дефис. Далее происходит окончательная процедура преобразования.
Весь этот процесс и называется Punycode.
Где используется в доменах
Punycode приходит на помощь тогда, когда доменное имя регистрируется на языке не латинского происхождения и состоит, например, из кириллических символов.
Каким бы изначально не было доменное имя, оно будет приведено к стандартам DNS в обязательном порядке.
Например, доменное имя этого сайта зарегистрировано в зоне .рф и выглядит так:
вебмастерье.рф
Согласно правилам преобразования Punycode, итоговый вариант домена будет выглядеть следующим образом:
xn--80abcmca0c8ahk6i.xn--p1ai
Этот набор символов будет соответствовать правилам системы доменных имен и идентифицировать домен вебмастерье.рф. Если вы в браузере введете xn--80abcmca0c8ahk6i.xn--p1ai , то вы попадете именно на сайт вебмастерье.рф.
Минусы Punycode в доменах
Основным недостатком использования таких доменных имен является их внешний вид после преобразования. Многие вебмастера попросту не видят смысла в домене, который будет выглядеть в виде непонятного набора символов.
Сервисы и программы могут не воспринимать такие кодировки, что тоже накладывает ряд трудностей.
Также, на данный момент нет возможности зарегистрировать почтовый адрес, соответствующий кириллическому домену. Ведь в каждом адресе почты присутствует символ @, который доступен только в латинском варианте раскладки.
Говоря вкратце, все преимущества таких доменных имен с лихвой перекрываются техническими сложностями и ограничениями.
Сервисы конвертеры Punycode
Чтобы узнать, как будет выглядеть будущее доменное имя в итоговом варианте, можно воспользоваться специальными сервисами, которые называются Punycode-конвертерами.
Рассмотрим некоторые из них.
Конвертер HB.BY
Сайт: https://hb.by/punycode-converter.aspx
Онлайн-конвертер с простым и понятным интерфейсом. Может преобразовывать из Unicode в ACE и обратно.
Конвертер IDN
Сайт: https://handynotes.ru/tools/punycode
Этот сервис умеет конвертировать только в одну сторону. Интерфейс прост и понятен. Вводим в поле доменное имя и получаем его в формате ACE.
Подобных сервисов предостаточно и вы их можете сами отыскать в поисковых системах по запросу: «конвертер punycode». Мы указали только два, чтобы было понятие как они работают.
Заключение
Паникод служит для преобразования символов в доменном имени отличном от латинского. Мы бы не рекомендовали использовать кириллические домены, из за такой кодировки могут возникать сложности в продвижении сайта.
Как преобразовать домены IDN в кодировку ACE с помощью PowerShell
На днях мне нужно было проверить множество доменов на предмет изменений в DNS. Список был длинным и содержал множество IDN (международных доменных имен), содержащих специальные символы, такие как «æøå». Я использовал команду Resolve-DnsName, и для ее работы необходимо использовать версию домена в кодировке ACE, чтобы разрешить ее. Итак, на этом закончились два небольших скрипта, конвертирующих домены типа
krllalfa.no до xn—krllalfa-64a.no и xn—krllalfa-64a.no до 6.0 krøllalfa
Существуют инструменты, которые делают это за вас, но что в этом интересного, когда вы можете создать инструмент самостоятельно, когда у вас есть свободное время вечером.
Кроме того, вы получаете выгоду от обучения. Итак, вот сценарии, давайте разберем их.
Здесь я создаю расширенную функцию PowerShell, которая принимает в качестве входного параметра один параметр — доменное имя. Затем в блоке Process я создал новый объект, используя класс IdnMapping из пространства имен .NET SystemGlobalization, который содержит классы, определяющие информацию, связанную с культурой. Эти классы часто бывают полезны при написании интернационализированных приложений.
Затем я использую метод GetAscii для преобразования интернационализированного доменного имени в Punycode, версию домена в кодировке ACE. Punycode выглядит так: xn—krllalfa-64a.no .
функция ConvertTo-AceEncoding {
[Привязка командлета()]
Парам (
# Доменное имя
[Параметр (обязательный = $true)]
[Нить]
$Домен
)
Процесс {
$Idn = Новый объект System. Globalization.IdnMapping
$Idn.GetAscii("$Домен")
}
}
Чтобы запустить функцию,
# Либо используйте источник точек, чтобы загрузить функцию в память
. .\ConvertTo-AceEncoding.ps1
# Или вы можете использовать CTRL+A, чтобы отметить весь код, а затем нажать Run (кнопка Play), чтобы загрузить его в память.
# Затем вы можете запустить эту функцию, как и любую другую функцию PowerShell, например:
ConvertTo-AceEncoding -Domain alfakrøll.no
Это выведет конвертированную версию:
Сценарий преобразования из кодировки ACE (Punycode) в Unicode построен так же, как и выше, только отличается GetUnicode() метод для преобразования из Punycode в Unicode. Пока я печатаю, я мог бы просто добавить оба в один и тот же сценарий, но пока они разделены.
функция ConvertTo-Unicode {
[Привязка командлета()]
параметр (
# Доменное имя
[Параметр (обязательный = $true)]
[Нить]
$Домен
)
процесс {
$Idn = Новый объект System.Globalization.IdnMapping
$Idn.GetUnicode("$Domain")
}
}
Эта функция также может работать так же, как и скрипт выше:
# Либо используйте точечный источник, чтобы загрузить функцию в память
. .\ConvertTo-Unicode.ps1
# Или вы можете использовать CTRL+A, чтобы отметить весь код, а затем нажать Run (кнопка Play), чтобы загрузить его в память.
# Затем вы можете запустить эту функцию, как и любую другую функцию PowerShell, например:
ConvertTo-AceEncoding -Domain "xn--krllalfa-64a. no"
Это выведет преобразованную версию:
Были некоторые проблемы, которые я не мог понять. Это дает правильный вывод в консоли. Между тем, я подумал, что это хороший пример, чтобы опробовать модуль Pester в PowerShell, это модуль PowerShell для модульного тестирования.
Очевидно, все было не так просто, как я думал. Попытался проверить вывод с помощью следующих тестов Пестера:
Сначала модульный тест для ConvertTo-AceEncoding.
# Загружает функцию в память
. .\ConvertTo-AceEncoding.ps1
Опишите «Преобразует IDN из кодировки ACE» {
Контекст «Преобразование из Unicode в Punycode» {
он «преобразует домен IDN в ожидаемый формат» {
$EncodedDomain = ConvertTo-AceEncoding -Domain "krøllalfa.no"
$КодированныйДомен | Должно быть "xn--krllalfa-64a. no"
}
}
}
Затем модульный тест для ConvertTo-Unicode.
. .\ConvertTo-Unicode.ps1
Опишите «Преобразует IDN из кодировки ACE в UNICODE» {
Контекст «Преобразование из Punycode в Unicode» {
он «преобразует домен IDN в ожидаемый формат» {
$EncodedDomain = ConvertTo-Unicode -Domain "xn--krllalfa-64a.no"
$КодированныйДомен | Должно быть "krøllalfa.no"
}
}
}
Что ж.. Как видно ниже, модульные тесты не прошли. Это дает правильный результат при запуске функции вне модульного теста, но когда функция запускается в модульном тесте, она дает неверный результат.
Результат модульного теста для ConvertTo-AceEncoding.ps1
Результат модульного теста для ConvertTo-Unicode.ps1
Борьба с кодировкой становится реальной. . Хм. Протестированы различные подходы, когда я сохранял вывод в файл, используя Out-File , и использовал параметр -Encoding Ascii , чтобы указать формат кодирования, а затем читал из файла, чтобы посмотреть, помогло ли это. Все равно получил тот же результат. Пару часов проверял пробелы, форматы кодирования, ввод, вывод, разные консоли и так далее, пока чуть не сдался. Затем я посмотрел в VS Code и проверил кодировку документа, как показано ниже.
Вместо этого я изменил это на UTF-8 с BOM, и бум, это сработало.
Модульный тест пройден и отображается приятный зеленый цвет.
Результат ConvertTo-AceEncoding
Результат ConvertTo-Unicode
Казалось, что UTF-8 сталкивается с проблемами, когда данные конвертируются из других форм кодирования, использующих BOM, или BOM используется в качестве подписи UTF-8. С этим решено, спасибо за чтение.
Наслаждайтесь!
Как вызвать асинхронный поток Power Automate с помощью JavaScript
от Fredrik Engseth
18 декабря 2022 г.
Узнайте, как создать асинхронный поток Power Automate и как вызвать его с помощью JavaScript.
Пошаговое руководство: как использовать Power Automate для создания и отправки электронных писем с вложениями в Dynamics 365/Dataverse
, Фредрик Энгсет
10. Декабрь 2022 г.
Пошаговые инструкции по созданию и отправке электронных писем с помощью вложения в Dynamics 365/Dataverse с помощью Power Automate.
Как добавить и настроить iFrames в Dynamics 365
by Fredrik Engseth
27. Ноябрь 2022 г.
Как добавлять и настраивать iFrames в Dynamics 365 с помощью внешних веб-сайтов и JavaScript для динамического создания URL-адресов для каждой строки учетной записи.
Power App Award Generator
от Fredrik Engseth
12 ноября 2022 г.
Решение Power App для создания дипломов с использованием Power Automate, Word Templates, OneDrive и Outlook для отправки награды.
атак Punycode - поддельные домены, которые невозможно обнаружить
Что такое Punycode?
Punycode существительное Unicode, который преобразует слова, которые нельзя записать в ASCII, например, греческое слово «ευχαριστώ», обозначающее «спасибо», в кодировку ASCII, например «xn--mxahn5algcq2e» для использования в качестве доменных имен. Что это на самом деле означает?!
Письмо с цифрами
Как и все, что связано с компьютерами, все сводится к числам. Каждая буква, символ или эмодзи, которые мы набираем, имеют уникальное двоичное число, связанное с ними, чтобы наши компьютеры могли их обрабатывать. ASCII , стандарт кодирования символов, использует 7 бит для кодирования до 127 символов, что достаточно для кодирования алфавита в верхнем и нижнем регистре, цифр 0-9 и некоторых дополнительных специальных символов. Где ASCII падает, так это в том, что он не поддерживает такие языки, как, например, греческий, иврит и арабский, вот тут-то и появляется Unicode ; он использует 32 бита для кодирования до 2 147 483 647 символов! Unicode дает нам достаточно возможностей для поддержки любого языка и даже нашей постоянно растущей коллекции эмодзи.
Так при чем здесь Punycode?
Punycode — это способ преобразования слов, которые нельзя записать в ASCII, в кодировку Unicode ASCII. Почему вы хотите это сделать? Глобальная система доменных имен (DNS), система именования для любого ресурса, подключенного к Интернету, ограничена символами ASCII. С помощью punycode вы можете включать символы, отличные от ASCII, в доменное имя, создавая «загрузочную» кодировку Unicode как часть сложного процесса кодирования.
Как работает атака Punycode?
Символы Unicode могут выглядеть одинаково невооруженным глазом, но на самом деле иметь разные веб-адреса. Некоторые буквы латинского алфавита, используемого в большинстве современных языков, имеют ту же форму, что и буквы греческого, кириллического и других алфавитов, поэтому злоумышленнику легко запустить доменное имя, в котором некоторые символы ASCII заменены символами Unicode. Например, вы можете заменить обычную T на греческую Tau: τ, пользователь увидит почти идентичный символ T, но punycode за ним, считанный компьютером, на самом деле будет xn--5xa. В зависимости от того, как браузер отображает эту информацию в адресной строке, мы, люди, не можем идентифицировать эти маленькие подлые символы. Этот метод называется омографической атакой , URL-адреса будут выглядеть законными, а содержимое страницы может выглядеть одинаково на первый взгляд, но на самом деле это другой веб-сайт, настроенный для кражи конфиденциальных данных жертвы или заражения устройство пользователя. В этих атаках используются распространенные методы, такие как фишинг, принудительная загрузка и мошенничество.
Просто просматриваю — Punycode проблема во всех браузерах?
По умолчанию многие веб-браузеры используют префикс xn--, известный как префикс кодирования, совместимый с ASCII, чтобы указать веб-браузеру, что домен использует punycode для представления символов Unicode. Это мера защиты от фишинговых атак Homograph. Тем не менее, не все браузеры отображают префикс punycode, оставляя посетителей в неведении. Хакеры могут использовать уязвимость в браузерах, которые не используют префикс для отображения своих поддельных доменных имен в качестве веб-сайтов законных служб, для кражи учетных данных для входа, номеров кредитных карт и другой конфиденциальной информации пользователей. В этом примере китайский исследователь безопасности Сюйдун Чжэн обнаружил лазейку, которая позволила ему зарегистрировать доменное имя xn--80ak6aa92e.com и обойти защиту, которая отображается как «apple. com» во всех уязвимых веб-браузерах, которые в то время включали Хром, Фаерфокс и Опера. Internet Explorer, Microsoft Edge, Apple Safari, Brave и Vivaldi не были уязвимы. Наше текущее исследование показывает следующее поведение в двух основных веб-браузерах Chrome и Safari:
Chrome — часто отображает непереведенный punycode с префиксом. Когда вы не уверены, является ли сайт подозрительным, он не будет переводиться в Unicode, но все же позволит вам перейти на сайт. Когда он уверен, что сайт является вредоносным, он выдаст предупреждение «Впереди мошеннический сайт».
Safari — большую часть времени переводит punycode в символы Unicode. Когда он уверен, что сайт является вредоносным, он выдает предупреждение «Впереди мошеннический сайт», но все равно переводит punycode в символы Unicode.
Работают ли атаки Punycode в мобильных приложениях?
Атаки Punycode могут происходить как на настольных компьютерах, так и на мобильных устройствах, поскольку различные разработчики браузеров склонны относиться к punycode одинаково на всех платформах. Короче говоря, если они отображают юникод пользователю на одном устройстве, они делают это на всех платформах. Большая часть текущих исследований punycode сосредоточена на том, как браузеры обрабатывают эти домены, но наше исследование выходит за рамки браузера, чтобы продемонстрировать, что то, как приложения обрабатывают punycode, не менее важно. В ходе нашего тестирования мы обнаружили, что вводящие в заблуждение домены punycode не помечались как подозрительные широко используемыми сотрудниками средствами связи и совместной работы. Мы протестировали следующие приложения на устройствах iOS и Android: Gmail, Apple Mail, iMessage, Message+, Whatsapp, Facebook Messenger, Skype и Instagram. Только Facebook Messenger, Instagram и Skype предоставили пользователю возможность идентифицировать URL-адрес punycode, либо показывая предварительный просмотр веб-страницы с префиксом xn, либо, в случае скайпа, не предоставляя гиперссылку для доменов, использующих Unicode, что означает пользователей не могу перейти из сообщения. Хотя эти приложения не обеспечивают наилучших методов защиты, они, по крайней мере, дают возможность более тщательно оценивать подозрительные ссылки.
Таким образом, кажется, что, отображая вводящий в заблуждение Unicode, большинство приложений предпочитают предоставлять расширенные возможности для пользователей, а не обеспечивать безопасность для обнаружения вредоносных сайтов. Часть ответственности должна лежать на разработчиках этих приложений, чтобы обеспечить применение нескольких уровней безопасности для эффективной защиты от этих атак.
Почему атаки Punycode представляют большую проблему для мобильных устройств?
Наше исследование атак Punycode на мобильные устройства выявило ряд новых вредоносных доменов (перечислены ниже). Эти сайты не только проводят фишинговые атаки на домены, визуально обманчивые для пользователей, но и оптимизированы для мобильных устройств, а это означает, что хакеры знают о трудностях, с которыми сталкиваются мобильные пользователи при выявлении вводящих в заблуждение URL-адресов. Ориентируясь на мобильных пользователей, эти атаки приводят к более успешным фишинговым кампаниям. Фишинговые атаки, как правило, труднее обнаружить на мобильных устройствах по ряду причин, это становится почти невозможным, когда punycode введен и отображается правильно.
Меньший размер экрана оставляет меньше места для оценки легитимности веб-сайта
Дизайн ОС обычно скрывает и без того крошечную адресную строку, когда пользователь прокручивает страницу вниз, чтобы освободить место для содержимого страницы уведомления
Нет функции наведения мыши или предварительного просмотра, что не позволяет пользователю увидеть или оценить место назначения ссылки перед нажатием
Можете ли вы найти символ Unicode в домене ниже?
Это становится эмоциональным. Как влияют домены эмодзи?
Точно так же, как специальные символы разных языков кодируются как punycode, то же самое можно сказать и о постоянно растущей библиотеке эмодзи. Домен emoji — это буквально домен с emoji в нем, например. www.��.com, для этого необходим punycode. Вот недавний пример, идентифицированный интеллектуальной машиной машинного обучения Jamf, MI:RIAM:
В некоторых примерах, которые мы видели, сайты показывают конкурсы, которые предлагают призы в обмен на обмен ссылкой через WhatsApp, а иногда они перенаправляют пользователя на другие мошеннические страницы, когда пользователь несколько раз нажимает кнопку «Назад». В других случаях страницы немедленно перенаправляются на другие сайты, на которых отображаются объявления о загрузке обновлений программного обеспечения.
Вскоре после обнаружения и документирования содержимое большинства этих сайтов было удалено. Это доказательство того, как быстро двигаются хакеры, и согласуется с другими формами фишинговых атак, которые мы наблюдаем.
Наше исследование показывает, что новый фишинговый сайт создается каждые 20 секунд, и обычно они существуют всего четыре часа, прежде чем хакеры удалят их и перейдут к созданию другого обманного домена. Умный способ замести следы и избежать обнаружения.
7 способов избежать атаки Punycode
Будьте осторожны, если сайт заставляет вас сделать что-то быстро. Это классическая стратегия хакеров, позволяющая поторопить своих потенциальных жертв, чтобы они с меньшей вероятностью заметили что-нибудь подозрительное. Часто они предлагают сделку «только на ограниченное время» и затрудняют выход со страницы всплывающими окнами «вы уверены, что хотите выйти»: все это тактика, чтобы заставить вас оставаться на их сайте дольше и дать им свою подробности.
Если вам предлагают сделку, перейдите на исходный сайт компании и проверьте, доступна ли она там. .
Если некоторые буквы в адресной строке выглядят странно или дизайн веб-сайта выглядит иначе, перепишите его или посетите исходный URL-адрес компании в новой вкладке для сравнения. Буквы в адресной строке, выглядящие странно, являются ключевым индикатором того, что punycode используется, чтобы заставить вас думать, что вы посещаете хорошо зарекомендовавший себя бренд, когда на самом деле вы попадаете на вредоносный сайт.