
Detectar caracteres visualmente similares (homoglyphs) y datos ocultos en el texto para proteger contra ataques engañosos
Los ataques homógrafos aprovechan la similitud visual de caracteres de diferentes sistemas de escritura (p. ej., la 'a' latina frente a la 'а' cirílica) para suplantar nombres de dominio, nombres de archivo u otros identificadores, engañando a los usuarios para que crean que están interactuando con una fuente legítima.
huntglyph ofrece una solución de detección para identificar estas prácticas engañosas, garantizando seguridad y claridad digitales.
huntglyph proporciona varios comandos para analizar cadenas y archivos.
text: Analizar una cadena de texto sin procesarAnaliza una cadena de texto sin procesar en busca de homoglifos, escrituras mixtas y caracteres invisibles (posible fuente de esteganografía). La entrada se puede proporcionar como argumento de comando o mediante stdin.
ej. 1 - Analizar una cadena literal que contiene homoglifos y escrituras mixtas
$ 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)
ej. 2 - Analizar una cadena literal que contiene un espacio de ancho cero
$ 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)
ej. 3 - Usar tuberías (entrada desde stdin)
$ cat demo/suspicious.txt | huntglyph text
ej. 4 - Mostrar solo la puntuación de riesgo normalizada (0.0-1.0) de una cadena literal
$ huntglyph text "gооgle.com" --risk-score-only
0.75
inspect: Desglose detallado carácter por carácterProporciona una vista tabular detallada de cada carácter de una cadena o archivo, incluidos su punto de código, nombre, escritura y cualquier propiedad sospechosa.
ej. 1 - Inspección completa. Contiene homoglifos y escrituras mixtas
$ 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)
ej. 2 - Limita los resultados a caracteres sospechosos
$ 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: Escanear archivos o directoriosEscanea archivos o directorios en busca de caracteres sospechosos, analizando archivos de texto en paralelo. ej. 1 - Escanear un archivo
$ 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)
ej. 2 - Escanea un directorio (y configura 4 workers para el rendimiento)
$ huntglyph scan --workers 4 demo
ej. 3 - Mostrar solo la puntuación de riesgo acumulada máxima (0.0-1.0) de un directorio
$ huntglyph scan demo --risk-score-only
1.00
review: Revisar interactivamente archivos sospechososEscanea archivos o directorios y proporciona un mensaje interactivo para cada archivo sospechoso encontrado, permitiendo una inspección detallada u omitirlo.
$ huntglyph review demo
Este comando descargará e instalará huntglyph en una ubicación estándar para tu sistema.
Recomendado (a nivel de usuario):
Instala en $HOME/.local/bin (Linux/macOS) o en un directorio bin específico del usuario (Windows).
curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | sh
En todo el sistema (requiere sudo):
Instala en /usr/local/bin.
sudo curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | sh
Directorio personalizado:
Usa la variable de entorno INSTALL_DIR para especificar una ruta personalizada.
curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | INSTALL_DIR=$HOME/bin sh
Esta herramienta ha sido validada contra un subconjunto del RAID Dataset, confirmando su eficacia para identificar homoglifos y manipulaciones de espacios de ancho cero.
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
| Opción | Descripción | Comandos |
|---|
--format (default, json) | Formato de salida. | text, inspect |
--workers N | Número de workers a usar para el escaneo. | scan |
--suspicious-only | Mostrar solo caracteres sospechosos en la tabla de salida. | inspect |
--full | Mostrar detalles completos de los caracteres invisibles (forma escapada). | inspect |
--risk-score-only | Mostrar solo la puntuación de riesgo normalizada (0.0-1.0). Esta puntuación es acumulativa (máx. 100) y se basa en escrituras mixtas (25), confundibles (50), invisibles (25) y cargas útiles ocultas (100). Para 'text', es la puntuación de la entrada. Para 'scan', es la puntuación máxima entre todos los archivos escaneados. | text, scan |
--version | Imprime la información de la versión. | Todos los comandos |