A simple yet robust Python GUI for the Raspberry Pi to easily enable and disable monitor mode on a wireless interface.
In wireless security auditing, the standard way to enable monitor mode is using the aircrack-ng suite:
-
sudo airmon-ng check kill (kills network managers, wpa_supplicant , dhcpcd , etc.)
-
sudo airmon-ng start wlan0
While entering monitor mode is easy, exiting it can be tedious and frustrating:
The Annoyance:
When airmon-ng check kill runs, it completely destroys the system's normal internet connectivity. To get back online, a user has to stop monitor mode and manually restart all networking services in the correct sequence.
How EZMonitorModeButton solves this:
This program automatically stops the monitor interface and sequentially restarts NetworkManager, wpa_supplicant, avahi-daemon,and dhcpcd .
The Value:
It acts as a safety net. Instead of leaving the user with broken internet, a single click restores normal network state cleanly.
⋮ ┌────────────────┐
⋮ │ Start Auditing │
⋮ └────────────────┘
⋮ │
⋮ ▼
⋮ ◇───────────────◇
⋮ │ Choose Method │
⋮ ◇───────────────◇
⋮ │ Command Line EZMONITORMODEBUTTON
⋮ ▼
⋮ ┌────────────────────────────────┐ ┌──────────────────────┐
⋮ │ Type sudo airmon-ng check kill │ │ Click Glow Switch ON │
⋮ └────────────────────────────────┘ └──────────────────────┘
⋮ │
⋮ ▼
⋮ ┌─────────────────────────────────┐
⋮ │ Type sudo airmon-ng start wlan0 │
⋮ └─────────────────────────────────┘
⋮ │
⋮ ▼
⋮ ┌────────────────────┐
⋮ │ Auditing Completed │
⋮ └────────────────────┘
⋮ │ Manual Cleanup
⋮ ▼
⋮ ┌────────────────────────────────────────────────────────────┐ ┌───────────────────────┐
⋮ │ Type stop commands + restart NetworkManager/wpa_supplicant │ │ Click Glow Switch OFF │
⋮ └────────────────────────────────────────────────────────────┘ └───────────────────────┘
⋮ │
⋮ ▼
⋮ ┌─────────────────────────────────┐
⋮ │ Internet Restored Automatically │
⋮ └─────────────────────────────────┘
⋮
⋮
- Packet Injection Testing: Integrated one-click frame injection test via
aireplay-ng --test <interface>with live terminal output. - Airodump-ng Quick Launcher: Direct launcher for live network scanning and BSSID discovery.
- Multi-Band Channel Hopping Engine: Selectable auto-hopping presets including
1, 6, 11 (2.4GHz),All 2.4GHz (1-14),5GHz UNII-1/3 (36-165), andAll Channels. - RFKill Driver Safeguards: Automatically unblocks wireless interfaces (
rfkill unblock wifi) during network restoration to prevent hardware soft-blocks on USB dongles. - Broad Terminal Compatibility: Auto-detects and supports
lxterminal,xfce4-terminal,mate-terminal,konsole,terminator,tilix,alacritty,kitty,foot,xterm, andgnome-terminal. - Hardened Device Parsing: Unicode-safe decoding and robust
iwconfigfiltering to ignore non-wireless interfaces.
Download the latest .deb file from the Releases page and install it using:
sudo apt update
sudo apt install ./ezmonitormode_2.0.0_all.debOnce installed, you can launch it from your application menu or by running ezmonitormode in the terminal.
pip install ezmonitormodeOnce installed, run with sudo -E ezmonitormode.
- Clone this repository:
git clone https://github.com/ldl805/EZMonitorModeButton.git cd EZMonitorModeButton - Install dependencies:
sudo apt update sudo apt install python3-tk aircrack-ng wireless-tools iw
- Run the application:
sudo -E python3 src/ezmonitormode/monitor_gui.py
This occurs if the GUI cannot find your screen.
- Running via SSH: Ensure you connected with X11 forwarding:
ssh -X user@pi. - Running via sudo: Use
sudo -E ezmonitormodeto preserve your display settings. - Running in Headless mode: This application requires a graphical desktop (Pi Desktop, VNC, etc.).
Before running ezmonitormode, ensure you have the following system tools installed:
sudo apt update
sudo apt install python3-tk aircrack-ng wireless-toolsOptional tools for the shortcut buttons:
sudo apt install wifite wireshark kismetMIT License