Skip to main content

EZMonitorModeButton

EZ Monitor Mode 3.0 GUI

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:

  1. sudo airmon-ng check kill (kills network managers, wpa_supplicant , dhcpcd , etc.)

  2. 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     │
                     └───────────┬────────────┘
                                 │
                ┌────────────────┴────────────────┐
                ▼                                 ▼
      [ Traditional CLI ]               [ EZMonitorMode ]
                │                                 │
     sudo airmon-ng check kill                    │
     sudo airmon-ng start wlan0                   ▼
                │                         ┌───────────────┐
                ▼                         │  Switch [ON]  │
      (Internet Killed)                   └───────┬───────┘
                │                                 │
                ├─────────────────────────────────┘
                ▼
        =================
        Wireless Auditing
        =================
                │
                ├─────────────────────────────────┐
                ▼                                 ▼
      [ Manual Restoration ]            [ EZMonitorMode ]
                │                                 │
     sudo airmon-ng stop ...                      ▼
     sudo ip link set up ...              ┌───────────────┐
     sudo systemctl restart NM...         │  Switch [OFF] │
                │                         └───────┬───────┘
                │ (Complex & slow)                │ (Instant & clean)
                ▼                                 ▼
        ┌─────────────────────────────────────────────────┐
        │         Internet Restored Automatically         │
        └─────────────────────────────────────────────────┘

Changelog

Version 3.1.1

  • Unobtrusive Update Notification: Asynchronous background check against GitHub Releases. Displays a subtle, non-intrusive ⚡ vX.Y.Z badge in the GUI that opens the release page when clicked. Cached locally for 24 hours to eliminate redundant network requests.
  • CLI Update Tip: Subtle notification tip displayed when running ezmonitormode --status if a new version is available.
  • Zero-Disruption Offline Mode: If offline or auditing, the update check fails completely silently with zero popups or console warnings.

Version 3.1.0

  • Enlarged Glowing Toggle Switch: Scaled the sliding switch to 130x54px with a 42px knob (occupying 64% of the container box) for clear visibility and effortless touch targeting on Raspberry Pi touchscreens.
  • Sub-Second Network Restoration: Optimized stop_monitor_mode.sh to check active systemd units, prioritizing NetworkManager and reducing exit latency from 10+ seconds to under 1 second.
  • Keyboard & Touch Accessibility: CanvasToggle switch now supports keyboard focus (Tab), key toggling (Space / Enter), and a focus highlight ring.
  • Dynamic Tool Rescan: Interface refresh (↻) dynamically scans for newly installed security utilities without restarting the app.
  • Idle Telemetry Sync: Background telemetry loop keeps the switch state accurate if monitor mode is modified externally.
  • Cleaned Up Architecture Flow: Restructured the workflow diagram into a clear, boxed ASCII format.

For the complete release history, visit the Wiki Changelog.

Option 1: Debian Package (Pi/Ubuntu/Debian)

Download the latest .deb file from the Releases page and install it using:

sudo apt update
sudo apt install ./ezmonitormode_3.1.1_all.deb

Once installed, you can launch it from your application menu or by running ezmonitormode in the terminal.

Option 2: Via PyPI

pip install ezmonitormode

Once installed, run with sudo -E ezmonitormode.

Option 3: Running from Source

  1. Clone this repository:
    git clone https://github.com/ldl805/EZMonitorModeButton.git
    cd EZMonitorModeButton
    
  2. Install dependencies:
    sudo apt update
    sudo apt install python3-tk aircrack-ng wireless-tools iw
    
  3. Run the application:
    sudo -E python3 src/ezmonitormode/monitor_gui.py
    

Troubleshooting

"no display name and no $DISPLAY environment variable"

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 ezmonitormode to preserve your display settings.
  • Running in Headless mode: This application requires a graphical desktop (Pi Desktop, VNC, etc.).

System Dependencies

Before running ezmonitormode, ensure you have the following system tools installed:

sudo apt update
sudo apt install python3-tk aircrack-ng wireless-tools

Optional tools for the shortcut buttons:

sudo apt install wifite wireshark kismet

License

MIT License

Metadata

Release files for ezmonitormode 3.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ezmonitormode 3.1.1
File Size Uploaded
ezmonitormode-3.1.1.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ezmonitormode 3.1.1
File Interpreter ABI Platform
ezmonitormode-3.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 39.3 kB

Release files / ezmonitormode-3.1.1.tar.gz

Download URL ezmonitormode-3.1.1.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2731249387a0803e421c6c6a3e60e26041f4b4a37b60641ef89a63e772be2551
BLAKE2b-256 checksum
How to use checksums
8ca343d215198555b1b5152ca4c84d3ad4d6e6289cc93e3a8671bd302b4b2f0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ezmonitormode-3.1.1-py3-none-any.whl

Download URL ezmonitormode-3.1.1-py3-none-any.whl
Size 20.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
819bb1420324c426f97e4e889bc7fb5f41280c5519c1a58ac51cdbc049a601ae
BLAKE2b-256 checksum
How to use checksums
06d5b997297ba3cb08ecea4255662d8eaab818b8800af00d3f94b5ac28054d0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

3.1.1 This release

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page