https://github.com/sulaimanniazi/esp32-wroom_wifi_sniffer
An ESP32-WROOM-based Wi-Fi Device Sniffer that captures nearby device MAC addresses and signal strengths using promiscuous mode.
https://github.com/sulaimanniazi/esp32-wroom_wifi_sniffer
arduino-ide esp32 esp32-arduino esp32-wroom promiscuous sniffer sniffing-devices wifi
Last synced: 3 months ago
JSON representation
An ESP32-WROOM-based Wi-Fi Device Sniffer that captures nearby device MAC addresses and signal strengths using promiscuous mode.
- Host: GitHub
- URL: https://github.com/sulaimanniazi/esp32-wroom_wifi_sniffer
- Owner: SulaimanNiazi
- Created: 2025-07-09T09:50:09.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-07-09T09:58:44.000Z (3 months ago)
- Last Synced: 2025-07-09T10:48:42.715Z (3 months ago)
- Topics: arduino-ide, esp32, esp32-arduino, esp32-wroom, promiscuous, sniffer, sniffing-devices, wifi
- Language: C++
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ESP32 Wi-Fi Device Sniffer
An **ESP32-WROOM-based Wi-Fi Device Sniffer** that passively detects nearby devices by capturing their MAC addresses and signal strength (RSSI) using **promiscuous mode**.
---
## ๐ง Features
* Detects devices broadcasting on 2.4GHz Wi-Fi
* Displays MAC address, RSSI, and last seen time
* Uses ESP32's hardware promiscuous mode
* Optional button to display all detected devices
* Works offline without connecting to any Wi-Fi network---
## ๐ฆ Requirements
* ESP32-WROOM board
* Arduino IDE with ESP32 board support
* Micro USB cable---
## ๐ Wiring
| ESP32 Pin | Purpose |
| --------- | --------------------- |
| GPIO0 | Display button (BOOT) |
| GND | Button GND side |*Optional: You can connect a push button between GPIO0 and GND to print the list of detected devices.*
---
## ๐ฒ Installation
1. Install [Arduino IDE](https://www.arduino.cc/en/software)
2. Add ESP32 board support via Board Manager:* Board URL: `https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`
3. Install the following libraries (should be built-in):* `WiFi.h`
* `esp_wifi.h`
4. Upload the sketch to your ESP32 board---
## โถ๏ธ How It Works
* ESP32 is set to `WIFI_MODE_NULL` to disable connections
* Promiscuous mode is enabled to capture all Wi-Fi packets
* MAC addresses from management frames are extracted
* Detected devices are stored in a list with their RSSI
* Pressing GPIO0 (BOOT) prints the current device list---
## ๐งช Example Output
```
๐ Starting WiFi sniffer...
[NEW] 92:14:36:FA:B2:77 RSSI: -45
[NEW] D8:BC:38:49:A1:CC RSSI: -70
๐ Known devices:
92:14:36:FA:B2:77 RSSI: -45 Last seen: 5 sec ago
D8:BC:38:49:A1:CC RSSI: -70 Last seen: 10 sec ago
```---
## โ ๏ธ Limitations
* Only captures devices using 2.4GHz Wi-Fi
* MAC randomization by modern phones may affect accuracy
* Does not decode payloads or establish connections
* Locked to a specific channel (default: 6)---
## ๐ก Future Ideas
* Channel hopping to capture on all Wi-Fi channels
* Web server to view devices on a browser
* Logging to SD card or serial monitor---
## ๐ License
MIT License. Free to use and modify.
---
Contributions welcome!