A powerful WiFi deauthentication tool running on BW16 and ESP32 platforms, featuring:
- ⚡ Dual-band 2.4GHz/5GHz support
- 🌐 Web-based control interface
- 🔧 Real-time UART communication
- 💡 UART Bridge bridge functionality
- 💾 SD card file management
- 🔗 WebSocket-based communication
- 📁 JSON configuration handling
- 🕵️ Integrated Sniffer for beacon/probe/deauth frames
- Features
- Hardware Requirements
- Installation
- Web Interface Usage
- Advanced Configuration
- File Structure
- Troubleshooting
- Development
- Legal Disclaimer
- License
- Acknowledgments
- Credits
- Dual-Band Support: Target both 2.4GHz and 5GHz networks.
- Web Interface: Control the device through a modern web interface.
- Real-Time Monitoring: View network activity and attack status in real-time.
- Customizable Attacks: Configure attack parameters and targets.
- SD Card Storage: Save logs and configurations to SD card.
- UART Bridge: Read UART from UART or Serial USB.
- Advanced Packet Injection: Precise control over frame timing and content.
- Channel Hopping: Automatic channel switching for comprehensive coverage.
- MAC Address Filtering: Target specific devices or networks.
- Power Management: Optimized power consumption for extended operation.
- Enhanced Sniffer: Capture and analyze beacon, probe, deauth, and EAPOL frames.
- Ai-Thinker BW16 development board
- Power supply (5V/3.3V, 2A minimum)
- Optional: External battery pack (18650 Li-ion recommended)
- ESP32 development board (ESP32-S3 recommended)
- MicroSD card module (SPI interface)
- Power supply (5V/3.3V, 2A minimum)
- Optional: External battery pack (18650 Li-ion recommended)
-
Install Arduino IDE (1.8.19 or later).
- If using Arduino IDE 2.0 or newer, ensure that the Board Manager and Library Manager references match your environment.
-
Add board support:
- BW16: In the Arduino IDE preferences, add:
https://raw.githubusercontent.com/Ai-Thinker-Open/Ai-Thinker-Open.github.io/master/package_ai-thinker_index.json - ESP32: In the Arduino IDE preferences, add:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- BW16: In the Arduino IDE preferences, add:
-
Install required libraries:
- ESPAsyncWebServer (version 3.4.0 or later)
- AsyncTCP (version 3.2.15 or later)
- ArduinoJson (version 7.2.1 or later)
- WiFi (built-in for ESP32; for BW16, ensure the WiFi library is included in the board support package)
- SD (built-in for ESP32)
Note: Make sure to select the correct libraries in the Arduino Library Manager and match the required versions if possible.
- Connect the BW16 board via the USB-to-Serial adapter (TX → RX, RX → TX, GND → GND).
- Open the sketch:
Evil-BW16/Evil-BW16.inoin the Arduino IDE. - Select board:
Tools > Board > Ai-Thinker BW16. - Configure settings:
- Upload Speed:
921600 - CPU Frequency:
160MHz - Flash Size:
4MB (32Mb)
- Upload Speed:
- Upload the sketch to the BW16 board.
-
Connect the ESP32 board via USB.
-
Open the sketch:
ESP32/ESP32.inoin the Arduino IDE. -
Select board:
Tools > Board > ESP32 Dev Module. -
Configure settings:
- Upload Speed:
921600 - CPU Frequency:
240MHz - Flash Size:
4MB (32Mb)
- Upload Speed:
-
Upload the sketch to the ESP32.
- Power on the device (BW16 + ESP32).
- Connect to the WiFi access point:
- SSID:
Evil-BW16 - Password:
password1234
- SSID:
- Open a web browser and navigate to:
http://192.168.4.1 - Access and control the interface to:
- Scan for networks
- Select AP/clients as targets
- Configure deauth parameters
- Start/Stop attacks
- Monitor attack logs and network status
- Adjust advanced settings (sniffer, beacon capture, channel hopping, etc.)
Configuration is primarily handled in ESP32.ino through hardcoded constants.
// Access Point Credentials
const char* ap_ssid = "Evil-BW16";
const char* ap_password = "password1234";
// UART Configuration
const size_t UART_BUFFER_SIZE = 512;
const size_t UART_CHUNK_SIZE = 256;
const int UART_BAUD_RATE = 115200;To modify these settings:
- Open
ESP32/ESP32.inoin the Arduino IDE. - Update the relevant constants near the top of the file.
- Recompile and upload.
Note: Commands can be sent via the web UI console or UART terminal.
scan
Perform a WiFi scan.results
Show the last scan results.start
Start deauthentication attack.stop
Stop all attacks.disassoc
Start continuous disassociation.random
Attack a random AP.help
Show command reference.
set cycle_delay <ms>
Set delay between cycles (in milliseconds).set scan_time <ms>
Set WiFi scan duration.set num_frames <n>
Set number of frames per AP.set start_channel <n>
Set start channel (1 for 2.4GHz, 36 for 5GHz).set scan_cycles <on/off>
Enable/disable scan between cycles.set led <on/off>
Enable/disable onboard LEDs.set debug <on/off>
Enable/disable debug mode.
start sniff
Enable packet sniffing.sniff beacon
Capture beacon frames.sniff probe
Capture probe requests/responses.sniff deauth
Capture deauth/disassoc frames.sniff eapol
Capture EAPOL frames.sniff pwnagotchi
Capture Pwnagotchi beacons.sniff all
Capture all frames.stop sniff
Stop sniffing.
Below is the repository layout:
.
├── Evil-BW16/
│ └── Evil-BW16.ino # Main BW16 firmware
├── ESP32/
│ └── ESP32.ino # Web interface code for ESP32
├── UI/
│ ├── index.html # Main web interface
│ └── static/
│ ├── bootstrap-icons.css
│ ├── bootstrap.bundle.min.js
│ ├── bootstrap.min.css
│ ├── bootstrap.min.js
│ ├── logo.png
│ ├── rbbt.PNG
│ ├── script.js
│ ├── socket.io.min.js
│ ├── style.css
│ ├── welcome_msg.txt
│ └── fonts/
│ ├── bootstrap-icons.woff
│ └── bootstrap-icons.woff2
├── LICENSE
└── README.md # This file
- Check power supply and verify at least 3.3V/5V at 2A or more.
- Ensure correct serial connection (TX ↔ RX, GND ↔ GND).
- Verify the baud rate (default: 115200).
- Confirm you are connected to the Evil-BW16 SSID.
- Verify the IP address is
192.168.4.1. - Try clearing your browser cache or use a different browser.
- Check SPI wiring (MISO, MOSI, SCK, CS).
- Ensure SD card is formatted as FAT32.
- Check logs for any SD mount errors.
- Reduce the number of targets or channels.
- Increase the cycle delay between attacks.
- Use a stable external power source (battery pack or regulated supply).
- Fork the repository.
- Create a new branch with a descriptive name.
- Make your changes or additions.
- Submit a pull request for review.
We welcome improvements to documentation, bug fixes, new features, or general enhancements.
This tool is created for educational and ethical testing purposes only.
Any misuse or illegal use of this tool is strictly prohibited.
The creators and contributors assume no liability for misuse or damage caused by this tool.
Users must comply with all applicable laws and regulations in their jurisdiction regarding network testing and ethical hacking.
This project is licensed under the MIT License.
See the LICENSE file for full details.
- ESP32 Arduino Core team
- ESPAsyncWebServer library maintainers
- ArduinoJson library contributors
- BW16 development community
- OpenWRT project
- Aircrack-ng team
- Developers:
- 🛠 7h30th3r0n3
- 🤖 dagnazty
- 🦾 Hosseios
