A modern WiFi device management GUI for Linux, built with Python and PyQt5.
An open-source, educational alternative to tools like Netcut — designed for learning networking & wireless security on networks you own.
License: GPL-3.0 · Platform: Linux · Language: Python 3
KWTool is intended only for educational purposes and authorized testing on networks you own or have explicit written permission to test.
Using deauthentication attacks, monitoring, or any of its features against networks you do not own is illegal and can harm others. By using this tool, you agree to use it responsibly and ethically.
KWTool is a graphical front-end that wraps well-known command-line wireless utilities into a single, easy-to-use interface. Instead of typing arp-scan, aireplay-ng, and airmon-ng commands by hand, you can:
- Discover every device connected to your network (IP, MAC, and manufacturer).
- Disconnect (deauth) a specific device for a chosen duration, or block it continuously.
- Toggle monitor mode on your wireless adapter.
- Watch device activity in real time with auto-refresh and a live log panel.
- Export device lists to CSV / JSON / HTML.
- Switch between multiple color themes (and add your own).
- Get a graphical password prompt automatically — no terminal needed.
The application elevates itself to root via pkexec, so it behaves like a normal desktop app: just click the icon and enter your password.
| Feature | Description |
|---|---|
| Network scan | Discover devices via arp-scan and show IP, MAC, and vendor. |
| Device table | Sortable list of every device with online/blocked status. |
| Kill (deauth) | Send deauthentication packets to a device with a timer. |
| Block / Unblock | Continuously deauth a device until you unblock it. |
| Monitor mode | Toggle wlan0 ↔ wlan0mon via airmon-ng. |
| Timer presets | Once, 10 sec, 30 sec, 1 min, 5 min, Continuous. |
| Status bar | Real-time interface, device count, and blocked count. |
| Feature | Description |
|---|---|
| Auto-refresh | Periodic re-scan (Off, 5s, 10s, 30s, 1m, 5m). |
| Logging | Rotating log file (logs/kwtool.log, max 10 MB) + live view. |
| Export | Export the device list to CSV, JSON, or HTML. |
| Themes | Dark, Light, Ocean Blue, Forest — plus custom .qss themes. |
| Device discovery notification | System-tray popup when a new device appears. |
| Self-elevation | Automatic graphical password prompt via pkexec. |
KWTool ships with four built-in themes. Here is the same interface in each one:
KWTool is a thin, modular GUI around battle-tested command-line tools. Nothing here is re-implemented — it orchestrates these projects:
| Tool | What it does in KWTool | Project / Repository |
|---|---|---|
| aircrack-ng | airmon-ng (monitor mode) and aireplay-ng (deauth injection) |
https://www.aircrack-ng.org |
| arp-scan | Fast ARP-based device discovery | https://github.com/royhills/arp-scan |
| iw | Wireless interface info & BSSID (access-point MAC) | https://wireless.wiki.kernel.org/en/users/documentation/iw |
| NetworkManager | nmcli to restore networking after monitor mode |
https://networkmanager.dev |
| tcpdump | Optional packet capture | https://www.tcpdump.org |
| xterm | Terminal for background processes | https://invisible-island.net/xterm/ |
| polkit | pkexec graphical privilege elevation |
https://www.freedesktop.org/wiki/Software/polkit/ |
| Python | Core language | https://www.python.org |
| PyQt5 | GUI framework | https://www.riverbankcomputing.com/software/pyqt/ |
| psutil | Process management | https://github.com/giampaolo/psutil |
Planned (Phase 3): macchanger for MAC address spoofing.
kwtool/
├── kwtool.py # Entry point (GUI + self-elevation via pkexec)
├── install.sh # Cross-distro installer
├── requirements.txt # Python dependencies
├── modules/
│ ├── scanner.py # Device scanning (arp-scan)
│ ├── killer.py # Deauth handler (aireplay-ng)
│ ├── monitor.py # Monitor mode (airmon-ng)
│ ├── network.py # Network info + command runner
│ ├── logger.py # Logging system (rotating file)
│ ├── themes.py # Theme discovery & loading
│ └── exporter.py # CSV / JSON / HTML export
├── resources/
│ ├── icon.svg # Default application icon (vector)
│ ├── icon.png # Optional custom icon (raster)
│ └── themes/ # dark.qss, light.qss, ocean.qss, forest.qss
├── config/
│ ├── settings.ini # User configuration
│ ├── whitelist.json # Trusted devices (Phase 3)
│ └── schedule.json # Kill schedules (Phase 3)
├── data/
│ └── oui.txt # OUI database for vendor lookup (optional)
├── docs/
│ ├── logo.png # Logo used in this README
│ ├── screenshots/ # Theme screenshots
│ └── user_manual.md # Full user manual
└── logs/
└── kwtool.log # Application log (created at runtime)
| Package | Needed for |
|---|---|
aircrack-ng |
Monitor mode + deauthentication |
arp-scan |
Device discovery |
iw |
Wireless interface / BSSID info |
network-manager |
nmcli (network restore) |
tcpdump |
Packet capture (optional) |
xterm |
Background terminal (optional) |
policykit-1 + policykit-1-gnome |
Graphical password prompt (pkexec) |
See requirements.txt:
PyQt5>=5.15.0
psutil>=5.8.0
The installer auto-detects your distribution (Debian/Ubuntu, Fedora, Arch, openSUSE) and installs everything:
git clone https://github.com/ZeroHitman/kwtool.git
cd kwtool
./install.shinstall.sh does three things:
- Installs all system dependencies (aircrack-ng, arp-scan, iw, polkit agent, …).
- Creates a Python virtual environment and installs the Python dependencies.
- Installs a
kwtoollauncher, an application-menu entry, and the icon.
After installation, launch KWTool from your application menu or run:
kwtool# 1. System dependencies (Debian/Ubuntu example)
sudo apt install aircrack-ng arp-scan iw network-manager tcpdump xterm \
policykit-1 policykit-1-gnome python3-venv python3-pip
# 2. Python environment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# 3. Run
python3 kwtool.pyRun kwtool (or python3 kwtool.py). A graphical password prompt appears — enter your password to grant root privileges. No terminal is required.
If the password prompt does not appear (e.g. a minimal window manager), install a polkit authentication agent (
policykit-1-gnome) or runsudo python3 kwtool.pyinstead.
- Click Scan (or press
Ctrl+R). - KWTool runs
arp-scan --localnet --ignoredups. - Every responding device appears in the table with its IP, MAC, and manufacturer.
- Select a device in the table.
- Choose a timer from the Timer dropdown:
- Once — send a single deauth burst.
- 10 sec / 30 sec / 1 min / 5 min — deauth continuously for that duration.
- Continuous — deauth until you stop it manually.
- Click Kill (or press
Ctrl+K).
- Block (
Ctrl+B) — continuously deauth the device until unblocked. - Unblock (
Ctrl+U) — stop the deauth and let the device reconnect.
- Click Enable Monitor in the toolbar.
- KWTool runs
airmon-ng check kill, thenairmon-ng start <interface>. - The interface switches from
wlan0towlan0mon. - Click Disable Monitor to return to normal mode.
Choose an interval in the Auto-refresh dropdown (Off, 5s, 10s, 30s, 1m, 5m). The scan re-runs automatically in the background.
- Click Export (or press
Ctrl+E). - Choose CSV, JSON, or HTML.
- Pick a save location.
- Click Theme in the toolbar and pick a theme, or
- Open Settings → Theme for a dropdown with live preview.
| Shortcut | Action |
|---|---|
Ctrl+R |
Scan / Refresh |
Ctrl+K |
Kill selected device |
Ctrl+B |
Block selected device |
Ctrl+U |
Unblock selected device |
Ctrl+E |
Export |
Ctrl+Q |
Quit |
Drop your own icon at resources/icon.png (256×256 px recommended). The app loads icon.png first, then falls back to icon.svg, then to a built-in icon.
Themes are plain Qt Style Sheet (.qss) files in resources/themes/. To add a custom theme:
- Copy an existing theme file (e.g.
dark.qss) to a new name such asmytheme.qss. - Change the first line to set the display name:
/* name: My Theme */. - Adjust the colors to your liking.
- In KWTool, open Settings → Reload (or click Theme in the toolbar).
The Open folder button in Settings opens the theme folder directly.
| Error | Solution |
|---|---|
arp-scan: command not found |
sudo apt install arp-scan |
aireplay-ng: command not found |
sudo apt install aircrack-ng |
No wireless interface found |
Check your adapter with iwconfig |
Monitor mode not supported |
Use an external adapter (Alfa, TP-Link, …) |
Permission denied |
Run with sudo, or ensure pkexec/polkit is installed |
| Password prompt does not appear | Install a polkit agent (policykit-1-gnome) |
Operation not permitted |
Run sudo airmon-ng check kill |
Debugging:
tail -f logs/kwtool.log
ps aux | grep -E "airmon|aireplay|arp-scan"
iwconfig
dmesg | tail -20Planned for Phase 3:
- Schedule kill (run deauth at a specific time/day)
- Auto-block unknown devices (whitelist management)
- Signal strength analyzer
- Network statistics dashboard (SQLite)
- Multi-interface support
- MAC address changer
KWTool is released under the GNU General Public License v3.0. See the LICENSE file for the full text.
Contributions are welcome! Feel free to open an issue or submit a pull request.




