Определите конечный адрес, скрытый за «Safe Links», «URL Defense» и другими оболочками (Mimecast: домен).
Декодер QR-кодов
Сам инструмент доступен на английском языке; на этой странице приведено его описание на вашем языке.
Используйте Декодер QR-кодов
Для чего это нужно
Загрузите, перетащите или вставьте изображение QR-кода. Содержимое появится в виде обезвреженного текста вместе с описанием того, что оно делает: ссылка и её настоящий хост, данные для входа в Wi-Fi, платёжный запрос или секрет двухфакторной аутентификации.
Приложение работает полностью в браузере: никакие введенные вами данные не передаются на сервер.
Как использовать Декодер QR-кодов
- Получите изображение кода. Сделайте скриншот или фото QR-кода. Страница никогда не использует вашу камеру.
- Загрузите его. Перетащите изображение на поле, нажмите на поле, чтобы выбрать файл (PNG, JPEG, GIF, WebP, BMP или SVG до 20 МБ), или вставьте скриншот через Ctrl+V.
- Проверьте предпросмотр. Изображение появляется с обведённым найденным кодом. Значок называет тип содержимого и декодер, который его прочитал.
- Прочитайте содержимое и предупреждения. Содержимое показывается в обезвреженном виде, поэтому по ссылкам нельзя перейти. Красные и жёлтые примечания под ним объясняют, что сделал бы код.
- Посмотрите поля. Поля разбивают содержимое на части, например Host, Network name, Amount или Recipient. У адресов кошельков есть своя кнопка Copy.
- Сделайте следующий шаг. Для ссылки используйте Send to…, чтобы передать её в Link Unwrapper, Homoglyph Checker или URL Parser, не открывая её.
Пример
Ссылка на оплату парковки со скрытым хостом
https://pay-parking.example@198.51.100.24/pay?zone=401Web link read by jsQR (as is)
Payload (defanged)
hxxps://pay-parking[.]example[@]198[.]51[.]100[.]24/pay?zone=401
Copy raw
Text before "@" is not the destination: this link opens 198[.]51[.]100[.]24, not "pay-parking[.]example".
The host is a bare IP address (198[.]51[.]100[.]24), not a domain name.
HOST
198[.]51[.]100[.]24
USER INFO BEFORE @
pay-parking[.]example
SCHEME
https
PATH
/pay
QUERY
?zone=401
Next: use Send to… above. URL Parser splits the link into parts.Load example рисует этот текст как QR-код на странице и декодирует изображение: настоящий хост — IP-адрес 198.51.100.24, а pay-parking.example перед @ — лишь данные пользователя (user info), поэтому оба отмечены как признаки опасности.
Что проверяется
| Сигнал | Что это означает |
|---|---|
| Тип содержимого | Веб-ссылка, сеть Wi-Fi, платёжный запрос, секрет двухфакторной аутентификации, черновик письма, SMS или звонка, визитная карточка, событие календаря, ссылка на приложение или обычный текст. Цвет значка соответствует самому серьёзному предупреждению. |
| Скрытый хост в ссылке | Текст перед @ — не адрес назначения, а хост, записанный как IP-адрес, отмечается красным. Хост в punycode, смешивающий алфавиты, тоже отмечается красным. |
| Сокращатель или почтовая обёртка | Ссылки через bit.ly, qrco.de и похожие сервисы или через Safe Links и URL Defense скрывают настоящий адрес. Инструмент сообщает об этом и предлагает Link Unwrapper. |
| Бесплатный хостинг, http, порт, глубокие поддомены | Обычный http получает жёлтое предупреждение. Бесплатные хостинги вроде github.io или pages.dev, нестандартный порт и хосты с пятью и более уровнями получают примечания, потому что такой адрес мало говорит о том, кто управляет страницей. |
| Секрет двухфакторной аутентификации (красный) | Код otpauth содержит секрет, из которого генерируются ваши одноразовые коды, а код otpauth-migration — целый экспорт аутентификатора. Секрет скрыт, пока вы не нажмёте Show secret. |
| Платёжный запрос в криптовалюте | Платёжные ссылки Bitcoin, Ethereum, Solana, TRON, TON и других сетей показывают адрес и сумму. Код Ethereum, который вызывает approve, increaseAllowance, setApprovalForAll или permit, отмечается красным, как и запрос транзакции Solana Pay. |
| Коды UPI и EMV для продавцов | Сканирование кода UPI отправляет деньги с вашего счёта, а мандат UPI разрешает повторные списания. Код EMV, у которого не совпадает контрольная сумма CRC, был изменён или повреждён. |
| Опасные схемы | javascript:, data:, file:, ms-msdt:, search-ms: и подобные схемы отмечаются красным. Коды, которые открывают приложение вместо веб-страницы, получают жёлтое примечание. |
| Данные Wi-Fi | Имя сети, тип защиты, есть ли пароль и скрыта ли сеть. Открытые сети получают предупреждение. |
Еще примеры
QR-код открытой сети Wi-Fi
WIFI:T:nopass;S:Airport Free WiFi;;Wi-Fi network. Network name (SSID): Airport Free WiFi, Security: nopass, Password: none, Hidden network: no. Жёлтое предупреждение: Open network — трафик не шифруется на уровне Wi-Fi. Примечание сообщает, что злоумышленники создают открытые сети-двойники, чтобы перехватывать трафик.
QR-код с секретом аутентификатора
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=ExampleTwo-factor (TOTP/HOTP) secret. Содержимое показывает secret=••••••••, пока вы не нажмёте Show secret. Поля: Type TOTP, Issuer Example, Account alice[@]example[.]com, Secret present (16 символов, скрыт), Algorithm SHA1 (default), Digits 6 (default), Period 30 s, а также красное предупреждение никогда никому не отправлять это изображение.
Разрешение на токены под видом платежа (тестовые адреса EIP-55)
ethereum:0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359@1/approve?address=0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed&uint256=115792089237316195423570985008687907853269984665640564039457584007913129639935Ethereum payment request. Поля: Network Ethereum, Contract 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359, Chain ID 1, Function approve, параметр Address (spender — тот, кому дают разрешение) и Token amount (в сырых единицах), здесь максимальное 78-значное значение. Красное предупреждение: код просит ваш кошелёк вызвать approve — это даёт 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed право перемещать ваши токены. Именно так действуют дрейнеры кошельков. Затем идёт жёлтое примечание: сравните адрес целиком.
Часто задаваемые вопросы
Что декодер показывает для QR-кода?
Декодированный текст, обезвреженный, чтобы по нему нельзя было перейти, и его тип: веб-ссылка (хост, punycode, IP в качестве хоста, данные пользователя перед @, сокращатели и обёртки ссылок), сеть Wi-Fi, черновик письма, звонка или SMS, платёжный запрос в криптовалюте, UPI или EMV, секрет двухфакторной аутентификации otpauth, визитная карточка или событие календаря. Для каждого типа выводятся важные для него предупреждения, например что код otpauth содержит секрет 2FA.
Почему изображение не декодируется?
Код может быть слишком маленьким, размытым, обрезанным по краям или заслоненным бликами; обычно помогает обрезать изображение так, чтобы остался только код с белой рамкой. Декодер сначала пробует использовать встроенный в браузер детектор штрих-кодов (если таковой имеется), затем применяет jsQR к изображению (уменьшенному до 1 600 пикселей по длинной стороне), пороговое значение для чёрно-белого изображения, добавление белой рамки и, для изображений размером до 800 пикселей по длинной стороне, увеличение в 2 раза.
Загружается ли изображение куда-нибудь?
Нет. Изображение декодируется в вашем браузере встроенной библиотекой jsQR и никуда не отправляется. Камера не используется, поэтому сделайте фото или скриншот и загрузите или вставьте его.
Что, если на изображении несколько QR-кодов?
Если в вашем браузере есть встроенный детектор штрихкодов, каждый найденный код выводится как QR code 1 of N со своими предупреждениями. Запасной вариант jsQR читает один код на изображение, поэтому обрежьте изображение до нужного кода.
Почему пароль Wi-Fi или секрет двухфакторной аутентификации скрыт?
Чтобы он не отображался на экране или на скриншоте результата. Show secret показывает его в поле содержимого, а Copy raw всегда копирует полный текст.
Можно ли перетащить ссылку на изображение с другого сайта?
Нет. Страница читает только файлы изображений и вставленные изображения и ничего не скачивает. Сначала сохраните изображение или скопируйте само изображение и вставьте его. Вставленный текст data:image в base64 тоже работает.