
Обнаруживайте визуально похожие символы (гомоглифы) и скрытые данные в тексте для защиты от обманных атак.
Атаки с использованием омоглифов эксплуатируют визуальное сходство символов из разных систем письменности (например, латинская 'a' и кириллическая 'а') для подмены доменных имён, имён файлов или других идентификаторов, вводя пользователей в заблуждение и заставляя их думать, что они взаимодействуют с легитимным источником.
huntglyph предоставляет решение для выявления этих обманных практик, обеспечивая цифровую безопасность и ясность.
huntglyph предоставляет несколько команд для анализа строк и файлов.
text: Анализ строки произвольного текстаАнализирует строку произвольного текста на наличие омоглифов, смешанных письменностей и невидимых символов (потенциальный источник стеганографии). Ввод может быть указан как аргумент команды или через stdin.
пример 1 — Анализ строки, содержащей омоглифы и смешанные письменности
$ huntglyph text "gооgle.com"
Original: gооgle.com
Indicator: ↑↑
Cleaned: google.com
--------------------------------------------------------------------------------------------------------------------------------
Details:
- Pos 2: 'о' (U+00043E, Cyrillic) is a homoglyph of 'o' (U+00006F, Latin).
- Pos 3: 'о' (U+00043E, Cyrillic) is a homoglyph of 'o' (U+00006F, Latin).
Warning: Mixed scripts detected: Latin, Cyrillic
Warning: Confusable characters detected.
Overall Risk: HIGH (Score: 75)
пример 2 — Анализ строки, содержащей пробел нулевой ширины
$ huntglyph text "helloworld"
Original: helloworld
Indicator: ↑
Cleaned: hello world
--------------------------------------------------------------------------------------------------------------------------------
Details:
- Pos 6: Invisible Character '' (U+00200B)
Warning: Invisible characters detected.
Overall Risk: MODERATE (Score: 25)
пример 3 — Использование каналов (ввод из stdin)
$ cat demo/suspicious.txt | huntglyph text
пример 4 — Вывод только нормализованной оценки риска (0.0–1.0) для строки
$ huntglyph text "gооgle.com" --risk-score-only
0.75
inspect: Подробный посимвольный разборПредоставляет подробное табличное представление каждого символа в строке или файле, включая его кодовую точку, имя, письменность и любые подозрительные свойства.
пример 1 — Полный разбор. Содержит омоглифы, смешанные письменности
$ huntglyph inspect "аррӏе.com"
┌─────┬──────┬────────────┬──────────┬────────────────────────────────┬────────────────────────────────────┐
│ POS │ CHAR │ CODE POINT │ SCRIPT │ NAME │ DETAILS │
├─────┼──────┼────────────┼──────────┼────────────────────────────────┼────────────────────────────────────┤
│ 1 │ а │ U+000430 │ Cyrillic │ CYRILLIC SMALL LETTER A │ Homoglyph of 'a' (in word 'аррӏе') │
│ 2 │ р │ U+000440 │ Cyrillic │ CYRILLIC SMALL LETTER ER │ Homoglyph of 'p' (in word 'аррӏе') │
│ 3 │ р │ U+000440 │ Cyrillic │ CYRILLIC SMALL LETTER ER │ Homoglyph of 'p' (in word 'аррӏе') │
│ 4 │ ӏ │ U+0004CF │ Cyrillic │ CYRILLIC SMALL LETTER PALOCHKA │ Homoglyph of 'l' (in word 'аррӏе') │
│ 5 │ е │ U+000435 │ Cyrillic │ CYRILLIC SMALL LETTER IE │ Homoglyph of 'e' (in word 'аррӏе') │
│ 6 │ . │ U+00002E │ Common │ FULL STOP │ │
│ 7 │ c │ U+000063 │ Latin │ LATIN SMALL LETTER C │ │
│ 8 │ o │ U+00006F │ Latin │ LATIN SMALL LETTER O │ │
│ 9 │ m │ U+00006D │ Latin │ LATIN SMALL LETTER M │ │
└─────┴──────┴────────────┴──────────┴────────────────────────────────┴────────────────────────────────────┘
Warning: Mixed scripts detected: Cyrillic, Latin
Warning: Confusable characters detected.
Overall Risk: HIGH (Score: 75)
пример 2 — Ограничение результатов только подозрительными символами
$ huntglyph inspect --suspicious-only "helloworld"
┌─────┬──────┬────────────┬────────┬──────────────────┬───────────┐
│ POS │ CHAR │ CODE POINT │ SCRIPT │ NAME │ DETAILS │
├─────┼──────┼────────────┼────────┼──────────────────┼───────────┤
│ 6 │ │ U+00200B │ Common │ ZERO WIDTH SPACE │ Invisible │
└─────┴──────┴────────────┴────────┴──────────────────┴───────────┘
Warning: Invisible characters detected.
Overall Risk: MODERATE (Score: 25)
scan: Сканирование файлов или каталоговСканирует файлы или каталоги на предмет подозрительных символов, анализируя текстовые файлы параллельно. пример 1 — Сканирование файла
$ huntglyph scan demo/suspicious.txt
File: demo/suspicious.txt
Risk Level: HIGH (Score: 100)
Scripts: Latin, Cyrillic
Line 1:
Original: This file contains a suspicious url: gооgle.com
Indicator: ↑↑ ↑
Cleaned: This file contains a suspicious url: google.com
--------------------------------------------------------------------------------------------------------------------------------
Details:
- Pos 39: 'о' (U+00043E, Cyrillic) is a homoglyph of 'o' (U+00006F, Latin).
- Pos 40: 'о' (U+00043E, Cyrillic) is a homoglyph of 'o' (U+00006F, Latin).
- Pos 48: Invisible Character '' (U+00200B)
пример 2 — Сканирование каталога (и установка 4 рабочих процессов для производительности)
$ huntglyph scan --workers 4 demo
пример 3 — Вывод только максимальной совокупной оценки риска (0.0–1.0) для каталога
$ huntglyph scan demo --risk-score-only
1.00
review: Интерактивный просмотр подозрительных файловСканирует файлы или каталоги и выводит интерактивное приглашение для каждого найденного подозрительного файла, позволяя выполнить детальный просмотр или пропустить его.
$ huntglyph review demo
Эта команда загрузит и установит huntglyph в стандартное расположение для вашей системы.
Рекомендуется (на уровне пользователя):
Устанавливается в $HOME/.local/bin (Linux/macOS) или в пользовательский каталог bin (Windows).
curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | sh
Системная установка (требуется sudo):
Устанавливается в /usr/local/bin.
sudo curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | sh
Пользовательский каталог:
Используйте переменную окружения INSTALL_DIR, чтобы указать собственный путь.
curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | INSTALL_DIR=$HOME/bin sh
Этот инструмент был проверен на подмножестве набора данных RAID, что подтверждает его эффективность в выявлении омоглифов и манипуляций с пробелами нулевой ширины.
Этот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.
| Опция | Описание | Команды |
|---|
--format (default, json) | Формат вывода. | text, inspect |
--workers N | Количество рабочих процессов для сканирования. | scan |
--suspicious-only | Показывать в таблице вывода только подозрительные символы. | inspect |
--full | Показывать полные сведения о невидимых символах (экранированная форма). | inspect |
--risk-score-only | Выводить только нормализованную оценку риска (0.0–1.0). Эта оценка является совокупной (максимум 100) на основе смешанных письменностей (25), сбивающих с толку символов (50), невидимых символов (25) и скрытых полезных нагрузок (100). Для 'text' это оценка входных данных. Для 'scan' это максимальная оценка среди всех просканированных файлов. | text, scan |
--version | Вывести информацию о версии. | Все команды |