Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KWTool logo

KWTool

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


⚠️ Disclaimer

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.


📖 Overview

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.


✨ Features

Core (MVP)

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.

Enhancements (Phase 2)

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.

🖼️ Screenshots

KWTool ships with four built-in themes. Here is the same interface in each one:

KWTool Dark theme KWTool Light theme

KWTool Ocean Blue theme KWTool Forest theme


🧱 Built With

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.


📁 Project Structure

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)

📦 Requirements

System dependencies

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)

Python dependencies

See requirements.txt:

PyQt5>=5.15.0
psutil>=5.8.0

🚀 Installation

One-command install (recommended)

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.sh

install.sh does three things:

  1. Installs all system dependencies (aircrack-ng, arp-scan, iw, polkit agent, …).
  2. Creates a Python virtual environment and installs the Python dependencies.
  3. Installs a kwtool launcher, an application-menu entry, and the icon.

After installation, launch KWTool from your application menu or run:

kwtool

Manual installation

# 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.py

📚 Usage Tutorial

1. Starting the app

Run 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 run sudo python3 kwtool.py instead.

2. Scanning your network

  1. Click Scan (or press Ctrl+R).
  2. KWTool runs arp-scan --localnet --ignoredups.
  3. Every responding device appears in the table with its IP, MAC, and manufacturer.

3. Killing (disconnecting) a device

  1. Select a device in the table.
  2. 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.
  3. Click Kill (or press Ctrl+K).

4. Blocking / unblocking a device

  • Block (Ctrl+B) — continuously deauth the device until unblocked.
  • Unblock (Ctrl+U) — stop the deauth and let the device reconnect.

5. Enabling monitor mode

  1. Click Enable Monitor in the toolbar.
  2. KWTool runs airmon-ng check kill, then airmon-ng start <interface>.
  3. The interface switches from wlan0 to wlan0mon.
  4. Click Disable Monitor to return to normal mode.

6. Auto-refresh

Choose an interval in the Auto-refresh dropdown (Off, 5s, 10s, 30s, 1m, 5m). The scan re-runs automatically in the background.

7. Exporting data

  1. Click Export (or press Ctrl+E).
  2. Choose CSV, JSON, or HTML.
  3. Pick a save location.

8. Changing the theme

  • Click Theme in the toolbar and pick a theme, or
  • Open Settings → Theme for a dropdown with live preview.

9. Keyboard shortcuts

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

🎨 Customization

Icon

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

Themes are plain Qt Style Sheet (.qss) files in resources/themes/. To add a custom theme:

  1. Copy an existing theme file (e.g. dark.qss) to a new name such as mytheme.qss.
  2. Change the first line to set the display name: /* name: My Theme */.
  3. Adjust the colors to your liking.
  4. In KWTool, open Settings → Reload (or click Theme in the toolbar).

The Open folder button in Settings opens the theme folder directly.


🛠️ Troubleshooting

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 -20

🗺️ Roadmap

Planned 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

📄 License

KWTool is released under the GNU General Public License v3.0. See the LICENSE file for the full text.


🤝 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

About

KWTool is a modern, open-source graphical interface for managing devices on your WiFi network. Built with Python and PyQt5, it wraps command-line tools like arp-scan, aireplay-ng, and airmon-ng into an intuitive GUI — an educational alternative to Netcut.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages