
Detecte caracteres visualmente similares (homóglifos) e dados ocultos em texto para proteger contra ataques enganosos
Ataques homógrafos aproveitam a semelhança visual de caracteres de diferentes sistemas de escrita (ex.: 'a' latino vs. 'а' cirílico) para falsificar nomes de domínio, nomes de arquivos ou outros identificadores, enganando usuários para que acreditem estar interagindo com uma fonte legítima.
o huntglyph fornece uma solução de detecção para identificar essas práticas enganosas, garantindo segurança digital e clareza.
O huntglyph fornece vários comandos para analisar strings e arquivos.
text: Analisar uma string de texto brutaAnalisa uma string de texto bruta em busca de homóglifos, scripts mistos e caracteres invisíveis (possível fonte de esteganografia). A entrada pode ser fornecida como argumento de comando ou via stdin.
ex. 1 - Analisar uma string literal contendo homóglifos, scripts mistos
$ 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)
ex. 2 - Analisar uma string literal contendo um espaço de largura zero
$ 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)
ex. 3 - Usar pipes (entrada via stdin)
$ cat demo/suspicious.txt | huntglyph text
ex. 4 - Exibir apenas a pontuação de risco normalizada (0.0-1.0) para uma string literal
$ huntglyph text "gооgle.com" --risk-score-only
0.75
inspect: Análise detalhada caractere por caractereFornece uma visão detalhada em tabela de cada caractere em uma string ou arquivo, incluindo seu code point, nome, script e quaisquer propriedades suspeitas.
ex. 1 - Inspeção completa. Contém homóglifos, scripts mistos
$ 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)
ex. 2 - Restringe os resultados a caracteres suspeitos
$ 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 arquivos ou diretóriosEscaneia arquivos ou diretórios em busca de caracteres suspeitos, analisando arquivos de texto em paralelo. ex. 1 - Escanear um arquivo
$ 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)
ex. 2 - Escanear um diretório (e definir 4 workers para desempenho)
$ huntglyph scan --workers 4 demo
ex. 3 - Exibir apenas a pontuação de risco acumulada máxima (0.0-1.0) para um diretório
$ huntglyph scan demo --risk-score-only
1.00
review: Revisar interativamente arquivos suspeitosEscaneia arquivos ou diretórios e fornece um prompt interativo para cada arquivo suspeito encontrado, permitindo inspeção detalhada ou pular.
$ huntglyph review demo
Este comando baixará e instalará o huntglyph em um local padrão para o seu sistema.
Recomendado (Nível de usuário):
Instala em $HOME/.local/bin (Linux/macOS) ou em um diretório bin específico do usuário (Windows).
curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | sh
Em todo o sistema (Requer sudo):
Instala em /usr/local/bin.
sudo curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | sh
Diretório Personalizado:
Use a variável de ambiente INSTALL_DIR para especificar um caminho personalizado.
curl -sSfL https://raw.githubusercontent.com/gregory-chatelier/huntglyph/main/install.sh | INSTALL_DIR=$HOME/bin sh
Esta ferramenta foi validada em um subconjunto do RAID Dataset, confirmando sua eficácia na identificação de homóglifos e manipulações de espaços de largura zero.
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
| Opção | Descrição | Comandos |
|---|
--format (default, json) | Formato de saída. | text, inspect |
--workers N | Número de workers a serem usados na varredura. | scan |
--suspicious-only | Mostrar apenas caracteres suspeitos na tabela de saída. | inspect |
--full | Mostrar detalhes completos para caracteres invisíveis (forma escapada). | inspect |
--risk-score-only | Exibir apenas a pontuação de risco normalizada (0.0-1.0). Essa pontuação é acumulada (máx. 100) com base em scripts mistos (25), confundíveis (50), invisíveis (25) e payloads ocultos (100). Para 'text', é a pontuação da entrada. Para 'scan', é a pontuação máxima entre todos os arquivos escaneados. | text, scan |
--version | Exibir informações da versão. | Todos os comandos |