LM Hash
Technical details, regex signatures, and cracking commands for the LM algorithm.
What is LM?
The **LM hash** (also known as **LAN Manager hash**) originated in the mid-1990s as part of Microsoft’s **NT LAN Manager (NTLM)** authentication protocol, designed to maintain backward compatibility with older Windows systems while introducing improvements over the original LAN Manager’s DES-based hashing. Structurally, LM hashes are derived from a **plaintext password** (truncated to 14 characters or fewer) by splitting it into two 7-byte halves, each encrypted twice with **DES in ECB mode** using a fixed key (0x0101010101010101 for the first half, 0x0E0E0E0E0E0E0E0E for the second). The resulting 16-byte ciphertexts are concatenated and converted into a **hexadecimal string of 32 characters** (e.g., `AAD3B435B51404EE9081B1969C25A000`). LM was primarily used in **Windows 9x/NT 3.51** for local and domain authentication, though its reliance on weak cryptographic primitives made it obsolete in modern systems.
LM hashes are notoriously vulnerable due to their **lack of salting**, **predictable structure**, and **inefficient cryptographic design**. The algorithm’s reliance on **ECB-mode DES** allows attackers to exploit **rainbow tables** or **brute-force attacks** efficiently, as the fixed key and truncation (to 14 chars) reduce the effective keyspace. Additionally, modern **GPU/ASIC acceleration** (e.g., via tools like **Hashcat**) can crack LM hashes in seconds due to their **low computational overhead**—a single DES ECB encryption is trivial compared to modern hashes like bcrypt or Argon2. Collision resistance is nonexistent, and the absence of **salt** means identical passwords produce identical hashes, further enabling offline dictionary attacks. These flaws rendered LM completely insecure by the late 1990s, leading to its deprecation in favor of **NTLMv2** and **Kerberos**.
Identifying LM Hashes
Identifying a hash blindly is often difficult because multiple algorithms can output strings of the exact same length. For example, a standard 32-character hexadecimal string could be MD5, NTLM, MD4, or LM. To definitively identify LM, security researchers analyze the hash against a strict regular expression (regex) signature (shown above) to find structural matches.
How to Crack LM
If you need to recover the plaintext password for a LM hash during a penetration test or forensics investigation, you must supply the correct module ID to your cracking software. Use the exact commands provided at the top of this page to target the hash successfully.