This project aims at listening to Wi-Fi packets traffic.
- Install ESP-IDF: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/#step-2-get-esp-idf
- Make sure to use at least idf
v4.4(which officially includesesp32s3support)
- Make sure to use at least idf
- Have an
ESP32-S3board, preferablydevkitC-1 v1.6 - If flashing from linux, make sure you have permissions to access usb ports:
sudo usermod -a -G dialout $USER && sudo usermod -a -G plugdev $USER- Then reboot
## Build
idf.py build
## Flash
idf.py -p PORT flash
## Monitor
idf.py -p PORT monitor
You can also execute all above commands at once: idf.py build flash monitor
## Clean build folder
idf.py fullclean
## Set target
idf.py set-target esp32s3
## Configure board features
idf.py menuconfig
The esp32 can be set in 2 modes: wifi sniffer or FTP server. The mode can be switched using GPIO9. Moreover, the blinking led color depends on the current mode, see :
| GPIO state | ESP32 mode | led blink color |
|---|---|---|
| High (default) | FTP server | red |
| GND | Wifi sniffer | green |
| High or GND | boot / setup | blue |
Note that GPIO9 is defined as a PULL_UP. Therefore, undefined state will be a HIGH state. Therefore, you can plug a toggle button bridging GPIO 9 and GND to easily switch between modes.
Wifi sniffer mode will log the rssi values of any AP point which ssid is formatted as ESP32_AP%d. Be aware that flashing code to the esp32 will erase all your logs. However, powering down the chip is safe.
The ftp server mode will allow you to retrieve your logs. The esp32 will therefore be visible as an AP in this mode. To connect to the FTP server, use the following credentials:
AP ssid: ESP_FTP_SERVER
AP password: ftp_server_ap_password_esp32_
FTP user: ftp_user
FTP password: ftp_server_password_esp32_
These credentials can be defined in main/ftp_server_config.h
Locally, you can retrieve your logs using the ftp_client.sh script. Note that it requires you to be connected to the ESP AP point. You may also have to change the IP address set in the script.