PKZIP (Compressed) Hash

Technical details, regex signatures, and cracking commands for the PKZIP (Compressed) algorithm.

Regex Identification Signature:
^\$pkzip2?\$(1)\*[0-9]{1}\*[0-9]{1}\*[0-9a-f]{1,3}\*[0-9a-f]{1,8}\*[0-9a-f]{1,4}\*[0-9a-f]{1,8}\*[0-9a-f]{1,8}\*[0-9a-f]{1,8}\*(8)\*[0-9a-f]{1,8}(\*[0-9a-f]{1,8})?\*[0-9a-f]{1,8}\*[a-f0-9]+\*\$\/pkzip2?\$$
Hashcat Command (Mode: 17200):
John the Ripper Command:
← Back to Hash Identifier

What is PKZIP (Compressed)?

The **PKZIP (Compressed) hash format** originates from the **PKZIP file compression algorithm**, developed by **Phil Katz** in the late 1980s and popularized by **PKWARE** in the 1990s as the de facto standard for ZIP archives. Cryptographically, this format refers to the **MD5-based hash variant** embedded within PKZIP files (specifically in **ZIP files with encrypted entries**), where the password-protected file header stores a **32-byte (128-bit) hash** derived from the password and a **volume identifier (VOLID)**. The structure consists of a **central directory file header (CDFH)** containing encrypted metadata, including the **compressed data descriptor (CDD)** and a **16-byte salted hash** (though the salt is often omitted or trivial in practice). The primary use-case was password protection for ZIP archives, leveraging **symmetric encryption** (initially **PKZIP’s proprietary cipher**, later **ZIP’s AES-128/256 in PKZIP 2.0+**), with the hash serving as a **pre-image resistant checksum** to verify password correctness before decryption. However, the **original PKZIP (v1.0–2.0) encryption scheme** relied on a **weak cipher** (essentially a **modified DES-like algorithm**) combined with this hash, making it vulnerable to brute-force attacks.

The **PKZIP (Compressed) hash format is vulnerable to cracking due to several fundamental flaws**, primarily stemming from **predictable structures, lack of proper salting, and computational optimizations**. The original PKZIP encryption (pre-v2.0) used a **fixed 48-bit key derivation** (derived from the password via a simple XOR and bit-shifting process), rendering the hash **trivially reversible** via **rainbow tables** or **brute-force attacks** (as the key space was effectively **2^48**). Even in later versions, the **16-byte hash (MD5-based) was often stored without a meaningful salt**, allowing attackers to precompute hashes for common passwords. Additionally, the **compressed nature of ZIP files** enabled **GPU/FPGA acceleration** for brute-force tools (e.g., **ZipCrack, John the Ripper’s zip2john module**), as the hash computation could be parallelized efficiently. Collision resistance was further compromised by the **smaller effective key space** (due to password truncation and weak key expansion), and **side-channel attacks** (e.g., timing analysis) could exploit implementation inconsistencies in older ZIP tools. Modern cryptanalysis tools leverage **GPU clusters** to test **millions of passwords per second**, rendering the format **computationally insecure** for serious password protection.

Identifying PKZIP (Compressed) 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 PKZIP (Compressed), security researchers analyze the hash against a strict regular expression (regex) signature (shown above) to find structural matches.

How to Crack PKZIP (Compressed)

If you need to recover the plaintext password for a PKZIP (Compressed) 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.