Um hash de senha NTLM é MD4 aplicado à senha codificada em UTF-16LE. Ele tem 128 bits e é escrito com 32 caracteres hexadecimais. O formato clássico não usa salt, tornando buscas de dicionário e dados pré-calculados mais eficazes.
A busca compara o resumo enviado com textos simples indexados em nosso banco. “Descriptografar” é um termo de busca comum, mas o processo real é uma busca por correspondência: um texto simples ausente do conjunto não pode ser deduzido diretamente.
O NTLM ainda aparece em sistemas Windows antigos e cenários de compatibilidade, mas não deve ser escolhido para novo armazenamento de senhas. Teste apenas credenciais e sistemas para os quais você tenha autorização.
Um hash de senha NTLM é MD4 aplicado aos bytes UTF-16LE. Ele não deve ser confundido com o antigo hash LM nem com o NetNTLM, que é um protocolo de desafio-resposta, não um resumo de senha independente.
$password = 'password';
$utf16le = iconv('UTF-8', 'UTF-16LE', $password);
echo hash('md4', $utf16le);A senha é codificada em UTF-16LE e processada com MD4. O resultado tem 128 bits ou 32 caracteres hexadecimais.
O hash de senha NTLM clássico não usa salt; portanto, senhas idênticas produzem hashes idênticos.
O texto simples pode estar ausente do conjunto, ser aleatório ou longo, ou conter caracteres raramente indexados.
Um resumo NTLM é MD4 aplicado aos bytes UTF-16LE da senha. Ele não deve ser confundido com LM nem com respostas de rede NetNTLM.
Ambos usam 32 caracteres hexadecimais. Muitas vezes, apenas o contexto de origem permite distingui-los.
Sim. O NTLM codifica a senha como UTF-16LE antes do MD4; os bytes são diferentes dos de UTF-8.
Não. O NetNTLM é um valor estruturado de desafio-resposta e exige tratamento diferente.
| Formato | Natureza | Aparência típica |
|---|---|---|
| LM | Hash legado do Windows muito fraco, baseado em DES e na entrada convertida para maiúsculas. | 32 hex |
| NTLM | MD4 dos bytes UTF-16LE da senha. | 32 hex |
| NetNTLMv1/v2 | Valor de desafio-resposta de rede com vários campos. | user::domain:challenge:response… |
Exemplo Unicode: café → UTF-16LE 63 00 61 00 66 00 e9 00 → MD4. Uma codificação UTF-8 produziria um resumo diferente.