Como esconder texto secreto em imagens (esteganografia)
Esteganografia é a técnica de esconder uma mensagem dentro de outra coisa (aqui, dentro dos pixels de uma imagem) de modo que ninguém perceba que existe algo escondido ali. Diferente da criptografia, que embaralha o conteúdo e deixa óbvio que há um segredo, a esteganografia disfarça a própria existência da mensagem. Este guia mostra como isso acontece e como esconder e revelar seu próprio texto secreto em uma imagem, de graça e totalmente no navegador, sem enviar nada para servidor nenhum.
Como funciona
Toda imagem colorida é uma grade de pixels, e cada pixel guarda três valores: vermelho, verde e azul, cada um de 0 a 255. O valor 200 no canal vermelho, por exemplo, é 11001000 em binário. O truque da esteganografia LSB (do inglês least significant bit, ou bit menos significativo) é mexer só no último bit desse número. Se o vermelho 200 (11001000) vira 201 (11001001), o valor mudou em apenas uma unidade num total de 256. É uma diferença que o olho humano simplesmente não enxerga, e é nesse último bit que gravamos a mensagem.
O texto secreto é convertido em bytes, e cada bit desses bytes ocupa o bit menos significativo de um canal de um pixel. Um exemplo concreto: a letra “H” tem código 72, que em binário é 01001000. São 8 bits, então “H” precisa de 8 canais (por exemplo, 8 pixels usando só o vermelho). O primeiro pixel recebe o bit 0 no seu último bit, o segundo recebe 1, o terceiro 0, e assim por diante até completar os 8 bits. Para ler de volta, o decodificador percorre os pixels na mesma ordem, coleta o último bit de cada canal e remonta os bytes. A imagem continua visualmente idêntica, mas carrega o texto escondido.
Quanto dá para esconder
A capacidade depende do tamanho da imagem e de quantos canais você usa. Como cada canal de cada pixel guarda 1 bit, e 1 byte tem 8 bits, a conta é direta: divida o número de canais disponíveis por 8. Usando só o vermelho, você tem 1 bit por pixel; usando vermelho, verde e azul juntos (RGB), são 3 bits por pixel, ou seja, o triplo de espaço.
| Imagem | Só vermelho | RGB (3 canais) |
|---|---|---|
| 100x100 px | ≈ 1,2 KB | ≈ 3,6 KB |
| 1280x720 px | ≈ 115 KB | ≈ 345 KB |
| 1920x1080 px | ≈ 259 KB | ≈ 778 KB |
Nosso codificador deixa você escolher entre Vermelho (o padrão, mais discreto porque altera menos a imagem), RGB (aproximadamente 3x a capacidade) e RGBA (aproximadamente 4x, incluindo o canal de transparência). Para um bilhete curto, o vermelho sozinho sobra; para textos longos ou uma imagem pequena, vale subir para RGB.
Esconda uma mensagem
Envie uma imagem, digite seu texto e codifique. Tudo acontece na sua máquina.
O fluxo é curto: envie uma imagem, digite a mensagem que quer esconder, opcionalmente escolha RGB (ou RGBA) se precisar de mais espaço, opcionalmente defina uma senha para criptografar o conteúdo, clique em Codificar e depois em Baixar. A saída é sempre um arquivo PNG, e isso não é detalhe: o PNG usa compressão sem perdas, então cada pixel sai exatamente como entrou, com os bits ocultos intactos. O JPEG faz o contrário, ele descarta informação para diminuir o arquivo e, ao recalcular os pixels, destruiria justamente os últimos bits onde a mensagem mora. Por isso nunca salve o resultado como JPEG.
Revele uma mensagem
Recebeu um PNG e desconfia que tem algo escondido? Solte o arquivo aqui e leia.
Solte o PNG na área do decodificador e ele tenta extrair o texto oculto. Se a mensagem tinha senha, digite a mesma senha para descriptografar. Vale notar que o decodificador não lê só o formato que o nosso codificador produz: ele detecta automaticamente vários esquemas LSB comuns (diferentes canais e ordens de bit), então costuma funcionar mesmo com imagens geradas por outras ferramentas. Se a foto não tiver mensagem nenhuma, ele simplesmente retorna vazio em vez de despejar lixo.
Adicione uma senha (criptografia)
A senha é onde esteganografia e criptografia se somam. Quando você define uma senha, a mensagem é criptografada com AES-256-GCM antes de entrar nos pixels, e a chave é derivada da sua senha com PBKDF2. O efeito prático é forte: sem a senha, os bits ocultos parecem ruído aleatório e não revelam absolutamente nada, e uma senha errada também não revela nada, porque o modo GCM tem uma etiqueta de autenticação que rejeita qualquer chave incorreta.
Pense assim: a esteganografia esconde que existe uma mensagem, e a criptografia a torna ilegível mesmo se alguém descobrir que ela está lá. Uma protege contra suspeita, a outra protege contra leitura. Juntas, você tem um segredo que ninguém percebe e que ninguém consegue abrir sem a senha.
Limites e erros comuns
Vale ser honesto sobre onde isso quebra. A técnica funciona apenas em PNG (ou outro formato sem perdas). No momento em que a imagem é reencodada como JPEG, os bits ocultos vão embora junto com a compressão. Tirar um print da imagem tem o mesmo efeito, porque a captura recalcula os pixels do zero.
O erro mais comum é compartilhar pelo canal errado. Muitos aplicativos de mensagem e redes sociais recomprimem as imagens automaticamente ao enviá-las, e essa recompressão apaga o payload. Se você mandar a imagem como “foto” no WhatsApp ou postar no Instagram, provavelmente ela chega do outro lado sem o segredo. A saída é compartilhar o PNG como arquivo/documento, por um canal que não mexe nos bytes originais.
Por fim, isto é esteganografia LSB, não um detector universal. Existem outros métodos que escondem dados de formas diferentes, por exemplo no domínio DCT do próprio JPEG. Nosso decodificador cobre os formatos LSB mais usados, mas não promete extrair qualquer coisa escondida por qualquer técnica que exista.
Perguntas frequentes
É privado? Sim. Tanto o codificador quanto o decodificador rodam inteiramente no seu navegador, usando a Canvas API para ler e escrever os pixels. A imagem nunca é enviada para nenhum servidor, então a mensagem não sai da sua máquina.
Posso usar qualquer imagem? Praticamente qualquer imagem serve como base, mas o resultado precisa ser salvo em PNG. Quanto maior a imagem, mais texto cabe. Só evite partir de um JPEG e salvar de volta em JPEG, porque a compressão destruiria a mensagem.
A imagem codificada fica diferente? Visualmente, não. As alterações acontecem no último bit de cada canal, uma variação de no máximo 1 em 256, imperceptível a olho nu. O arquivo PNG resultante pode ter um tamanho um pouco diferente, mas a imagem parece idêntica.
Alguém consegue ler sem a senha? Sem senha, qualquer pessoa com um decodificador LSB pode extrair o texto, então a esteganografia sozinha esconde, mas não protege. Com senha, o conteúdo é criptografado com AES-256-GCM: sem a senha correta, os dados parecem ruído e nada é revelado.
Pronto para testar? Use o Codificador de Esteganografia para esconder sua mensagem e o Decodificador de Esteganografia para revelá-la de volta.