# Localizador de Pré-imagem de Hash

> Veja uma busca local por força bruta, limitada, recuperar em segundos a entrada de um hash fraco — ou esgotar o espaço de chaves diante de qualquer coisa com entropia real. Sem wordlist, sem tabela, apenas o seu navegador. Uma demonstração de por que hashes rápidos e sem sal falham.

- Tool: https://ronutz.com/pt-BR/tools/hash-preimage-finder
- Family: Hashing e cripto

---

## O que faz

Esta é uma ferramenta didática. Ela executa uma busca por força bruta, limitada, no seu navegador, tentando encontrar uma entrada cujo hash corresponda a um resumo alvo. Contra uma entrada fraca, um PIN curto ou algumas letras minúsculas, ela consegue em segundos; contra qualquer coisa com entropia real, esgota seu espaço de chaves limitado e para sem resposta. Esse contraste é justamente o ponto: mostra, na prática, por que um hash rápido e sem sal é uma forma ruim de proteger uma senha, e por que um segredo de alta entropia é seguro mesmo diante de uma busca direta.

## O que é uma pré-imagem e como a busca funciona

Um hash é unidirecional, então não há fórmula que transforme um resumo de volta na sua entrada. A única forma genérica de revertê-lo é adivinhar: escolher um candidato, calcular seu hash e ver se o resumo bate. Este localizador faz exatamente isso. Ele enumera candidatos sobre um alfabeto e um comprimento que você escolhe (dígitos, letras minúsculas e assim por diante) e calcula o hash de cada um localmente até encontrar uma correspondência ou esgotar os candidatos. Não usa dicionário, nem wordlist, nem tabela pré-calculada, então é puramente uma demonstração de busca exaustiva, e não um kit de quebra de senhas.

## Por que entradas fracas caem e as fortes não

O número de candidatos é o tamanho do alfabeto elevado ao comprimento. Um PIN de 4 dígitos são apenas 10^4, ou seja, 10.000 possibilidades, trivialmente pesquisáveis; seis letras minúsculas são 26^6, cerca de 300 milhões, ainda pouco para um computador; mas cada caractere a mais multiplica o espaço, então um segredo realmente aleatório empurra a contagem muito além do que qualquer busca local limitada consegue cobrir. É exatamente por isso que hashes rápidos como MD5 ou SHA-256, que podem ser calculados bilhões de vezes por segundo, são inadequados para senhas, e por que sistemas reais adicionam um sal e usam uma função de derivação de chave deliberadamente lenta, como recomendam o guia de armazenamento de senhas da OWASP e o NIST SP 800-63B.

## O que ela não consegue fazer

Como o espaço de chaves é limitado e não há wordlist, a ferramenta só recupera entradas que já eram sabidamente fracas. Ela não consegue atacar um hash com sal, nem um hash produzido por uma função de derivação de chave lenta como bcrypt, scrypt, Argon2 ou PBKDF2, que são projetadas para tornar cada tentativa cara.

## Como usar

Informe um resumo alvo, ou calcule o hash de uma entrada de exemplo para produzir um, escolha o alfabeto e o comprimento máximo a pesquisar, e observe a busca rodar. Experimente uma entrada numérica curta para vê-la ter sucesso rapidamente, depois aumente o comprimento ou amplie o alfabeto para ver o espaço de chaves ultrapassar a busca.

## Standards and references

- [RFC 1321 - The MD5 Message-Digest Algorithm](https://www.rfc-editor.org/rfc/rfc1321)
- [RFC 3174 - US Secure Hash Algorithm 1 (SHA1)](https://www.rfc-editor.org/rfc/rfc3174)
- [FIPS 180-4 - Secure Hash Standard (SHA-256)](https://csrc.nist.gov/pubs/fips/180-4/upd1/final)
- [OWASP - Password Storage Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)
- [NIST SP 800-63B - Digital Identity Guidelines (Authentication)](https://pages.nist.gov/800-63-3/sp800-63b.html)

## Related reading

- [Escolhendo um Hash de Senha](https://ronutz.com/pt-BR/learn/choosing-a-password-hash.md): Armazenar senhas com segurança é um problema resolvido: use um hash de senha dedicado, com sal e lento, não um resumo cru. Este é um guia curto de decisão, do algoritmo a escolher aos parâmetros a definir e aos erros a evitar, alinhado às diretrizes da OWASP e do NIST.
- [Espaço de Chaves, Entropia e Tempo de Quebra](https://ronutz.com/pt-BR/learn/keyspace-entropy-and-crack-time.md): Se a força bruta pode reverter um hash se resume ao tamanho do espaço de chaves versus a taxa de hash do atacante. O espaço de chaves cresce exponencialmente com comprimento e alfabeto, então alguns caracteres a mais levam um segredo de quebrado em segundos a inviável por milênios. É a aritmética por trás de por que comprimento e aleatoriedade importam mais.
- [Força Bruta vs Tabelas de Consulta: Duas Formas de Reverter um Hash](https://ronutz.com/pt-BR/learn/brute-force-vs-lookup-tables.md): Como um hash não pode ser invertido, revertê-lo significa buscar, e há duas famílias. Pré-computar uma tabela gigante de pares entrada-para-hash e consultar o resumo (o que o CrackStation faz), ou gerar candidatos em tempo real e aplicar hash em cada um até um coincidir (força bruta). Elas trocam armazenamento por processamento em direções opostas.
- [KDFs Lentas: bcrypt, scrypt e Argon2](https://ronutz.com/pt-BR/learn/slow-kdfs-bcrypt-scrypt-argon2.md): O salt derrota a pré-computação, mas não um ataque direcionado de tentar e verificar; um hash rápido ainda permite bilhões de candidatos por segundo. Funções de derivação de chave lentas resolvem isso tornando cada tentativa deliberadamente cara e ajustável, cortando a taxa do atacante em muitas ordens de grandeza. É com elas que você deve armazenar senhas.
- [Por Que Hashes Criptográficos São de Mão Única](https://ronutz.com/pt-BR/learn/why-hashes-are-one-way.md): Um hash criptográfico mapeia qualquer entrada para um resumo de tamanho fixo e é projetado para que recuperar a entrada a partir do resumo seja inviável. Essa propriedade, resistência à pré-imagem, é o motivo pelo qual você não pode descriptografar um hash. Só há duas formas de revertê-lo: consultar uma tabela ou tentar e verificar — ambas são busca, não inversão.
- [Por Que o Salt Derrota Tabelas Pré-computadas](https://ronutz.com/pt-BR/learn/why-salting-defeats-precomputed-tables.md): Um salt é um valor aleatório único armazenado com cada hash de senha e misturado antes de aplicar o hash. Ele faz senhas idênticas gerarem hashes diferentes, o que destrói a economia das tabelas pré-computadas: um atacante precisaria de uma tabela separada para cada salt. O salt é a defesa específica que neutraliza serviços de consulta e tabelas rainbow.
