Un hash de contraseña NTLM es MD4 aplicado a la contraseña codificada en UTF-16LE. Tiene 128 bits y se escribe con 32 caracteres hexadecimales. El formato clásico no usa sal, por lo que las búsquedas de diccionario y los datos precalculados resultan más eficaces.
La búsqueda compara el resumen enviado con textos en claro indexados en nuestra base. «Descifrar» es un término de búsqueda habitual, pero el proceso real es una búsqueda de coincidencias: un texto en claro ausente del corpus no puede deducirse directamente.
NTLM todavía aparece en sistemas Windows antiguos y escenarios de compatibilidad, pero no debe elegirse para almacenar contraseñas nuevas. Pruebe únicamente credenciales y sistemas para los que tenga autorización.
Un hash de contraseña NTLM es MD4 aplicado a los bytes UTF-16LE. No debe confundirse con el antiguo hash LM ni con NetNTLM, que es un protocolo de desafío-respuesta y no un resumen de contraseña independiente.
$password = 'password';
$utf16le = iconv('UTF-8', 'UTF-16LE', $password);
echo hash('md4', $utf16le);La contraseña se codifica como UTF-16LE y se procesa con MD4. El resultado tiene 128 bits o 32 caracteres hexadecimales.
El hash de contraseña NTLM clásico no usa sal, por lo que contraseñas idénticas producen hashes idénticos.
El texto en claro puede no estar en el corpus, ser aleatorio o largo, o contener caracteres rara vez indexados.
Un resumen NTLM es MD4 aplicado a los bytes UTF-16LE de la contraseña. No debe confundirse con LM ni con las respuestas de red NetNTLM.
Ambos utilizan 32 caracteres hexadecimales. A menudo solo el contexto de origen permite distinguirlos.
Sí. NTLM codifica la contraseña como UTF-16LE antes de MD4; los bytes son distintos de los de UTF-8.
No. NetNTLM es un valor estructurado de desafío-respuesta y requiere un tratamiento diferente.
| Formato | Naturaleza | Aspecto habitual |
|---|---|---|
| LM | Hash heredado de Windows muy débil, basado en DES y en la entrada convertida a mayúsculas. | 32 hex |
| NTLM | MD4 de los bytes UTF-16LE de la contraseña. | 32 hex |
| NetNTLMv1/v2 | Valor de desafío-respuesta de red que contiene varios campos. | user::domain:challenge:response… |
Ejemplo Unicode: café → UTF-16LE 63 00 61 00 66 00 e9 00 → MD4. Una codificación UTF-8 produciría un resumen diferente.