Briefing
New face. Good. Sit down, don't touch anything yet.
I run wireless engagements. Drive-by audits, retail Wi-Fi pentests, the occasional "we forgot what password the warehouse AP uses" recovery job. All authorised. All paid. All boring until something breaks.
Today you're going to crack two networks. One WEP, one WPA2-PSK. WEP is dead, has been since 2007, but you still find it on legacy industrial gear, old printers, that one IP camera nobody updated since 2015. WPA2 is what you'll actually encounter in the field.
The kit on this terminal is a simulated Pineapple. Same commands as the real
Let's see what's in range.
Your task
- Open the terminal
- Confirm the wireless interfaces are up:
sudo airmon-ng - You should see a numerous entries in managed mode
Right now all of these interfaces are in managed mode they can talk to access points like a normal client. That's not what we want, we'll change that in the next step.
Monitor Mode
Managed mode is for clients. We're not a client. We're an observer.
To capture wireless frames without being associated to an AP, the card has to be put into monitor mode, listening to everything in range on a given channel, including traffic not addressed to us. This is the foundation of every Wi-Fi attack.
The tool is
Your task
- Kill conflicting processes:
sudo airmon-ng check kill - Put wlp2s0 into monitor mode:
sudo airmon-ng start wlp2s0
You can actually choose any interface available, if you have an issue with wlp2s0, just switch to another one after you've got your flag; but make sure that you keep the same number in every future command!
Scanning the Airwaves
Now we listen.
You'll see noise. Real airspace is crowded, every café, every neighbour's router, every IoT light bulb. Your job is to find the targets you've been authorised to test.
For this engagement, you're looking for two networks:
→ POWERZIO_OLD: old wireless, the WEP one
→ Powerzio_Internal: operations Wi-Fi, WPA2
Note their BSSIDs and channels. You'll need both.
Your task
- Start scanning:
sudo airodump-ng wlan0mon - Let it run for about 15 seconds
- Stop with Ctrl+C
- Find the two Powerzio networks in the output
- Note their BSSID (MAC address), CH (channel), and ENC (encryption)
The output has two sections: top is access points, bottom is clients (called STATIONs). The encryption column is what tells you the attack you need,WEP ,WPA ,WPA2 , orOPN for open.
WEP : Focused Capture
We start with WEP. It's the easier kill.
WEP uses a fixed key with a 24-bit Initialization Vector (IV) prepended to each packet. The IV is reused often enough that with about 10,000–40,000 captured IVs, you can mathematically recover the key. No password guessing. Pure cryptographic weakness.
Step one: stop scanning everywhere. Lock onto the WEP target's BSSID and channel, and write everything to a file. The more IVs we capture, the faster the crack.
Your task
- Look up the BSSID and channel for POWERZIO_OLD from the previous step
- Run a focused capture (replace BSSID and channel with the values you found):
sudo airodump-ng --ivs -c <channel> --bssid <BSSID> -w wep_capture wlan0mon - Watch the #Data column climb: that's the IV count
- Let it run until you see roughly 20,000 data packets (simulated traffic generates them automatically)
- Stop with Ctrl+C
- Run
ls to check that the file has correctly been created.
In a real engagement, when traffic is sparse, you can useaireplay-ng to generate fake traffic and force the AP to produce more IVs.
WEP : Cracking the Key
You should now have a
Time to run the actual crack.
Your task
- Run aircrack-ng against the capture:
sudo aircrack-ng wep_capture.ivs - Wait for the KEY FOUND message
The recovered key appears in both hex and ASCII formats. Real WEP keys are 5 or 13 ASCII characters (40-bit and 104-bit respectively). The key it finds is the actual passphrase someone configured on the AP.
WPA : The Handshake
WPA2 is a different animal.
There's no IV weakness to exploit. The key is hashed with the SSID as salt, then used to derive session keys via a 4-way handshake when a client connects. Our only opening is to capture that handshake and brute-force the passphrase offline.
That means: we need a client to connect (or reconnect) to the AP while we're listening.
If nobody connects during your capture window, you've got nothing. Patience or pressure: that's the choice.
Your task
- Note the BSSID and channel for Powerzio_Internal
- Start a focused capture on that target:
sudo airodump-ng -c <channel> --bssid <BSSID> -w wpa_capture wlan0mon - Leave it running and watch the top-right of the output for a WPA handshake notification
- Note any connected STATIONs (clients) listed in the lower section, we'll need one
- There is no flag for this one, but keep this tab open with airmon-ng running and open the next challenge in a new tab once you're done!
Without a handshake there's nothing to crack. The capture file might be 50MB of pure traffic, but if the 4-way handshake isn't in it,aircrack-ng will refuse to even try.
WPA : Forcing a Handshake
Waiting for someone to voluntarily reconnect could take hours. We've got a faster option: kick them off.
You'll need a second terminal session for this. Keep airodump-ng running in the first one and watch for the handshake notification while you deauth from the second.
Your task
- You've kept the previous challenge in another tab, right? Great, keep airodump-ng listening in it!
- From this second pane, send a deauth burst (use the AP's BSSID, and a STATION you noted earlier):
sudo aireplay-ng --deauth 10 -b <AP_BSSID> -d <STATION_MAC> wlan0mon - Switch back to the airodump-ng pane and look for WPA handshake: <BSSID> in the top-right header
- Once you see it, stop airodump-ng with Ctrl+C
- There is no flag for this challenge, move on to the next one!
The--deauth 10 sends 10 deauth frames. More is louder but also more likely to be logged by intrusion detection. Real engagements: be surgical. Send 3-5, wait, send a few more if needed.
WPA : Dictionary Attack
Handshake captured. Now the slow part.
Unlike WEP, WPA2 doesn't yield to math; it yields to wordlists.
If it's not in the wordlist, you fail. Real engagements: pick wordlists carefully, generate custom ones from OSINT (company name, hometown, founding year, common patterns), and budget hours-to-days for the crack.
For this lab, the password is in
Your task
- Confirm the wordlist exists:
ls -lh /var/aircrack/fortinet-2021_passwords.txt - Run the dictionary attack:
sudo aircrack-ng -w /var/aircrack/fortinet-2021_passwords.txt wpa_capture-01.cap - Watch the keys-per-second counter and wait for the KEY FOUND result
In real life, you'd usehashcat on a GPU. It's hundreds of times faster than aircrack-ng's CPU-bound implementation.aircrack-ng is fine for teaching and tiny lists. For a real engagement: convert the handshake withhcxpcapngtool and let a GPU rig chew through it.