Free Tool

Detector de Caracteres Ocultos

Cole texto e o detector destaca cada caractere Unicode invisível que encontra — espaços de largura zero, joiners, marcas direcionais e hífens suaves — cada um rotulado com seu ponto de código.

Cole Texto para Detectar Caracteres Ocultos
Cole seu texto abaixo e vamos destacar todos os caracteres ocultos e invisíveis

Caracteres que esta ferramenta detecta

Os caracteres Unicode invisíveis comuns que o detector procura, com o que cada um realmente faz

Espaço de Largura Zero
U+200B

Marca uma oportunidade de quebra de linha. Pode ser plantado dentro de um identificador para fazê-lo corresponder de forma diferente de como ele lê.

Non-Joiner de Largura Zero
U+200C

Evita a junção de caracteres em scripts cursivos como árabe e persa. Invisível, mas muda como os glifos adjacentes se conectam.

Joiner de Largura Zero
U+200D

A cola nas sequências ZWJ de emoji — um emoji de família são quatro emojis unidos por três caracteres U+200D, renderizados como um único glifo.

Marca da Esquerda para a Direita
U+200E

Força a direção do texto da esquerda para a direita sem glifo visível. Legítimo em texto de direção mista; abusado em spoofing bidi.

Marca da Direita para a Esquerda
U+200F

Força a direção da direita para a esquerda. Mesmo uso duplo de U+200E — necessário para hebraico e árabe, usado como arma em phishing.

Hífen Suave
U+00AD

Invisível até uma linha quebrar naquela posição, quando renderiza como hífen. Costuma ser importado por acidente ao copiar de PDFs.

Por que caracteres invisíveis são um problema real

Caracteres Unicode invisíveis existem por motivos legítimos — controle de quebra de linha, junção de scripts cursivos, texto bidirecional, hifenização opcional. Mas como renderizam como nada, também são uma ferramenta de abuso. O paper Trojan Source (CVE-2021-42574, divulgado em outubro de 2021) mostrou que caracteres de override bidirecional podiam fazer código-fonte compilar de forma diferente do que aparece na tela. A divulgação complementar (CVE-2021-42694) cobriu ataques de homoglifos, onde um а cirílico (U+0430) substitui um a latino (U+0061) em um nome de função. Mais perto do uso cotidiano, caracteres de largura zero são colados em nomes de usuário e identificadores para fazer duas strings que parecem idênticas serem comparadas como diferentes. Um detector que expõe esses caracteres por ponto de código é a forma mais rápida de encontrá-los, porque eles não podem ser vistos a olho.

Para que isso é útil

Limpar texto copiado
Texto colado de sites, PDFs e documentos do Word costuma carregar espaços de largura zero e hífens suaves que quebram busca e correspondência. Cole aqui, remova-os, copie o texto limpo de volta.
Checar nomes de usuário e identificadores
Dois nomes de usuário que aparecem como "admin" podem ser strings diferentes se um contiver U+200B. Rode qualquer identificador suspeito pelo detector antes de confiar em uma comparação.
Revisar código-fonte
Caracteres de override bidirecional (U+202A até U+202E) podem esconder lógica em código que parece correto. Cole qualquer trecho de uma fonte não confiável antes de lê-lo.
Pegar links de phishing
Ataques de homografia IDN usam caracteres confundíveis para registrar domínios parecidos. O detector não vai resolver o domínio, mas vai expor caracteres invisíveis escondidos no texto da URL.

Como deve ser uma varredura séria

Os seis caracteres listados acima são os mais comuns, mas não são o quadro completo. Uma varredura minuciosa cobre várias faixas. Os caracteres de formato de largura zero U+200B até U+200F cobrem oportunidades de quebra de linha, joiners e marcas direcionais. U+2060 (word joiner) e U+FEFF (marca de ordem de bytes, quando aparece no meio do fluxo) também são de largura zero. O bloco de override bidirecional — U+202A até U+202E, mais U+2066 até U+2069 — é o que o Trojan Source explora. U+00AD (hífen suave) é invisível até uma quebra. Os preenchedores Hangul U+115F e U+3164 e o braille em branco U+2800 renderizam como nada mas ocupam uma célula, o que os torna úteis para esconder conteúdo à vista de todos. Detecção de confundíveis é um problema relacionado mas separado: um а cirílico e um a latino são ambos visíveis, então um detector de caracteres não vai sinalizá-los. Para isso, você precisa de uma checagem contra os dados de confusables do Unicode, que mapeiam caracteres parecidos a um esqueleto normalizado.

Como usar o detector bem

Cole apenas o texto que você quer verificar. Tudo roda no seu navegador; nada é enviado.

Use a codificação por cores para distinguir tipos de caractere de relance — vermelho para ZWSP, verde para ZWJ, laranja para RLM, e assim por diante.

Depois de detectar, clique em Remover para eliminar todo caractere invisível, depois Copiar Texto Limpo para obter a versão saneada.

Confira qualquer nome de usuário, slug ou identificador que veio de input de usuário antes de armazenar ou comparar.

Se uma comparação de strings está falhando e as strings parecem idênticas, cole ambas aqui — um U+200B oculto é a causa mais comum.

Para código-fonte de terceiros, escaneie U+202A até U+202E antes de ler. Esses são os overrides bidi por trás do Trojan Source.

Como o detector funciona

O detector roda inteiramente no seu navegador como JavaScript. Nenhum texto sai do seu dispositivo, o que importa quando você está colando identificadores sensíveis ou código-fonte. Funciona no Chrome, Firefox, Safari, Edge e qualquer navegador moderno em desktop ou celular. Ele escaneia os caracteres de largura zero na faixa U+200B até U+200F, os overrides bidirecionais em U+202A até U+202E e U+2066 até U+2069, o word joiner U+2060, o hífen suave U+00AD e a marca de ordem de bytes U+FEFF quando ela aparece fora da primeira posição de um arquivo. Note que ele sinaliza caracteres invisíveis por ponto de código; ele não detecta homoglifos, que são caracteres visíveis que apenas parecem outros caracteres.

Perguntas comuns sobre detectar caracteres ocultos