Esconder uma mensagem num texto
Esconde uma mensagem secreta num texto normal com caracteres invisíveis de largura zero, encriptada com frase-passe se quiseres, e revela-a ou remove-a.
Isto é um truque, não segurança: muitas aplicações e sites removem os caracteres de largura zero, e qualquer pessoa os deteta com uma verificação simples. Usa a frase-passe se o conteúdo for importante.
Esconder uma mensagem
- Caracteres visíveis
- Caracteres invisíveis acrescentados
- Tamanho em UTF-8
Mostrar onde estão os caracteres escondidos
Cada ◆ representa um carácter invisível. Copia o texto da caixa acima, não desta vista.
Revelar ou remover uma mensagem escondida
Remover todos os caracteres invisíveis
Como esconder uma mensagem
- Escreve o Texto de cobertura (o que toda a gente vê): uma frase normal, que vai parecer exatamente igual depois.
- Escreve a Mensagem secreta.
- Se quiseres, introduz uma Frase-passe (opcional). A mensagem é então encriptada com AES-256-GCM antes de ser escondida, por isso conhecer o método não chega para a ler.
- Escolhe Onde colocar os caracteres escondidos: Depois da primeira palavra (por omissão), Espalhados entre as palavras, Mesmo no início ou Mesmo no fim.
- Carrega em Esconder mensagem e copia o Texto com a mensagem escondida com o botão Copiar. Abre Mostrar onde estão os caracteres escondidos para os veres como símbolos ◆.
Como revelar ou remover uma mensagem escondida
- Cola o texto em Texto a verificar. O número de caracteres de largura zero aparece por baixo da caixa.
- Carrega em Revelar mensagem. Se a mensagem estiver encriptada, introduz a Frase-passe (se a mensagem estiver encriptada) e carrega outra vez.
- Para limpar um texto, carrega em Remover caracteres escondidos: obténs o mesmo texto sem os dados escondidos. Os emojis como 👨👩👧, que usam legitimamente caracteres de junção invisíveis, ficam intactos.
Tudo acontece no teu navegador; nem o texto nem a frase-passe são enviados para lado nenhum.
Como funciona
O Unicode tem caracteres que não ocupam espaço no ecrã. Esta ferramenta usa quatro deles como algarismos: ZERO WIDTH SPACE (U+200B) = 00, ZERO WIDTH NON-JOINER (U+200C) = 01, ZERO WIDTH JOINER (U+200D) = 10 e WORD JOINER (U+2060) = 11. A tua mensagem é convertida em bytes UTF-8, e cada byte passa a quatro caracteres invisíveis. O bloco começa e acaba com um ZERO WIDTH NO-BREAK SPACE (U+FEFF) e leva um cabeçalho de um byte que indica se o conteúdo é texto simples ou encriptado.
Por isso, a parte escondida cresce depressa: uma mensagem de 20 letras acrescenta cerca de 90 caracteres invisíveis, e a encriptação junta 49 bytes de cabeçalho e etiqueta de autenticação (cerca de 200 caracteres a mais). As letras acentuadas do português ocupam 2 bytes em UTF-8, por isso também contam a dobrar. Em UTF-8, cada um destes caracteres invisíveis ocupa 3 bytes, o que importa nos campos com limite em bytes. Tamanho em UTF-8, nos resultados, mostra o tamanho real do texto completo.
Com uma frase-passe, a ferramenta usa o mesmo formato que a ferramenta de encriptação de texto: o PBKDF2-SHA-256 com 600 000 iterações deriva a chave, o AES-256-GCM encripta, e uma frase-passe errada ou um único carácter alterado fazem a desencriptação falhar, em vez de devolverem lixo.
Limites: um truque, não segurança
- Muitas plataformas removem os caracteres de largura zero. Algumas aplicações de mensagens, redes sociais, campos de formulário e processadores de texto removem-nos ou normalizam-nos. Testa primeiro com o destino: cola lá o resultado, volta a copiá-lo e carrega em Revelar mensagem.
- As cópias parciais estragam a mensagem. Se quem lê copiar só uma parte do texto, o bloco fica incompleto e a ferramenta indica normalmente que está danificado.
- É fácil de detetar. Qualquer verificador de caracteres invisíveis, um editor hexadecimal ou uma simples contagem revelam que há ali alguma coisa. Desta forma, não é possível esconder a existência de uma mensagem de um observador determinado.
- Sem frase-passe, é só ofuscação. Qualquer pessoa que conheça esta técnica comum a consegue descodificar. Usa uma frase-passe forte para tudo o que for sensível e partilha-a por outro canal.
Para remover todos os tipos de caracteres invisíveis (espaços inseparáveis, controlos bidirecionais, hífenes condicionais e muito mais), usa o removedor de caracteres invisíveis.
Perguntas frequentes
A mensagem escondida sobrevive ao envio por email ou por chat?
Às vezes. O email em texto simples e muitas aplicações de chat mantêm os caracteres de largura zero, mas alguns serviços removem-nos, e alguns teclados ou editores alteram-nos. Faz sempre um teste de ida e volta.
Outras ferramentas conseguem ler as mensagens escondidas aqui?
Só as que usam a mesma codificação. Não existe uma norma para a esteganografia com caracteres de largura zero, por isso as diferentes ferramentas não são, em geral, compatíveis.
Espalhar os caracteres entre as palavras ajuda?
Evita longas sequências de caracteres invisíveis num só sítio, o que pode resistir melhor a alguns editores e parecer menos suspeito num inspetor de caracteres. Não torna a mensagem mais difícil de encontrar para um programa.
Porque é que a ferramenta encontra caracteres de largura zero, mas nenhuma mensagem?
O texto contém caracteres invisíveis que não foram escritos no formato desta ferramenta: copiados de uma página web, inseridos por um editor ou uma marca de água de outra ferramenta. O removedor de caracteres invisíveis consegue listá-los.
O que acontece se esconder uma mensagem nova num texto que já tem uma?
O bloco escondido antigo é removido primeiro, por isso o resultado contém apenas a mensagem nova.
Ferramentas relacionadas
- Remover caracteres invisíveis Encontra e remove caracteres invisíveis online. Deteta espaços de largura zero, espaços inseparáveis, hífenes condicionais e controlos bidi (Trojan Source).
- Encriptar texto com palavra-passe Encripta e desencripta texto com uma frase-passe no navegador, com AES-256-GCM e PBKDF2 de 600 000 iterações. Nada é enviado. Limites explicados.
- Esconder texto numa imagem Esconde uma mensagem de texto secreta numa imagem com esteganografia LSB, com encriptação AES-256-GCM opcional, e revela-a depois. Local, sem envio.
- Texto para binário, hexadecimal e ASCII Converte texto em códigos binários, hexadecimais, decimais ou octais e vice-versa, com bytes UTF-8 ou pontos de código Unicode e tabela de caracteres.