diff --git a/esp8266_packet_monitor/esp8266_packet_monitor.ino b/esp8266_packet_monitor/esp8266_packet_monitor.ino index f01cdee..65212fc 100644 --- a/esp8266_packet_monitor/esp8266_packet_monitor.ino +++ b/esp8266_packet_monitor/esp8266_packet_monitor.ino @@ -1,13 +1,38 @@ +#if defined(ESP8266) #include +#else +#include +#endif #include #include #include "SSD1306.h" #include "SH1106.h" +#if defined(ESP8266) extern "C" { #include "user_interface.h" } +#else +#include "esp_wifi.h" +const wifi_promiscuous_filter_t filt={ + .filter_mask=WIFI_PROMIS_FILTER_MASK_MGMT|WIFI_PROMIS_FILTER_MASK_DATA +}; + +typedef struct { + uint8_t mac[6]; +} __attribute__((packed)) MacAddr; + +typedef struct { + int16_t fctl; + int16_t duration; + MacAddr da; + MacAddr sa; + MacAddr bssid; + int16_t seqctl; + unsigned char payload[]; +} __attribute__((packed)) WifiMgmtHdr; +#endif //===== SETTINGS =====// //create display(Adr, SDA-pin, SCL-pin) @@ -35,11 +60,30 @@ bool canBtnPress = true; int val[128]; +#if defined(ESP8266) void sniffer(uint8_t *buf, uint16_t len) { +#else +void sniffer(void* buf, wifi_promiscuous_pkt_type_t type) { +#endif pkts++; +#if defined(ESP8266) if(buf[12] == 0xA0 || buf[12] == 0xC0){ deauths++; } +#else + if (type == WIFI_PKT_MGMT) { + wifi_promiscuous_pkt_t *p = (wifi_promiscuous_pkt_t*)buf; + int len = p->rx_ctrl.sig_len; + WifiMgmtHdr *wh = (WifiMgmtHdr*)p->payload; + len -= sizeof(WifiMgmtHdr); + if (len < 0) return; + int fctl = ntohs(wh->fctl); + if (fctl & 0x0F00 == 0x0A00 || fctl & 0x0F00 == 0x0C00) { + deauths++; + Serial.println("DEAUTH:"); + } + } +#endif } void getMultiplicator(){ @@ -85,13 +129,26 @@ void setup() { pinMode(ledPin, OUTPUT); /* setup wifi */ +#if defined(ESP8266) wifi_set_opmode(STATION_MODE); wifi_promiscuous_enable(0); WiFi.disconnect(); wifi_set_promiscuous_rx_cb(sniffer); wifi_set_channel(curChannel); wifi_promiscuous_enable(1); - +#else + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + esp_wifi_init(&cfg); + esp_wifi_set_country(WIFI_COUNTRY_EU); + esp_wifi_set_storage(WIFI_STORAGE_RAM); + esp_wifi_set_mode(WIFI_MODE_NULL); + esp_wifi_start(); + esp_wifi_set_promiscuous(true); + esp_wifi_set_promiscuous_filter(&filt); + esp_wifi_set_promiscuous_rx_cb(&sniffer); + esp_wifi_set_channel(curChannel, WIFI_SECOND_CHAN_NONE); +#endif + Serial.println("starting!"); } @@ -108,7 +165,11 @@ void loop() { //switch channel curChannel++; if(curChannel > maxCh) curChannel = 1; +#if defined(ESP8266) wifi_set_channel(curChannel); +#else + esp_wifi_set_channel(curChannel, WIFI_SECOND_CHAN_NONE); +#endif for(int i=0;i<128;i++) val[i] = 0; pkts = 0; multiplicator = 1; @@ -152,4 +213,4 @@ void loop() { pkts = 0; } -} +}