WiFi Jammer is an educational Python tool for WiFi security testing and penetration testing. It supports multiple 802.11 frame injection attack types including deauthentication, disassociation, beacon flooding, authentication flooding, association flooding, and probe response flooding. Cross-platform CLI, TUI, and GUI interfaces with SOLID architecture.
Attack Types
- Deauthentication attack (targeted and broadcast)
- Disassociation attack
- Beacon flood attack
- Authentication flood attack
- Association flood attack
- Probe response flood attack
- Channel hopping automation (auto-cycles channels during deauth)
- PMKID and WPA handshake capture
- Evil twin attack (AP spoofing + deauth)
- Client discovery with selective device kicking (NetCut-style)
User Interfaces
- Rich CLI with progress bars, tables, and interactive prompts
- Modern TUI built with Textual
- Cross-platform Qt GUI built with PyQt6 (Linux, macOS, Windows)
Platform Support
- Linux: Full support with monitor mode via iwconfig
- macOS: CoreWLAN scanning with Location Services integration (Intel and Apple Silicon)
- Windows: Basic network scanning (no packet injection)
curl -sSL https://raw.githubusercontent.com/oyi77/wifi-jammer/main/quick_install.sh | bashgit clone https://github.com/oyi77/wifi-jammer.git
cd wifi-jammer
bash install.shgit clone https://github.com/oyi77/wifi-jammer.git
cd wifi-jammer
pip install -r requirements.txt
# macOS only — optional CoreWLAN support
pip install -r requirements-optional.txtScan for available WiFi networks:
sudo wifi-jammer scan -i wlan0Launch a targeted deauthentication attack:
sudo wifi-jammer attack -i wlan0 -t AA:BB:CC:DD:EE:FF -a deauthFull attack command with options:
sudo wifi-jammer attack \
--interface wlan0 \
--target AA:BB:CC:DD:EE:FF \
--attack deauth \
--channel 6 \
--count 1000 \
--delay 0.1 \
--verbosesudo wifi-jammer --tuiThe Textual-based terminal UI provides an interactive interface for scanning networks, selecting targets, configuring attacks, and monitoring progress in real time.
sudo wifi-jammer --gui
# or
sudo wifi-jammer-guiThe PyQt6 GUI provides point-and-click network scanning, attack configuration, and live progress monitoring. Works on Linux, macOS, and Windows.
The included wrapper script auto-detects the best Python interpreter on your system:
sudo ./wifi-jammer.sh scan
sudo ./wifi-jammer.sh attack --tui
sudo ./wifi-jammer.sh attack --interface en0 --target AA:BB:CC:DD:EE:FF --attack deauthWiFi Jammer follows SOLID principles with clear separation of concerns:
wifi_jammer/
├── core/ # Interfaces and data structures
│ ├── interfaces.py # AttackType, AttackConfig, INetworkScanner, IAttackStrategy
│ └── platform_interface.py # Platform abstraction (Linux/macOS/Windows)
├── scanner/
│ └── network_scanner.py # ScapyNetworkScanner — network and client discovery
├── attacks/
│ ├── base_attack.py # BaseAttack — shared attack logic, stats tracking
│ ├── deauth_attack.py # DeauthAttack, DisassocAttack
│ ├── flood_attacks.py # BeaconFlood, AuthFlood, AssocFlood, ProbeResponse
│ ├── channel_hop_attack.py # ChannelHopAttack — multi-channel deauth
│ ├── pmkid_capture_attack.py # PmkidCaptureAttack — WPA handshake capture
│ ├── evil_twin_attack.py # EvilTwinAttack — AP spoofing + deauth
│ └── netcut_attack.py # NetcutAttack — selective client kicking
├── factory/
│ └── attack_factory.py # AttackFactory — strategy pattern for attack creation
├── gui/ # PyQt6 GUI components
│ ├── main_window.py # Main application window
│ ├── network_scanner_widget.py # Network discovery widget
│ ├── attack_config_widget.py # Attack configuration panel
│ └── progress_monitor_widget.py # Live attack progress display
├── utils/ # Logger, validators, platform utilities
├── config.py # ConfigManager with YAML persistence
├── cli.py # Click-based CLI entry point
└── tui.py # Textual TUI application
Key design patterns:
- Strategy pattern: Each attack type implements
IAttackStrategy, making them interchangeable - Factory pattern:
AttackFactorycreates attack instances by type, supports runtime registration - Interface segregation: Separate interfaces for scanning (
INetworkScanner), attacks (IAttackStrategy), monitoring (IMonitor), logging (ILogger), and configuration (IConfigManager) - Platform abstraction:
PlatformInterfaceFactoryreturns the correct platform implementation (Linux/macOS/Windows) at runtime
| Platform | Scanning | Packet Injection | Monitor Mode | GUI | TUI |
|---|---|---|---|---|---|
| Linux | Full | Full | iwconfig | Yes | Yes |
| macOS | CoreWLAN | Limited | Limited | Yes | Yes |
| Windows | Basic | No | No | Yes | Yes |
macOS note: Location Services permission is required for SSID/BSSID visibility. Run bash install.sh to configure this automatically, or enable Python in System Settings > Privacy & Security > Location Services.
| Attack | Description | Use Case |
|---|---|---|
deauth |
Sends 802.11 deauthentication frames to disconnect clients from an AP | Testing client disconnection resilience |
disassoc |
Sends 802.11 disassociation frames to remove client associations | Testing reassociation handling |
beacon_flood |
Broadcasts fake beacon frames with randomized SSIDs | Testing AP discovery and rogue AP detection |
auth_flood |
Floods an AP with authentication requests | Testing authentication rate limiting |
assoc_flood |
Floods an AP with association requests | Testing association capacity limits |
probe_response |
Responds to probe requests with fake network information | Testing probe response validation |
channel_hop |
Auto-cycles channels during deauth to maximize coverage | Testing multi-channel resilience |
pmkid_capture |
Captures WPA PMKID and handshake for offline analysis | Testing WPA key exchange security |
evil_twin |
Spoofs AP beacon and deauths real AP to capture clients | Testing rogue AP detection |
netcut |
Selectively kicks specific clients from a WiFi network | Testing per-device access control |
All attacks support configurable packet count, delay, source MAC spoofing, and channel selection.
Run the full test suite:
python run_tests.pyOr use pytest directly:
pytest tests/ -vTests cover the scanner, attack strategies, factory pattern, CLI, configuration management, validators, platform utilities, and crypto modules.
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-attack-type) - Add your attack class in
wifi_jammer/attacks/extendingBaseAttack - Register it in
wifi_jammer/factory/attack_factory.py - Add corresponding
AttackTypeenum value inwifi_jammer/core/interfaces.py - Write tests in
tests/ - Submit a pull request
Adding a new attack type:
from wifi_jammer.attacks.base_attack import BaseAttack
class MyCustomAttack(BaseAttack):
def _create_packet(self):
# Construct and return your 802.11 packet
return packetMIT License. See LICENSE for details.
This tool is provided for educational and authorized security testing purposes only. Use it exclusively on networks you own or have explicit written permission to test. Unauthorized use of this tool against networks you do not own is illegal and unethical. The authors and contributors assume no liability for misuse. Always comply with local, state, and federal laws regarding network security testing.