ESP8266 Framework Version: 3.1.2
SDK Version: 3.0.5
IEEE Standard: 802.11-2016
Build Date: May 21, 2025
Craft, transmit, and study raw IEEE 802.11 management frames (Beacon, Association Request, Deauthentication, Disassociation) on the ESP8266.
Fully standards-compliant, highly educational, and visually documented.
- IEEE 802.11-2016 Standard Compliance:
- All management frames (Beacon, Association Request, Deauthentication, Disassociation) are constructed per the IEEE 802.11-2016 standard.
- Correct MAC header, fixed, and tagged parameters for each frame type.
- User-Selectable Frame Type:
- Select frame type and set parameters (SSID, MAC, channel, reason code) via serial commands.
- Automatic Parameter Handling:
- All relevant fields and buffers are set automatically for the selected frame type.
- Robust Channel Hopping:
- Supports sequential, adaptive, and random channel hopping for maximum delivery and minimal interference.
- Carrier Sensing:
- RSSI-based channel assessment to avoid busy channels.
- Low-level Transmission:
- Uses ESP8266 SDK and direct register access for raw packet transmission.
- Interactive Serial Interface:
- Manual and continuous transmission modes, debug output, and runtime configuration.
- Detailed Documentation:
- Code and documentation reference relevant IEEE 802.11 sections and provide annotated, educational examples.
Frame Type | IEEE 802.11 Section | Description |
---|---|---|
Beacon | 9.4.1.3 | Announces AP presence and parameters |
Association Request | 9.3.3.6 | Requests client association with AP |
Deauthentication | 9.3.3.13 | Terminates authentication (force disconnect) |
Disassociation | 9.3.3.12 | Gracefully ends association (client/AP disconnect) |
See sample/example.md
for detailed, annotated code for each frame type.
The project requires the following ESP8266 non-OS SDK headers:
#include <user_interface.h> // ESP8266 SDK core interface functions
#include <espnow.h> // ESP-NOW protocol operations
#include <ieee80211_structs.h> // IEEE 802.11 frame structures
#include <ets_sys.h> // ESP8266 timer and system functions
These headers are included in the ESP8266 RTOS SDK and ESP8266 non-OS SDK. When using Arduino IDE:
-
Install ESP8266 board support using Boards Manager URL:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
-
Install ESP8266 core (version 2.5.0 or later)
-
The required headers will be available in:
$ARDUINO_DIR/hardware/esp8266com/esp8266/tools/sdk/include/
-
Hardware:
- ESP8266 module (NodeMCU, Wemos D1 Mini, etc.)
-
Software:
- Arduino IDE with ESP8266 board support
- Place
IEEE-80211-8266.ino
in your sketch folder
-
Upload:
- Select your ESP8266 board and upload the sketch
-
Serial Commands:
t
β Trigger single transmissionc
β Toggle continuous moded
β Toggle debug modeh
β Show help menus
β Show current statusm
β Set target MAC (format: XX:XX:XX:XX:XX:XX)f
β Select frame type:0
- Association Request1
- Beacon2
- Deauthentication3
- Disassociation
n
β Set network SSIDr
β Set reason code (for deauth/disassoc)1-9
β Set WiFi channel (1-9)
Use
h
to show the help menu ors
to display current settings including:- Continuous/Debug mode status
- Current channel
- Target/Source MAC addresses
- SSID and Frame type
- Reason code (for deauth/disassoc)
-
Monitor Output:
- Serial output provides status, debug, and error messages.
CRITICAL SAFETY AND LEGAL NOTICE
This project is provided STRICTLY FOR EDUCATIONAL AND RESEARCH PURPOSES ONLY. Users must:
-
Legal Compliance
- Ensure all usage complies with local/national laws
- Obtain necessary authorizations before testing
- Follow telecommunications regulations
- Respect network security policies
-
Safety Considerations
- Never use on production/live networks
- Test only in controlled environments
- Maintain proper documentation of testing
- Monitor for unintended interference
-
Ethical Guidelines
- Use only for learning/research
- Never attempt unauthorized access
- Document all testing procedures
- Report vulnerabilities responsibly
DISCLAIMERS:
- No warranty of fitness for any purpose
- Authors assume no liability for damages
- Use at your own risk
- No support for malicious use
By using this code, you acknowledge these terms and accept full responsibility.
- Added atomic sequence number handling
- Improved frame builder error checking
- Enhanced documentation and safety warnings
- Added troubleshooting guide
- Updated command interface reference
- See troubleshooting section in example.md
- Monitor GitHub issues for latest updates
Detailed documentation is available in:
sample/example.md
- Complete frame examples and command referencedocs/
- Additional technical documentation- GitHub Wiki - Installation and configuration guides
- The code uses packed C structs and manual buffer construction to ensure IEEE 802.11 compliance.
- All frame types are built according to the standard, including correct MAC header, fixed parameters, and required tagged parameters.
- Channel hopping and carrier sensing are implemented to maximize delivery and minimize interference.
- Inline assembly and direct register access are used for precise timing and raw transmission.
- IEEE 802.11-2016 Standard
- ESP8266 SDK Documentation
- Arduino ESP8266 Core
- Wikipedia: IEEE 802.11 Management Frames
IEEE-80211-8266/
βββ IEEE-80211-8266.ino # Main Arduino sketch file
βββ ieee80211_structs.h # IEEE 802.11 frame structures and definitions
βββ sample/
β βββ example.md # Detailed frame examples and documentation
βββ docs/
β βββ SECURITY.md # Security considerations and warnings
βββ LICENSE # Educational use license
βββ README.md # Project overview and getting started
- Added atomic sequence number handling
- Improved frame builder error checking
- Enhanced documentation with safety warnings
- Added troubleshooting guide
- Updated command interface reference
- Added channel management strategies
- Performance optimizations
- Basic IEEE 802.11 frame construction
- Support for 4 management frame types
- Serial command interface
- Channel hopping capabilities
- Debug mode
Project is maintained by @stdnt-c1. Last updated: May 21, 2025.
To contribute or report issues:
- Fork the repository
- Create a feature branch
- Submit a pull request
For bug reports or questions, please open an issue in the GitHub repository.
By using this code, you agree to the above terms and accept all responsibility for its use.