CCCPaste

WiFi Sniffer

#include "WiFi.h"

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_MODE_STA);
  esp_wifi_set_promiscuous(true);
  esp_wifi_set_promiscuous_filter(&filter);
  esp_wifi_set_promiscuous_rx_cb(&sniffer_callback);
  esp_wifi_start();
}

void loop() {
  // Nothing to do here - everything happens in the callback
}

void sniffer_callback(void* buf, wifi_promiscuous_pkt_type_t type) {
  const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buf;
  Serial.print("Packet: ");
  for (int i = 0; i < ppkt->rx_ctrl.sig_len; i++) {
    Serial.print(ppkt->payload[i], HEX);
    Serial.print(" ");
  }
  Serial.println();
}

wifi_promiscuous_filter_t filter = {
    .filter_mask = WIFI_PROMIS_FILTER_MASK_ALL,
};