A cross-platform Python CLI utility that tests credential resilience against Wi-Fi networks using native OS tools (
netsh/nmcli/airport) and optimized fast-polling loops.
- Quick Start
- Requirements
- Installation
- Preparing Your Wordlist
- Running Wittack
- Using the Tool — Step by Step
- Understanding the Output
- Troubleshooting
- How It Works Internally
- Legal & Ethical Policy
- Wittack Basic GUI(Tkinter)
# Windows — just double-click wittack.exe (run as Administrator)
# OR from command line:
wittack.exe
# macOS / Linux — run with sudo
sudo python3 main_script.py
| Requirement | Detail |
|---|---|
| Python | Version 3.6 or higher (not needed if using the .exe) |
| OS | Windows 10/11 · macOS 10.14+ · Ubuntu/Debian/Arch Linux |
| Privileges | Administrator (Windows) or root/sudo (macOS/Linux) |
| Wi-Fi | Machine must have a working Wi-Fi adapter |
| Python dependency | colorama — colored terminal output |
- Go to the Releases page
- Download
wittack.exefrom the latest release - Place it in a folder of your choice — no installation needed
- Right-click the
.exe→ Run as administrator
That is all. No Python, no pip, no setup.
Step 1 — Clone or download the repo
git clone https://github.com/abheetsharma09/wittack.git
cd wittackOr click Code → Download ZIP on GitHub, then extract it.
Step 2 — Install the one required dependency
pip install coloramaIf you are on Linux or macOS and pip points to Python 2:
pip3 install coloramaStep 3 — Verify Python version
python --version
# Must be 3.6 or higher
# On macOS/Linux use: python3 --versionWittack reads passwords from a plain text file — one password per line.
Example passwords.txt:
12345678
password123
mysecretnetwork
qwerty123
letmein99
hunter2wifi
Rules the script enforces automatically:
- Any password under 8 characters is silently skipped — this is the WPA2 minimum requirement. Including them wastes time.
- Blank lines are ignored.
- Malformed or non-UTF-8 characters in the file are ignored without crashing.
Where to get wordlists:
rockyou.txt— the most commonly used wordlist for Wi-Fi auditing. Available on GitHub and pre-installed on Kali Linux at/usr/share/wordlists/rockyou.txt- Build your own — if you are auditing your own network, include variations of your own password to verify it holds up
Pro tip: A smaller, targeted wordlist (100–1000 entries) is far more practical than a 10 million entry file. The speed of each attempt is governed by your hardware's Wi-Fi handshake time, not the script.
Step 1 — Open File Explorer and navigate to where you saved wittack.exe
Step 2 — Right-click wittack.exe → click "Run as administrator"
You must run as administrator. The script needs to create and modify Wi-Fi network profiles in the Windows network stack. Without admin rights it will fail immediately.
Step 3 — A UAC (User Account Control) prompt will appear. Click Yes.
The terminal window opens automatically and the tool starts scanning for nearby networks.
Step 1 — Open the Start Menu → search for Command Prompt → right-click it → Run as administrator
Step 2 — Navigate to the wittack folder:
cd C:\Users\YourName\Downloads\wittackStep 3 — Run the script:
python main_script.pyIf Windows asks for a UAC prompt, click Yes.
Step 1 — Open Terminal (Applications → Utilities → Terminal)
Step 2 — Navigate to the wittack folder:
cd ~/Downloads/wittackStep 3 — Run with sudo:
sudo python3 main_script.pyStep 4 — Enter your Mac login password when prompted. The script does not display characters as you type — this is normal.
Note for macOS 12+: Apple restricts use of the
airportutility on newer macOS versions. If network scanning returns no results, see the Troubleshooting section.
Step 1 — Open a terminal
Step 2 — Make sure NetworkManager is installed:
# Debian / Ubuntu
sudo apt install network-manager
# Arch
sudo pacman -S networkmanager
# Fedora
sudo dnf install NetworkManagerStep 3 — Navigate to the wittack folder:
cd ~/Downloads/wittackStep 4 — Run with sudo:
sudo python3 main_script.pyOnce the script is running, here is exactly what happens and what you need to type at each prompt.
Step 1 — The banner prints
.__ __ __ __
__ _ _|__|/ |__/ |______ ____ | | __
\ \/ \/ / \ __\ __\__ \ _/ ___\| |/ /
\ /| || | | | / __ \\ \___| <
\/\_/ |__||__| |__| /____ /\___ >__|_ \
\/ \/ \/
This confirms the script launched successfully with proper permissions.
Step 2 — Network scan runs automatically
Scanning for nearby Wi-Fi networks...
------------------------------
Found 4 network(s):
[0] HomeWiFi_5G
[1] NeighbourBT
[2] OfficeGuest
[3] AndroidHotspot
------------------------------
The tool calls netsh / nmcli / airport automatically depending on your OS and lists every visible SSID with an index number.
Step 3 — Choose your target network
Choose SSID to Launch Attack :
Type the number in the square brackets next to the network you want to test. For example, to test HomeWiFi_5G you would type:
0
Then press Enter.
Only type the number. Do not type the SSID name. If you enter a number outside the range shown, the tool will print an error and exit — just run it again.
Step 4 — Provide the wordlist path
Enter the Password File Path (.txt) :
Type the full path to your password file. Examples:
Windows:
C:\Users\YourName\Desktop\passwords.txt
macOS / Linux:
/home/yourname/passwords.txt
Or if the file is in the same folder as the script, just type the filename:
passwords.txt
Then press Enter.
If the file path is wrong or the file does not exist, the tool prints
File does not exist.and exits. Check the path and run again.
Step 5 — The attack loop starts
Started attacking on HomeWiFi_5G...
Combinations Attempted: 1,000
The counter updates every 1,000 attempts. This is intentional — printing every single attempt would slow the loop significantly. Let it run. Speed depends entirely on your Wi-Fi hardware's connection handshake time, not the script.
Do not close the terminal. Do not put the machine to sleep.
Step 6A — Password found
If a password in your wordlist matches:
--------------------
PASSWORD FOUND : correctpassword123
--------------------
Saved the Details in 'output.txt'
PRESS ENTER TO EXIT
The matched credential is saved to output.txt in the same folder as the script, formatted as:
HomeWiFi_5G : correctpassword123
Press Enter to exit cleanly.
Step 6B — Wordlist exhausted
If the entire wordlist is tried without a match, the script finishes silently and exits. No match means the password was not in your list — not that the tool failed. Try a different or larger wordlist.
| What you see | What it means |
|---|---|
Scanning for nearby Wi-Fi networks... |
OS network scan is running |
Found N network(s) |
Scan completed, N SSIDs discovered |
Started attacking on [SSID]... |
Loop has begun, reading your wordlist |
Combinations Attempted: X,000 |
Counter — updates every 1,000 attempts |
PASSWORD FOUND : xxxx |
Match confirmed — credential written to output.txt |
File does not exist. |
The wordlist path you typed is wrong |
ERROR!!...Please choose from the given input!! |
You entered a number outside the network list range |
| No output after a long time | The script is working — large wordlists take time |
"Failed to add profile" on Windows
You are not running as Administrator. Close the terminal, right-click Command Prompt or the .exe, and select Run as administrator.
"No networks found" on any platform
- Make sure your Wi-Fi adapter is turned on (not in Airplane mode)
- On Linux, confirm NetworkManager is running:
sudo systemctl start NetworkManager - On macOS 12+, the
airportutility may be deprecated — runsudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -smanually to test if it works on your machine
"nmcli not found" on Linux
sudo apt install network-manager # Ubuntu/Debian
sudo pacman -S networkmanager # ArchThe counter is moving very slowly
This is normal. Each attempt requires a full OS-level WPA2 handshake cycle — typically 0.2–1.5 seconds per attempt depending on your hardware. A 1,000-entry wordlist can take anywhere from 3 minutes to 25 minutes. This is a hardware limitation, not a bug.
To speed things up: use a smaller, more targeted wordlist.
Known valid password doesn't register as correct
The connection polling window may be too short for your hardware. Open main_script.py and find the line:
for _ in range(6):Change 6 to 10 or 12 to give the connection more time to confirm:
for _ in range(10):ANSI colour codes showing as garbled characters on Windows
Run the script in Windows Terminal (not the legacy CMD window). Or confirm colorama.init() is being called — it is in the script by default.
"Permission denied" on macOS or Linux
You forgot sudo. The script must be run as root on POSIX systems:
sudo python3 main_script.pyScript exits immediately after the UAC prompt on Windows
This is expected behaviour. When the script detects it is not running as admin, it relaunches itself with elevated permissions via ShellExecuteW runas and exits the original process. The new elevated window is the one to use.
The script follows this execution order every time:
Launch
│
▼
Enforce admin/root privileges
│ Windows: ctypes.windll.shell32.IsUserAnAdmin()
│ POSIX: os.geteuid() → re-exec with os.execvp sudo
▼
Scan nearby Wi-Fi networks
│ Windows: netsh wlan show networks
│ Linux: nmcli -t -f SSID dev wifi list
│ macOS: airport -s
▼
User selects target SSID and provides wordlist path
▼
Password iteration loop
│ Skip any password under 8 characters (WPA2 minimum)
│ Counter printed every 1,000 attempts
▼
For each password — attempt connection
│ Windows: Build WLANProfile XML → netsh wlan add profile
│ → netsh wlan connect → poll 0.2s × 6 = 1.2s max
│ → delete profile on failure
│ macOS: networksetup -setairportnetwork → poll → cleanup
│ Linux: nmcli dev wifi connect → verify with nmcli con show
▼
On success → write SSID:password to output.txt → exit
On failure → continue to next password in wordlist
This utility is built exclusively for:
- Auditing Wi-Fi networks you own
- Recovering credentials for your own access points
- Authorized penetration testing engagements with written permission
- Educational research in controlled environments
Unauthorized use against networks you do not own or do not have explicit written permission to test is illegal under computer fraud and telecommunications laws in virtually every jurisdiction — including India's IT Act 2000, the US Computer Fraud and Abuse Act, and the UK Computer Misuse Act.
The maintainers accept no liability for misuse.
MIT License — free to use, fork, and modify for all legitimate security auditing workflows. See LICENSE for the full text.
Built by abheetsharma09

