Gere variações de typosquatting de um domínio no estilo do dnstwist e veja quais resolvem no DNS.
Verificador de homóglifos
A ferramenta em si está em inglês; esta página explica como usá-la no seu idioma.
Use Verificador de homóglifos
O que ele faz
Cole um domínio, uma URL ou um texto para ver cada rótulo em Unicode e em punycode, o sistema de escrita (script) e o protótipo UTS #39 de cada caractere, e se o nome mistura sistemas de escrita ou se lê como outro nome ASCII.
Ele funciona inteiramente no seu navegador: nada do que você digitar é enviado.
Como usar Verificador de homóglifos
- Cole o nome. Cole um domínio, uma URL, um endereço de e-mail, várias linhas ou uma mensagem inteira. Formas neutralizadas como hxxps:// e [.] são aceitas, e rótulos xn-- são decodificados.
- Adicione o domínio real (opcional). Digite o domínio que você esperava em Compare with the real domain (comparar com o domínio real), por exemplo o domínio real do seu banco.
- Faça a verificação. A verificação roda enquanto você digita, ou pressione Enter ou clique em Check. Shift+Enter adiciona uma nova linha.
- Leia o veredito. A caixa colorida diz Lookalike risk, Check this, Looks clean ou Notes, com uma linha por constatação. Uma mensagem com vários hosts gera uma tabela com um resultado por host.
- Encontre as letras estranhas. Os caracteres suspeitos ficam marcados no domínio destacado. A tabela Characters lista cada um com seu ponto de código, o sistema de escrita e a letra ASCII que ele imita.
- Copie ou repasse. Copie a forma Unicode ou punycode, ou use Send to… para consultar o domínio no DNS over HTTPS Lookup ou no Abuse Contact Lookup.
Exemplo
Imitação em cirílico no punycode
xn--80ak6aa92e.exampleLookalike risk: Label "аррӏе" is written in Cyrillic but reads as the ASCII name "apple" (whole-script confusable).
Highlighted domain
аррӏе.example
Unicode form
аррӏе[.]example
Punycode (ACE) form
xn--80ak6aa92e[.]example
RESTRICTION LEVEL
Single Script
SCRIPTS
Cyrillic, Latin
READS AS
apple[.]example
Labels
UNICODE ACE SCRIPTS MIXED RESTRICTION LEVEL SKELETON
аррӏе xn--80ak6aa92e Cyrillic no Single Script apple
example example Latin no ASCII-Only ASCII only
Characters
CHAR CODE POINT SCRIPT UTS #39 PROTOTYPE ID STATUS FLAG
а U+0430 Cyrillic a (U+0061) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
ӏ U+04CF Cyrillic l (U+006C) Allowed looks like ASCII
е U+0435 Cyrillic e (U+0065) Allowed looks like ASCII
e U+0065 Latin itself Allowed ASCII
x U+0078 Latin itself Allowed ASCII
a U+0061 Latin itself Allowed ASCII
m U+006D Latin rn (U+0072 U+006E) Allowed ASCII
p U+0070 Latin itself Allowed ASCII
l U+006C Latin itself Allowed ASCII
e U+0065 Latin itself Allowed ASCII
Comparison with apple[.]example
Confusable: аррӏе[.]example and apple[.]example have the same UTS #39 skeleton, so they can look identical.
SKELETON OF THE INPUT
apple[.]exarnple
SKELETON OF APPLE[.]EXAMPLE
apple[.]exarnpleDecodifica para аррӏе.example: as cinco letras são cirílicas e se leem como apple, então o rótulo é sinalizado como confundível de sistema de escrita inteiro (whole-script) e cada caractere é marcado. Load example também coloca apple.example no campo de comparação, que tem o mesmo esqueleto.
O que ele verifica
| Sinal | O que isso significa |
|---|---|
| Sistemas de escrita misturados em um rótulo | Latino misturado com cirílico ou grego dentro de um rótulo aparece em vermelho. Misturas que o UTS #39 aceita, como latino com japonês, são apenas anotadas, a menos que um caractere se pareça com ASCII. |
| Imitação de sistema de escrita inteiro | Todas as letras vêm de outro alfabeto, mas o rótulo se lê como uma palavra ASCII, como o cirílico аррӏе para apple. Isso aparece em vermelho. |
| Diferença só no acento | Um rótulo como wället se lê como wallet se você não notar o acento. Isso é uma constatação amarela Check this. |
| Protótipo UTS #39 | A tabela Characters mostra qual letra ou dígito ASCII cada caractere imita, marcado como looks like ASCII, non-ASCII ou ASCII. |
| Nível de restrição | De ASCII-Only a Unrestricted, segundo o UTS #39. Minimally Restrictive e Unrestricted aparecem em vermelho porque permitem as misturas mais arriscadas. |
| Caracteres invisíveis e mapeamento do navegador | Se o navegador reescreveria o host, por exemplo removendo um caractere de largura zero ou transformando letras de largura total em letras normais, você recebe um aviso amarelo e um campo What the browser opens. Se o navegador não consegue mapear o host, os caracteres invisíveis nele aparecem em vermelho. |
| Pontos estranhos | Pontos finais ideográficos ou de largura total (U+3002, U+FF0E, U+FF61) funcionam como pontos nos navegadores, mas podem passar por filtros que comparam texto simples. |
| Punycode quebrado | Um rótulo xn-- que não decodifica corretamente aparece em vermelho. |
| Truques ASCII | Nomes em ASCII simples com 0 no lugar de o, 1 no lugar de l, rn no lugar de m ou vv no lugar de w recebem uma nota. Use o campo de comparação para confirmar. |
| Resultado da comparação | Same domain, Confusable (same skeleton), Confusable once case is ignored, Differs only by accents, 1 or 2 edits away (likely typo-squat) ou Not confusable. |
Mais exemplos
а cirílico em um nome latino, comparado com wallet.example
wаllet.exampleLookalike risk: Label "wаllet" mixes scripts (Latin + Cyrillic, restriction level: Minimally Restrictive); 1 character(s) look like ASCII and it reads as "wallet". Forma punycode xn--wllet-4ve[.]example. Comparação: Confusable, os dois esqueletos são wallet[.]exarnple.
Dígito 1 no lugar de l, comparado com wallet.example
wa1let.exampleLooks clean: ASCII-only host: no homoglyphs, no mixed scripts. Uma nota diz que o rótulo contém "1" (can read as l). Comparação: Confusable, porque os dois nomes têm o esqueleto wallet[.]exarnple.
Letra acentuada, comparada com wallet.example
wället.exampleCheck this: Label "wället" reads as "wallet" if the accents are overlooked. Forma punycode xn--wllet-gra[.]example, nível de restrição Single Script. Comparação: Differs only by accents.
Perguntas frequentes
O que o verificador testa?
Cada rótulo é decodificado do punycode com um decodificador RFC 3492, cada caractere recebe seu sistema de escrita Unicode e seu protótipo UTS #39 a partir do confusables.txt (Unicode 18.0), e o rótulo passa por uma verificação de mistura de sistemas de escrita e recebe um nível de restrição UTS #39. Rótulos cujas letras todas se leem como ASCII são sinalizados como confundíveis de sistema de escrita inteiro.
Ele pode deixar passar uma imitação ou sinalizar um domínio real?
Sim. O UTS #39 cobre caracteres parecidos, não erros de digitação, então uma letra trocada ou faltando só aparece pela distância de edição no campo de comparação, e truques ASCII como rn no lugar de m são listados como notas. Nomes legítimos em outros alfabetos, por exemplo alguns domínios cirílicos sob .рф, podem se ler como palavras latinas e ser sinalizados.
Algo é enviado pela rede?
Não. A decodificação, a detecção do sistema de escrita e a tabela de confundíveis rodam nesta página; a forma punycode vem do próprio analisador de URLs do seu navegador, e nenhuma consulta DNS é feita.
O que significam os níveis de restrição?
Eles vêm do Unicode UTS #39. ASCII-Only usa só ASCII simples. Single Script usa um único sistema de escrita. Highly Restrictive permite latino com chinês, japonês ou coreano. Moderately Restrictive permite latino com outro sistema de escrita comum, exceto cirílico e grego. Minimally Restrictive permite outras misturas, e Unrestricted significa que um caractere está fora do perfil de identificadores.
Por que a ferramenta diz que o navegador abre um nome diferente?
Os navegadores normalizam nomes de host com o mapeamento UTS #46. Entre outras coisas, ele transforma letras de largura total em letras normais e remove caracteres invisíveis, como o espaço de largura zero e o hífen condicional (soft hyphen). O link então abre o nome mapeado, enquanto o texto como foi escrito ainda pode passar por filtros que comparam strings brutas.
Quantos hosts posso verificar de uma vez?
Cole uma lista ou uma mensagem e a ferramenta extrai até 50 nomes de host, ignorando endereços IP. O texto é analisado até 20.000 caracteres, e quaisquer palavras não ASCII fora dos nomes de host também são verificadas.