Un hash NTLM de mot de passe est obtenu en appliquant MD4 à la représentation UTF-16LE du mot de passe. Il contient 128 bits et s’écrit avec 32 caractères hexadécimaux. Le format n’intègre pas de sel, ce qui facilite les recherches par dictionnaire et les tables pré-calculées.
La recherche compare l’empreinte saisie aux textes indexés dans notre base. Le mot “décrypter” est employé couramment, mais le fonctionnement réel est une recherche de correspondance : un texte absent du corpus ne peut pas être déduit directement.
NTLM reste rencontré dans des environnements Windows anciens ou pour la compatibilité. Il ne doit pas être utilisé comme nouveau mécanisme de stockage. Pour un audit, ne testez que des identifiants et systèmes que vous êtes autorisé à examiner.
Un hash NTLM de mot de passe est le MD4 des octets UTF-16LE. Il ne faut pas le confondre avec LM, plus ancien, ni avec NetNTLM, qui est un protocole défi-réponse et non une simple empreinte de mot de passe.
$password = 'password';
$utf16le = iconv('UTF-8', 'UTF-16LE', $password);
echo hash('md4', $utf16le);Le mot de passe est converti en UTF-16LE puis haché avec MD4. La sortie fait 128 bits, soit 32 caractères hexadécimaux.
Le hash NTLM de mot de passe classique n’intègre pas de sel, ce qui permet de comparer directement des empreintes identiques.
Le texte peut être absent de la base, aléatoire, long ou contenir des caractères rarement indexés.
Une empreinte NTLM est le MD4 des octets UTF-16LE du mot de passe. Elle ne doit pas être confondue avec LM ni avec les réponses réseau NetNTLM.
Les deux utilisent 32 caractères hexadécimaux. Seul le contexte permet souvent de les distinguer.
Oui. NTLM encode le mot de passe en UTF-16LE avant MD4 ; les octets diffèrent d’un encodage UTF-8.
Non. NetNTLM est une réponse challenge-réponse structurée et nécessite un traitement différent.
| Format | Nature | Aspect courant |
|---|---|---|
| LM | Ancien hash Windows très faible, basé sur DES et les majuscules. | 32 hex |
| NTLM | MD4 des octets UTF-16LE du mot de passe. | 32 hex |
| NetNTLMv1/v2 | Réponse challenge-réponse capturée sur le réseau, avec plusieurs champs. | user::domain:challenge:response… |
Exemple Unicode : café → UTF-16LE 63 00 61 00 66 00 e9 00 → MD4. Un encodage UTF-8 donnerait une empreinte différente.