Um hash não pode ser executado ao contrário, então toda técnica de reversão é, na verdade, uma busca por uma entrada cujo hash resulte no alvo. As técnicas se dividem em duas famílias com custos opostos.
Tabelas de consulta
Pré-compute os hashes de bilhões de entradas prováveis (palavras de dicionário, senhas vazadas, padrões comuns), armazene-os indexados pelo resumo, e a reversão vira uma consulta rápida a um banco de dados. É o que serviços como o CrackStation fazem. Os custos são armazenamento enorme, o fato de só funcionar para entradas já presentes na tabela e, crucialmente, só funcionar em hashes sem sal.
Tabelas rainbow são uma variante otimizada em espaço. Em vez de guardar cada par, guardam os extremos de cadeias construídas com funções de redução, trocando muito menos armazenamento por mais processamento por consulta. Mesma limitação central: apenas hashes sem sal.
Força bruta
Não armazena nada. Enumere candidatos sobre um alfabeto, aplique hash em cada um e compare com o alvo. O custo é processamento que cresce com o tamanho do espaço de chaves. Funciona para qualquer entrada ao alcance, mas só alcança espaços pequenos. Um ataque de dicionário é a mesma ideia com candidatos vindos de uma wordlist em vez de enumeração exaustiva, o que é bem mais inteligente para senhas reais.
O trade-off
Tabelas de consulta são pesadas em espaço, quase instantâneas e só para hashes sem sal. Força bruta é pesada em processamento, não precisa de armazenamento e só alcança espaços pequenos.
O demonstrador desta caixa de ferramentas é deliberadamente força bruta pura, sem wordlist e com espaço de chaves limitado. Essa escolha o mantém honesto: não armazena nada, recupera apenas entradas trivialmente fracas e mostra com clareza onde uma busca se torna inviável.
A economia decide qual dos dois você enfrenta
Força bruta gasta computação por alvo. Uma tabela de consulta gasta computação uma vez e depois gasta armazenamento, respondendo a todo alvo seguinte quase instantaneamente.
Essa diferença decide o que um atacante faz com um banco roubado, e explica por que as defesas são diferentes em natureza, não em grau. O salt derrota a tabela, tornando a precomputação inútil. Um lento derrota a força bruta, encarecendo cada tentativa. Nenhum substitui o outro, e um sistema com um e não com o outro tem um buraco no formato exato da metade que falta.
A realidade moderna é que hashes rápidos sem salt de senhas comuns nem chegam a ser atacados — eles são consultados, em tabelas que já existem, de graça.