My First Wi-Fi Security Lab: What I Learned Testing WPA2 on My Own Network
Date: July 27, 2026
Category: Cybersecurity / Ethical Hacking
Introduction
One of the reasons I got interested in cybersecurity was that I wanted to understand how attacks actually work instead of only reading about them. Wi-Fi security seemed like a good place to start because it's something almost everyone uses, yet many people don't realize how much password strength matters.
For this lab, I set up a controlled environment using my own router and hardware to see how WPA2 authentication works and how offline password recovery is performed after capturing a valid handshake.
Everything in this post was done against my own network for educational purposes.
Hardware
I kept the setup simple:
- Wi-Fi adapter: A generic USB adapter using the Atheros AR9271 chipset. It works well with Kali Linux thanks to the
ath9k_htcdriver, so there was no need to compile drivers or troubleshoot compatibility. - Laptop: My daily laptop with an NVIDIA GeForce RTX 3050 6GB Laptop GPU.
- Operating systems: Kali Linux (running in a virtual machine) for the capture phase, and Windows on the host machine for GPU-accelerated password recovery with Hashcat.
Enabling Monitor Mode
The first step was putting the Wi-Fi adapter into monitor mode so it could capture raw 802.11 traffic instead of behaving like a normal client.
sudo airmon-ng start wlan0
One thing I learned fairly quickly is that many guides still reference iwconfig, but on newer systems it's largely deprecated. I used iw dev instead to verify that the interface had successfully switched to monitor mode.
Finding My Access Point
Next, I scanned nearby wireless networks.
sudo airodump-ng wlan0mon
I located my own access point and noted its BSSID and operating channel before stopping the scan.
Capturing the WPA2 Handshake
Instead of scanning every network, I started a capture focused only on my router.
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
Since my devices were already connected, there wasn't an active authentication exchange to capture. To generate a new handshake, I disconnected one of my own devices so it would reconnect automatically.
Once the client reauthenticated, Airodump-ng displayed the message indicating that a WPA handshake had been captured, and the capture was saved as capture-01.cap.
Seeing that message was satisfying because it confirmed the capture had worked exactly as expected.
Preparing the Capture
Modern versions of Hashcat use the 22000 hash format, so the capture first needed to be converted.
hcxpcapngtool -o handshake.22000 capture-01.cap
The conversion completed successfully and detected a valid EAPOL handshake, which meant the capture was ready for offline password recovery.
How the Handshake Works
One thing I initially misunderstood was what the WPA2 handshake actually contains. The handshake does not include the Wi-Fi password, even in encrypted form. Instead, it contains cryptographic information that proves both the client and the router know the same password without ever transmitting it.
When Hashcat loads the captured handshake, it doesn't decrypt anything. Instead, it takes a password guess, derives the same cryptographic keys that the router and client would generate, and checks whether the result matches the captured handshake. If it doesn't match, the guess is discarded. If it does, the correct password has been found.
This is why WPA2 attacks are considered offline attacks: once a valid handshake has been captured, password guesses can be tested locally without interacting with the router again. As a result, the strength of the Wi-Fi password becomes the most important factor in resisting this type of attack.
Running Hashcat
For this lab, I intentionally configured my test network with an 8-digit numeric password so I could measure how quickly a relatively weak password could be recovered.
I launched Hashcat with a simple numeric mask attack.
.\hashcat.exe -m 22000 -a 3 handshake.22000 ?d?d?d?d?d?d?d?d
Hashcat detected my RTX 3050 without any issues and averaged roughly 342,000 guesses per second.
The complete keyspace for an 8-digit numeric password contains 100 million possible combinations, so the estimated runtime was only a few minutes. Because the password happened to be relatively early in that range, it was recovered in under a minute.
During the attack, GPU utilization stayed close to 98%, while temperatures remained around 75°C.
What I Learned
The biggest takeaway wasn't how to crack a password, it was understanding why password strength matters so much.
An 8-digit numeric password feels reasonably secure from a human perspective, but it only represents 100 million possibilities. Modern GPUs can work through that search space surprisingly quickly.
A few other things stood out:
- The AR9271 adapter made getting started much easier than I expected.
- Capturing a handshake was straightforward once I understood the process.
- Offline password recovery depends almost entirely on password complexity, not on the wireless protocol itself.
- A long, randomly generated passphrase increases the search space dramatically, making brute-force attacks impractical.
Final Thoughts
This was my first hands-on wireless security lab, and it helped connect a lot of concepts that had previously only made sense in theory.
Reading about WPA2 attacks is useful, but capturing a handshake yourself and seeing an offline attack succeed against a deliberately weak password gives you a much better understanding of why strong passwords are so important.
As soon as I finished the experiment, I replaced the test password on my own network with a long, randomly generated passphrase.
I'm looking forward to exploring more areas of wireless security as I continue learning.
Tools
- Kali Linux
- Aircrack-ng Suite
- hcxpcapngtool
- Hashcat
Hardware Used
- AR9271 USB Wi-Fi Adapter
- NVIDIA GeForce RTX 3050 6GB Laptop GPU