diff --git a/src/blecount.cpp b/src/blecount.cpp deleted file mode 100644 index 3872d360..00000000 --- a/src/blecount.cpp +++ /dev/null @@ -1,32 +0,0 @@ - -// Basic Config -#include "globals.h" - -#ifdef BLECOUNTER -#include -#include -#include -#include - -// Local logging tag -static const char *TAG = "blecount"; - -class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { - void onResult(BLEAdvertisedDevice advertisedDevice) { - } -}; - -void BLECount() { - u8x8.clearLine(3); - u8x8.drawString(0,3,"BLE Scan..."); - BLEDevice::init(PROGNAME); - BLEScan* pBLEScan = BLEDevice::getScan(); //create new scan - pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); - pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster - BLEScanResults foundDevices = pBLEScan->start(cfg.blescancycle); - u8x8.clearLine(3); - u8x8.setCursor(0,3); - blenum=foundDevices.getCount(); - u8x8.printf("BLE#: %4i",blenum); -} -#endif \ No newline at end of file diff --git a/src/macsniff.cpp b/src/macsniff.cpp new file mode 100644 index 00000000..43d9567a --- /dev/null +++ b/src/macsniff.cpp @@ -0,0 +1,144 @@ + +// Basic Config +#include "main.h" +#include "globals.h" + +#ifdef BLECOUNTER +#include +#include +#include +#include +#endif + +#ifdef VENDORFILTER + #include + #include + #include "vendor_array.h" +#endif + +// Local logging tag +static const char *TAG = "macsniff"; + +static wifi_country_t wifi_country = {.cc=WIFI_MY_COUNTRY, .schan=WIFI_CHANNEL_MIN, .nchan=WIFI_CHANNEL_MAX, .policy=WIFI_COUNTRY_POLICY_MANUAL}; + +uint16_t currentScanDevice = 0; + +bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) { + + char counter [11]; // uint32_t -> 4 byte -> 10 decimals + '0' terminator -> 11 chars + char macbuf [21]; // uint64_t -> 8 byte -> 20 decimals + '0' terminator -> 21 chars + char typebuff[8] ; + bool added = false; + uint32_t hashedmac, vendor2int; + uint64_t addr2int; + std::pair::iterator, bool> newmac; + + addr2int = ( (uint64_t)paddr[0] ) | ( (uint64_t)paddr[1] << 8 ) | ( (uint64_t)paddr[2] << 16 ) | \ + ( (uint64_t)paddr[3] << 24 ) | ( (uint64_t)paddr[4] << 32 ) | ( (uint64_t)paddr[5] << 40 ); + + #ifdef VENDORFILTER + vendor2int = ( (uint32_t)paddr[2] ) | ( (uint32_t)paddr[1] << 8 ) | ( (uint32_t)paddr[0] << 16 ); + if ( std::find(vendors.begin(), vendors.end(), vendor2int) != vendors.end() ) { + #endif + + //if (!(addr2int & WIFI_MAC_FILTER_MASK)) { // filter local and group MACs + + // salt and hash MAC, and if new unique one, store hash in container and increment counter on display + addr2int <<= 8; + addr2int += salt; // append salt value to MAC before hashing it + itoa(addr2int, macbuf, 10); // convert 64 bit MAC to base 10 decimal string + hashedmac = rokkit(macbuf, 10); // hash MAC for privacy, use 10 chars to fit in uint32_t container + + if (sniff_type == MAC_SNIFF_WIFI ) { + newmac = wifis.insert(hashedmac); // store hashed MAC if new unique + strcpy(typebuff, "WiFi"); + } else if (sniff_type == MAC_SNIFF_BLE ) { + newmac = bles.insert(hashedmac); // store hashed MAC if new unique + strcpy(typebuff, "BLE "); + } + + if (newmac.second) { // first time seen this WIFI/BLE MAC + // Insert to glbal counter + macs.insert(hashedmac); + added = true; + itoa(macs.size(), counter, 10); // base 10 decimal counter value + u8x8.draw2x2String(0, 0, counter); + ESP_LOGI(TAG, "%s RSSI %04d -> Hash %010u -> #%04i", typebuff, rssi, hashedmac, macs.size()); + } else { + ESP_LOGI(TAG, "%s RSSI %04d -> already seen", typebuff, rssi); + } + + #ifdef VENDORFILTER + } else { + // Very noisy + //ESP_LOGI(TAG, "Filtered MAC %02X:%02X:%02X:%02X:%02X:%02X", paddr[0],paddr[1],paddr[2],paddr[3],paddr[5],paddr[5]); + } + #endif + + // True if MAC (WiFi/BLE was new) + return added; +} + +#ifdef BLECOUNTER + +class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { + void onResult(BLEAdvertisedDevice advertisedDevice) { + uint8_t *p = (uint8_t *) advertisedDevice.getAddress().getNative(); + + // Current devices seen on this scan session + currentScanDevice++; + mac_add(p, advertisedDevice.getRSSI(), MAC_SNIFF_BLE); + u8x8.setCursor(12,3); + u8x8.printf("%d", currentScanDevice); + } +}; + +void BLECount() { + int blenum = 0; // Total device seen on this scan session + currentScanDevice = 0; // Set 0 seen device on this scan session + u8x8.clearLine(3); + u8x8.drawString(0,3,"BLE Scan..."); + BLEDevice::init(PROGNAME); + BLEScan* pBLEScan = BLEDevice::getScan(); //create new scan + pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); + pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster + BLEScanResults foundDevices = pBLEScan->start(cfg.blescancycle); + blenum=foundDevices.getCount(); + u8x8.clearLine(3); + u8x8.setCursor(0,3); + u8x8.printf("BLE#: %-5i %-3i",bles.size(), blenum); +} +#endif + + +void wifi_sniffer_init(void) { + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + cfg.nvs_enable = 0; // we don't need any wifi settings from NVRAM + wifi_promiscuous_filter_t filter = {.filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT}; // we need only MGMT frames + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + ESP_ERROR_CHECK(esp_wifi_set_country(&wifi_country)); + ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM) ); + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_NULL) ); + ESP_ERROR_CHECK(esp_wifi_set_promiscuous_filter(&filter)); // set MAC frame filter + ESP_ERROR_CHECK(esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler)); + ESP_ERROR_CHECK(esp_wifi_set_promiscuous(true)); +} + +void wifi_sniffer_set_channel(uint8_t channel) { + esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); +} + +void wifi_sniffer_packet_handler(void* buff, wifi_promiscuous_pkt_type_t type) { + const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buff; + const wifi_ieee80211_packet_t *ipkt = (wifi_ieee80211_packet_t *)ppkt->payload; + const wifi_ieee80211_mac_hdr_t *hdr = &ipkt->hdr; + + if (( cfg.rssilimit == 0 ) || (ppkt->rx_ctrl.rssi > cfg.rssilimit )) { // rssi is negative value + uint8_t *p = (uint8_t *) hdr->addr2; + mac_add(p, ppkt->rx_ctrl.rssi, MAC_SNIFF_WIFI) ; + } else { + ESP_LOGI(TAG, "WiFi RSSI %04d -> ignoring (limit: %i)", ppkt->rx_ctrl.rssi, cfg.rssilimit); + } + yield(); +} + diff --git a/src/macsniff.h b/src/macsniff.h new file mode 100644 index 00000000..423c62b8 --- /dev/null +++ b/src/macsniff.h @@ -0,0 +1,28 @@ +// ESP32 Functions +#include + +#define MAC_SNIFF_WIFI 0 +#define MAC_SNIFF_BLE 1 + +typedef struct { + unsigned frame_ctrl:16; + unsigned duration_id:16; + uint8_t addr1[6]; /* receiver address */ + uint8_t addr2[6]; /* sender address */ + uint8_t addr3[6]; /* filtering address */ + unsigned sequence_ctrl:16; + uint8_t addr4[6]; /* optional */ +} wifi_ieee80211_mac_hdr_t; + +typedef struct { + wifi_ieee80211_mac_hdr_t hdr; + uint8_t payload[0]; /* network data ended with 4 bytes csum (CRC32) */ +} wifi_ieee80211_packet_t; + +void BLECount(); +void wifi_sniffer_init(void); +void wifi_sniffer_set_channel(uint8_t channel); +void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type); + +// function defined in rokkithash.cpp +uint32_t rokkit(const char * , int ); diff --git a/src/vendor_array.cpp b/src/vendor_array.cpp deleted file mode 100644 index 167c916d..00000000 --- a/src/vendor_array.cpp +++ /dev/null @@ -1,1440 +0,0 @@ -#ifdef VENDORFILTER -#include -#include - -std::array vendors = { \ - 0x38f23e, \ - 0x807abf, \ - 0x90e7c4, \ - 0x7c6193, \ - 0x485073, \ - 0x74e28c, \ - 0x8463d6, \ - 0xd48f33, \ - 0x2c8a72, \ - 0x980d2e, \ - 0xa826d9, \ - 0xd4206d, \ - 0x00155d, \ - 0x806c1b, \ - 0xa470d6, \ - 0x985fd3, \ - 0x1c69a5, \ - 0x382de8, \ - 0xd087e2, \ - 0x205531, \ - 0x5440ad, \ - 0x842e27, \ - 0x50f0d3, \ - 0x84119e, \ - 0x08eca9, \ - 0x10d38a, \ - 0x382dd1, \ - 0xe0cbee, \ - 0x64b853, \ - 0xf4428f, \ - 0x188331, \ - 0x8455a5, \ - 0xa87c01, \ - 0xc01173, \ - 0xbce63f, \ - 0xb857d8, \ - 0x94b10a, \ - 0xe458b8, \ - 0x088c2c, \ - 0xb86ce8, \ - 0x9c65b0, \ - 0xc8a823, \ - 0xc44202, \ - 0xd059e4, \ - 0x64b310, \ - 0x9476b7, \ - 0x8c1abf, \ - 0xb47443, \ - 0x30cbf8, \ - 0x182195, \ - 0xa88195, \ - 0x88add2, \ - 0xd0fccc, \ - 0x14c913, \ - 0x4c6641, \ - 0x3cbdd8, \ - 0x38256b, \ - 0x849866, \ - 0xe89309, \ - 0x0016db, \ - 0x5c3c27, \ - 0x10d542, \ - 0xa0821f, \ - 0xc45006, \ - 0x88329b, \ - 0xbc8ccd, \ - 0x400e85, \ - 0xec9bf3, \ - 0xf8042e, \ - 0x843838, \ - 0x54880e, \ - 0xbc79ad, \ - 0x30d6c9, \ - 0xb0df3a, \ - 0x805719, \ - 0x78a873, \ - 0x041bba, \ - 0x08fd0e, \ - 0x08d42b, \ - 0x00e3b2, \ - 0xc81479, \ - 0xf0728c, \ - 0x94350a, \ - 0x001fcd, \ - 0xd0dfc7, \ - 0x1c62b8, \ - 0x18e2c2, \ - 0x001a8a, \ - 0x002567, \ - 0xa8f274, \ - 0x001599, \ - 0x0012fb, \ - 0x7cf854, \ - 0x8cc8cd, \ - 0xe81132, \ - 0xa02195, \ - 0x8c71f8, \ - 0x04180f, \ - 0x9463d1, \ - 0x0cdfa4, \ - 0xcc051b, \ - 0x68ebae, \ - 0x60d0a9, \ - 0x60a10a, \ - 0xa07591, \ - 0x001fcc, \ - 0xec107b, \ - 0xa01081, \ - 0xf4f524, \ - 0x9c99a0, \ - 0x185936, \ - 0x98fae3, \ - 0x640980, \ - 0x8cbebe, \ - 0xf8a45f, \ - 0xbc8385, \ - 0x900628, \ - 0xd4ae05, \ - 0x3c0518, \ - 0xc40bcb, \ - 0xe8bba8, \ - 0xbc3aea, \ - 0x8c0ee3, \ - 0x6c5c14, \ - 0x78abbb, \ - 0x1816c9, \ - 0xfc8f90, \ - 0x244b03, \ - 0x988389, \ - 0x14bb6e, \ - 0x1c3ade, \ - 0xf83f51, \ - 0xd8e0e1, \ - 0xecf342, \ - 0x5092b9, \ - 0xb4bff6, \ - 0xc8d7b0, \ - 0x982d68, \ - 0xecd09f, \ - 0xe446da, \ - 0xf4f5db, \ - 0xd80831, \ - 0xdc5583, \ - 0x2c54cf, \ - 0x001fe3, \ - 0x0026e2, \ - 0x001e75, \ - 0x6cd68a, \ - 0x2021a5, \ - 0x0c4885, \ - 0xdc0b34, \ - 0xac0d1b, \ - 0x60e3ac, \ - 0xf895c7, \ - 0xc4438f, \ - 0xa816b2, \ - 0xe892a4, \ - 0x700514, \ - 0x88c9d0, \ - 0x2c598a, \ - 0x18f0e4, \ - 0xec8350, \ - 0x4cdd31, \ - 0x703eac, \ - 0x6c94f8, \ - 0x84788b, \ - 0x2cf0ee, \ - 0x68d93c, \ - 0x24e314, \ - 0x28f076, \ - 0x285aeb, \ - 0x087402, \ - 0xccc760, \ - 0x705aac, \ - 0xfc643a, \ - 0xd4e6b7, \ - 0x2802d8, \ - 0x9c2ea1, \ - 0x68967b, \ - 0xbc6778, \ - 0xa82066, \ - 0xb065bd, \ - 0xf0dce2, \ - 0x7cd1c3, \ - 0x705681, \ - 0x2cbe08, \ - 0x783a84, \ - 0x84b153, \ - 0x6476ba, \ - 0x54ae27, \ - 0xf437b7, \ - 0xf0d1a9, \ - 0x34c059, \ - 0x04f7e4, \ - 0x10ddb1, \ - 0xb4f0ab, \ - 0x848506, \ - 0x7831c1, \ - 0x8c7c92, \ - 0xd0e140, \ - 0xacfdec, \ - 0xf82793, \ - 0x40a6d9, \ - 0x109add, \ - 0xf0b479, \ - 0x58b035, \ - 0x34159e, \ - 0x286aba, \ - 0xec852f, \ - 0x44d884, \ - 0x003ee1, \ - 0x7c11be, \ - 0x04e536, \ - 0x881fa1, \ - 0x04db56, \ - 0x9cfc01, \ - 0xc81ee7, \ - 0x34363b, \ - 0xc01ada, \ - 0xacbc32, \ - 0x70700d, \ - 0x7c5049, \ - 0x503237, \ - 0xd4619d, \ - 0xb0481a, \ - 0x989e63, \ - 0xdca904, \ - 0x48a195, \ - 0x6cab31, \ - 0x6c96cf, \ - 0x3035ad, \ - 0xa8be27, \ - 0xb8634d, \ - 0x9ce33f, \ - 0xf0989d, \ - 0xace4b5, \ - 0xe42b34, \ - 0x1c36bb, \ - 0x3c2eff, \ - 0xf0766f, \ - 0x40cbc0, \ - 0x4098ad, \ - 0x6c4d73, \ - 0xc48466, \ - 0xd02b20, \ - 0x3010e4, \ - 0x380f4a, \ - 0x685b35, \ - 0xc86f1d, \ - 0x701124, \ - 0x38484c, \ - 0x041552, \ - 0x786c1c, \ - 0xbc3baf, \ - 0x00a040, \ - 0x60fec5, \ - 0xcc4463, \ - 0x6c72e7, \ - 0x18af61, \ - 0x00cdfe, \ - 0xac61ea, \ - 0x38b54d, \ - 0x60c547, \ - 0x28e02c, \ - 0x50ead6, \ - 0x4860bc, \ - 0x403004, \ - 0x0c74c2, \ - 0xa4b197, \ - 0x7cf05f, \ - 0xa4f1e8, \ - 0x70a2b3, \ - 0x4c57ca, \ - 0x68fb7e, \ - 0x90c1c6, \ - 0x9cf48e, \ - 0xfcd848, \ - 0x64b9e8, \ - 0x001cb3, \ - 0x000d93, \ - 0x30d9d9, \ - 0x6030d4, \ - 0x94bf2d, \ - 0xc49880, \ - 0xe0338e, \ - 0x68fef7, \ - 0xbce143, \ - 0x645aed, \ - 0xc0b658, \ - 0x881908, \ - 0xfc2a9c, \ - 0x48605f, \ - 0x188796, \ - 0x002376, \ - 0x84100d, \ - 0x04c23e, \ - 0x5c5188, \ - 0xe89120, \ - 0x9c6c15, \ - 0x4886e8, \ - 0x2c2997, \ - 0x102f6b, \ - 0x00eebd, \ - 0x281878, \ - 0x6045bd, \ - 0x7ced8d, \ - 0xe85b5b, \ - 0x000d3a, \ - 0xe09861, \ - 0xf4f1e1, \ - 0x60beb5, \ - 0xb4e1c4, \ - 0x70aab2, \ - 0x0026ff, \ - 0x406f2a, \ - 0x002557, \ - 0xf05a09, \ - 0x503275, \ - 0x28cc01, \ - 0xb46293, \ - 0x04fe31, \ - 0x845181, \ - 0xd831cf, \ - 0xf8d0bd, \ - 0xfcc734, \ - 0xe4b021, \ - 0xb0ec71, \ - 0x3cbbfd, \ - 0x2cae2b, \ - 0xc488e5, \ - 0x7c9122, \ - 0xe8b4c8, \ - 0x18895b, \ - 0xe0db10, \ - 0xe09971, \ - 0x6077e2, \ - 0x680571, \ - 0x6c2f2c, \ - 0x300d43, \ - 0x6c2779, \ - 0x607edd, \ - 0x9c2a83, \ - 0xe45d75, \ - 0xe4faed, \ - 0xc83f26, \ - 0x54f201, \ - 0xa06090, \ - 0xac3743, \ - 0x141f78, \ - 0x006f64, \ - 0xdc6672, \ - 0x001e7d, \ - 0x3c6200, \ - 0x0024e9, \ - 0x002399, \ - 0xe4e0c5, \ - 0xe8039a, \ - 0xc4731e, \ - 0x8c7712, \ - 0x2013e0, \ - 0x0007ab, \ - 0x0021d2, \ - 0xbc4760, \ - 0xd0176a, \ - 0x2cbaba, \ - 0x24920e, \ - 0x40d3ae, \ - 0xf01dbc, \ - 0x24dbed, \ - 0xac3613, \ - 0x1449e0, \ - 0xc0bdd1, \ - 0xe8508b, \ - 0xf025b7, \ - 0xc8ba94, \ - 0xec1f72, \ - 0x9852b1, \ - 0x1489fd, \ - 0xccfe3c, \ - 0x789ed0, \ - 0xe440e2, \ - 0x1caf05, \ - 0xe492fb, \ - 0x0073e0, \ - 0xbc4486, \ - 0x380b40, \ - 0x002490, \ - 0x0023d7, \ - 0xfca13e, \ - 0xa00798, \ - 0x945103, \ - 0xc819f7, \ - 0x2c4401, \ - 0x28e31f, \ - 0x0c1daf, \ - 0x14f65a, \ - 0x742344, \ - 0xf0b429, \ - 0xec51bc, \ - 0xf079e8, \ - 0x887598, \ - 0xd0b128, \ - 0xd00401, \ - 0xf06d78, \ - 0x10683f, \ - 0x74a722, \ - 0x58a2b5, \ - 0x64899a, \ - 0x88074b, \ - 0x64bc0c, \ - 0xa039f7, \ - 0x041b6d, \ - 0x001f6b, \ - 0x30b4b8, \ - 0x503cea, \ - 0x0c9838, \ - 0x54fcf0, \ - 0x08aed6, \ - 0xa816d0, \ - 0x88bd45, \ - 0x544e90, \ - 0xd03311, \ - 0x70e72c, \ - 0xc0cecd, \ - 0x98e0d9, \ - 0xe0accb, \ - 0x78d75f, \ - 0x2078f0, \ - 0x985aeb, \ - 0xa45e60, \ - 0x006d52, \ - 0x5cadcf, \ - 0xb8e856, \ - 0x90b21f, \ - 0xa8bbcf, \ - 0xc8b5b7, \ - 0x18af8f, \ - 0xf4f951, \ - 0xf0c1f1, \ - 0xec3586, \ - 0x88cb87, \ - 0xac3c0b, \ - 0xcc785f, \ - 0xe88d28, \ - 0x3ce072, \ - 0xf41ba1, \ - 0xa85b78, \ - 0x9cf387, \ - 0x34a395, \ - 0x48437c, \ - 0xac87a3, \ - 0x00f76f, \ - 0xc0f2fb, \ - 0x1caba7, \ - 0x60facd, \ - 0x680927, \ - 0x78a3e4, \ - 0x68a86d, \ - 0xb817c2, \ - 0xb88d12, \ - 0x5c8d4e, \ - 0xe06678, \ - 0x1c1ac0, \ - 0xc8f650, \ - 0x60d9c7, \ - 0x44fb42, \ - 0x64a3cb, \ - 0xd8d1cb, \ - 0x542696, \ - 0x14109f, \ - 0xbc52b7, \ - 0xe0c97a, \ - 0x5c95ae, \ - 0x8cfaba, \ - 0x0cbc9f, \ - 0xbc4cc4, \ - 0x0c1539, \ - 0x908d6c, \ - 0x80006e, \ - 0xb418d1, \ - 0x1499e2, \ - 0xe0c767, \ - 0xa860b6, \ - 0x24f094, \ - 0x90b0ed, \ - 0xc4b301, \ - 0xe05f45, \ - 0x483b38, \ - 0x88e87f, \ - 0xb853ac, \ - 0x2c3361, \ - 0x784f43, \ - 0x404d7f, \ - 0xbc926b, \ - 0x0452f3, \ - 0x241eeb, \ - 0xf431c3, \ - 0x64a5c3, \ - 0x606944, \ - 0xe498d6, \ - 0x0cd746, \ - 0x440010, \ - 0x1c9e46, \ - 0x7c04d0, \ - 0xbc9fef, \ - 0x8866a5, \ - 0x70f087, \ - 0x886b6e, \ - 0x4c74bf, \ - 0x844167, \ - 0xb4f61c, \ - 0xe49adc, \ - 0xb8c111, \ - 0x3408bc, \ - 0xd0817a, \ - 0xc4618b, \ - 0x68ab1e, \ - 0x2c61f6, \ - 0x0026bb, \ - 0x00254b, \ - 0x002436, \ - 0x002332, \ - 0x002312, \ - 0x0019e3, \ - 0x001451, \ - 0x000a27, \ - 0x003065, \ - 0x0050e4, \ - 0xd023db, \ - 0xe0b9ba, \ - 0x3451c9, \ - 0x8c5877, \ - 0x9803d8, \ - 0xc82a14, \ - 0x88c663, \ - 0x8c7b9d, \ - 0x5855ca, \ - 0xcc08e0, \ - 0xe80688, \ - 0x641cb0, \ - 0x3cdcbc, \ - 0xf47190, \ - 0x587a6a, \ - 0xe4c483, \ - 0x8cf5a3, \ - 0x14568e, \ - 0x8058f8, \ - 0xf0d7aa, \ - 0xc49ded, \ - 0xb0aa36, \ - 0x2c5bb8, \ - 0x1c48ce, \ - 0x24f5aa, \ - 0xf877b8, \ - 0x682737, \ - 0x5056bf, \ - 0x9097f3, \ - 0x58c5cb, \ - 0xacafb9, \ - 0x30074d, \ - 0x5c5181, \ - 0x389af6, \ - 0xe0aa96, \ - 0x507705, \ - 0x2c4053, \ - 0x084acf, \ - 0x1cddea, \ - 0x08152f, \ - 0xd461da, \ - 0xc8d083, \ - 0x88e9fe, \ - 0x88ae07, \ - 0x5c0947, \ - 0x38892c, \ - 0x40831d, \ - 0x50bc96, \ - 0x9ce65e, \ - 0x90dd5d, \ - 0x08f69c, \ - 0x00092d, \ - 0xf8db7f, \ - 0xe899c4, \ - 0x24da9b, \ - 0x1c56fe, \ - 0xe4907e, \ - 0x80c5e6, \ - 0x800184, \ - 0xf8cfc5, \ - 0xc808e9, \ - 0x206274, \ - 0x30d587, \ - 0xc0eefb, \ - 0x502e5c, \ - 0x847a88, \ - 0x0025ae, \ - 0x002538, \ - 0x0022a1, \ - 0x00125a, \ - 0x9cd917, \ - 0x9068c3, \ - 0x408805, \ - 0xf8f1b6, \ - 0x001ccc, \ - 0x94ebcd, \ - 0xa4e4b8, \ - 0x389496, \ - 0x0cb319, \ - 0x08ee8b, \ - 0xa89fba, \ - 0xfc1910, \ - 0x083d88, \ - 0x5c2e59, \ - 0x646cb2, \ - 0xf884f2, \ - 0x14b484, \ - 0x608f5c, \ - 0x4cbca5, \ - 0x78595e, \ - 0xb0d09c, \ - 0x4ca56d, \ - 0xa48431, \ - 0xe4f8ef, \ - 0x1432d1, \ - 0xe458e7, \ - 0x8cbfa6, \ - 0x7840e4, \ - 0x9000db, \ - 0x183a2d, \ - 0x08373d, \ - 0x50f520, \ - 0xa4ebd3, \ - 0x28987b, \ - 0xf40e22, \ - 0x9c3aaf, \ - 0x0821ef, \ - 0xa0cbfd, \ - 0x34145f, \ - 0x6c8fb5, \ - 0xac5f3e, \ - 0x509ea7, \ - 0xdccf96, \ - 0x6c2483, \ - 0xc09727, \ - 0xd85b2a, \ - 0xacc33a, \ - 0x88797e, \ - 0x00e091, \ - 0x6cd032, \ - 0xc041f6, \ - 0x0017d5, \ - 0x001247, \ - 0xe4121d, \ - 0x684898, \ - 0xf409d8, \ - 0xb479a7, \ - 0x002339, \ - 0xd487d8, \ - 0x184617, \ - 0x5001bb, \ - 0x380a94, \ - 0xd857ef, \ - 0x1c66aa, \ - 0x58c38b, \ - 0x001ee2, \ - 0x001c43, \ - 0x001d25, \ - 0x3c5a37, \ - 0x549b12, \ - 0x3c8bfe, \ - 0x00265d, \ - 0xd4e8b2, \ - 0x0808c2, \ - 0xb0c4e7, \ - 0xd890e8, \ - 0x34aa8b, \ - 0x24c696, \ - 0x181eb0, \ - 0x20d390, \ - 0x343111, \ - 0x34be00, \ - 0x78521a, \ - 0x7825ad, \ - 0xf4d9fb, \ - 0x0017c9, \ - 0x00166b, \ - 0x00166c, \ - 0xe47cf9, \ - 0x002454, \ - 0x20d5bf, \ - 0x30cda7, \ - 0xc87e75, \ - 0x00233a, \ - 0x60a4d0, \ - 0x2c0e3d, \ - 0xd4970b, \ - 0x64cc2e, \ - 0xb0e235, \ - 0x38a4ed, \ - 0xf48b32, \ - 0x7c787e, \ - 0xc0d3c0, \ - 0x440444, \ - 0xc09f05, \ - 0xcc2d83, \ - 0x38295a, \ - 0x4c1a3d, \ - 0xa81b5a, \ - 0xdc6dcd, \ - 0x54fa3e, \ - 0x0c8910, \ - 0xfcf136, \ - 0x981dfa, \ - 0x84a466, \ - 0x1867b0, \ - 0xccb11a, \ - 0xb8bbaf, \ - 0x60c5ad, \ - 0x28395e, \ - 0xc4ae12, \ - 0xdc74a8, \ - 0xc087eb, \ - 0x74f61c, \ - 0x986f60, \ - 0x4c189a, \ - 0x3cf591, \ - 0x602101, \ - 0xa89675, \ - 0x608e08, \ - 0x7c2edd, \ - 0x3cf7a4, \ - 0x342d0d, \ - 0x94d029, \ - 0x308454, \ - 0x4c49e3, \ - 0x087808, \ - 0xd03169, \ - 0xbc5451, \ - 0x00bf61, \ - 0xf80cf3, \ - 0x30766f, \ - 0x8c3ae3, \ - 0x78f882, \ - 0xb4f1da, \ - 0x0021fb, \ - 0xd013fd, \ - 0xa8b86e, \ - 0x04b167, \ - 0xd86375, \ - 0xdcbfe9, \ - 0x306a85, \ - 0x2047da, \ - 0x8035c1, \ - 0xd02598, \ - 0xa8667f, \ - 0x7014a6, \ - 0x10417f, \ - 0xac293a, \ - 0x94e96a, \ - 0x0c4de9, \ - 0x907240, \ - 0xa88808, \ - 0xc8e0eb, \ - 0x54e43a, \ - 0x28e14c, \ - 0x848e0c, \ - 0xb03495, \ - 0xf0f61c, \ - 0x0c3021, \ - 0xd89695, \ - 0x649abe, \ - 0x5cf5da, \ - 0x20a2e4, \ - 0xf02475, \ - 0x24a074, \ - 0x8863df, \ - 0x609217, \ - 0x34e2fd, \ - 0x0c3e9f, \ - 0x6c709f, \ - 0x6c4008, \ - 0x5c97f3, \ - 0x90fd61, \ - 0x006171, \ - 0x80e650, \ - 0xdc2b2a, \ - 0xb844d9, \ - 0xe0f5c6, \ - 0x949426, \ - 0xcc29f5, \ - 0x58404e, \ - 0xdc0c5c, \ - 0x2c200b, \ - 0xdca4ca, \ - 0x8c8fe9, \ - 0x9810e8, \ - 0xb49cdf, \ - 0xa4e975, \ - 0xc0a53e, \ - 0x9800c6, \ - 0x787b8a, \ - 0x3866f0, \ - 0x20ee28, \ - 0x08f4ab, \ - 0x8c8590, \ - 0xb48b19, \ - 0xe49a79, \ - 0x28a02b, \ - 0xb44bd2, \ - 0x2cf0a2, \ - 0xecadb8, \ - 0x9801a7, \ - 0x609ac1, \ - 0xf07960, \ - 0x9c8ba0, \ - 0x4c3275, \ - 0xe4e4ab, \ - 0xc8334b, \ - 0x00f4b9, \ - 0x0c771a, \ - 0x74e1b6, \ - 0x64200c, \ - 0xc0847a, \ - 0x183451, \ - 0xfc253f, \ - 0x1040f3, \ - 0x6cc26b, \ - 0x182032, \ - 0x70dee2, \ - 0x00c610, \ - 0x101c0c, \ - 0x7cfadf, \ - 0x5cf938, \ - 0x3871de, \ - 0xbc5436, \ - 0x9c4fda, \ - 0x1c5cf2, \ - 0x60fb42, \ - 0x002500, \ - 0x00236c, \ - 0x0021e9, \ - 0x001ff3, \ - 0x001f5b, \ - 0x001e52, \ - 0x001d4f, \ - 0x001124, \ - 0xa8fad8, \ - 0x5c969d, \ - 0xe48b7f, \ - 0x84fcfe, \ - 0x444c0c, \ - 0x8c2daa, \ - 0x6c3e6d, \ - 0x189efc, \ - 0xc09f42, \ - 0xb8f6b1, \ - 0x406c8f, \ - 0xa4d1d2, \ - 0x040cce, \ - 0xd89e3f, \ - 0x28e7cf, \ - 0xc8bcc8, \ - 0xd8a25e, \ - 0x90840d, \ - 0xf81edf, \ - 0xb0ca68, \ - 0x98ca33, \ - 0x68ef43, \ - 0xcc2db7, \ - 0xd4a33d, \ - 0xe4e0a6, \ - 0x70ef00, \ - 0x80ad16, \ - 0x641cae, \ - 0x14205e, \ - 0x5c1dd9, \ - 0x18f1d8, \ - 0xf86fc1, \ - 0xf099b6, \ - 0xdcd3a2, \ - 0x38e7d8, \ - 0xd8b377, \ - 0xb4cef6, \ - 0xd40b1a, \ - 0x5882a8, \ - 0xb4ae2b, \ - 0x0c413e, \ - 0xd0929e, \ - 0x4480eb, \ - 0xb84fd5, \ - 0xec59e7, \ - 0x3059b7, \ - 0x501ac5, \ - 0x1cb094, \ - 0xa0f450, \ - 0x002248, \ - 0xec8892, \ - 0xb07994, \ - 0x141aa3, \ - 0xccc3ea, \ - 0x34bb26, \ - 0x40786a, \ - 0xf40b93, \ - 0x68ed43, \ - 0x34bb1f, \ - 0x489d24, \ - 0x000f86, \ - 0xacee9e, \ - 0xc08997, \ - 0x2827bf, \ - 0xf05b7b, \ - 0x7cf90e, \ - 0xac5a14, \ - 0xb0c559, \ - 0xbcd11f, \ - 0xa0b4a5, \ - 0x80656d, \ - 0x48137e, \ - 0xe83a12, \ - 0x9c0298, \ - 0x6c8336, \ - 0xb8c68e, \ - 0x74458a, \ - 0xa49a58, \ - 0xb4ef39, \ - 0x14a364, \ - 0x3ca10d, \ - 0x206e9c, \ - 0x183f47, \ - 0x0c715d, \ - 0x0c1420, \ - 0xa80600, \ - 0x6cf373, \ - 0x78c3e9, \ - 0xc83870, \ - 0x288335, \ - 0x44783e, \ - 0x202d07, \ - 0x98398e, \ - 0x348a7b, \ - 0xbc765e, \ - 0x78009e, \ - 0x68c44d, \ - 0xf8e61a, \ - 0x888322, \ - 0x84b541, \ - 0x0015b9, \ - 0x001df6, \ - 0xece09b, \ - 0x606bbd, \ - 0x0000f0, \ - 0x4844f7, \ - 0x1c5a3e, \ - 0xf47b5e, \ - 0x008701, \ - 0xfc4203, \ - 0x1c232c, \ - 0xcc61e5, \ - 0x404e36, \ - 0x009ec8, \ - 0xacf7f3, \ - 0x102ab3, \ - 0x584498, \ - 0xa086c6, \ - 0x7c1dd9, \ - 0x9893cc, \ - 0x3ccd93, \ - 0xf06bca, \ - 0x3423ba, \ - 0xd022be, \ - 0xd02544, \ - 0xbc20a4, \ - 0x14f42a, \ - 0xbc851f, \ - 0xb85e7b, \ - 0xc462ea, \ - 0x0023d6, \ - 0x002491, \ - 0x001b98, \ - 0x44f459, \ - 0x34c3ac, \ - 0x94d771, \ - 0x4c3c16, \ - 0x9401c2, \ - 0xb43a28, \ - 0xd0c1b1, \ - 0xf008f1, \ - 0x78471d, \ - 0x3816d1, \ - 0xd48890, \ - 0x002566, \ - 0x00265f, \ - 0xacc1ee, \ - 0x5cba37, \ - 0x7802f8, \ - 0x3096fb, \ - 0xf0ee10, \ - 0xa43d78, \ - 0xec01ee, \ - 0xb83765, \ - 0xc4576e, \ - 0x90f1aa, \ - 0x78bdbc, \ - 0xd47ae2, \ - 0x84c0ef, \ - 0x7c1c68, \ - 0xd463c6, \ - 0x508f4c, \ - 0x7c6456, \ - 0x448f17, \ - 0x04d6aa, \ - 0x9ce063, \ - 0xf06e0b, \ - 0x5c865c, \ - 0xf0b0e7, \ - 0x209bcd, \ - 0xcc20e8, \ - 0x04d13a, \ - 0x0cf346, \ - 0x003de8, \ - 0x485929, \ - 0x34fcef, \ - 0x002483, \ - 0x001c62, \ - 0x583f54, \ - 0x40b0fa, \ - 0xa8922c, \ - 0x98d6f7, \ - 0x505527, \ - 0x0034da, \ - 0xa09169, \ - 0x88365f, \ - 0x9c8c6e, \ - 0xbcffeb, \ - 0x685acf, \ - 0x48746e, \ - 0x54724f, \ - 0x04f13e, \ - 0x600308, \ - 0x80ea96, \ - 0x24a2e1, \ - 0x90b931, \ - 0x280b5c, \ - 0xa8968a, \ - 0x9c04eb, \ - 0x885395, \ - 0x80929f, \ - 0x98b8e3, \ - 0xd8004d, \ - 0x98fe94, \ - 0x68644b, \ - 0xf099bf, \ - 0xfce998, \ - 0x48e9f1, \ - 0x4c7c5f, \ - 0x60f81d, \ - 0x689c70, \ - 0x2cb43a, \ - 0x042665, \ - 0xf4f15a, \ - 0x207d74, \ - 0x4c8d79, \ - 0xfcfc48, \ - 0x38c986, \ - 0x70ece4, \ - 0xd81d72, \ - 0x94f6a3, \ - 0x78fd94, \ - 0x48d705, \ - 0x7c6df8, \ - 0x3cab8e, \ - 0x787e61, \ - 0xd4f46f, \ - 0xc88550, \ - 0xac7f3e, \ - 0xa4c361, \ - 0x087045, \ - 0x40331a, \ - 0xdc3714, \ - 0x789f70, \ - 0x64b0a6, \ - 0x84fcac, \ - 0x6c19c0, \ - 0x20ab37, \ - 0xc0d012, \ - 0xd4dccd, \ - 0x484baa, \ - 0xf80377, \ - 0x14bd61, \ - 0x78886d, \ - 0xa85c2c, \ - 0x00db70, \ - 0xbcec5d, \ - 0xdc415f, \ - 0x30636b, \ - 0x0c5101, \ - 0x086d41, \ - 0x04d3cf, \ - 0x203cae, \ - 0x748d08, \ - 0xa03be3, \ - 0x186590, \ - 0x0010fa, \ - 0x000502, \ - 0xb8782e, \ - 0xa4d18c, \ - 0xcc25ef, \ - 0x68dbca, \ - 0x044bed, \ - 0x6c8dc1, \ - 0x38cada, \ - 0xf45c89, \ - 0x581faa, \ - 0x24ab81, \ - 0x70cd60, \ - 0x7cc537, \ - 0xc42c03, \ - 0xd83062, \ - 0x40d32d, \ - 0x7c6d62, \ - 0x286ab8, \ - 0x403cfc, \ - 0xb8c75d, \ - 0xe8040b, \ - 0xe4ce8f, \ - 0x3c0754, \ - 0xa46706, \ - 0x80b03d, \ - 0xc83c85, \ - 0xa04ea7, \ - 0x409c28, \ - 0x08e689, \ - 0x4cb199, \ - 0x98d6bb, \ - 0x3cd0f8, \ - 0x7cc3a1, \ - 0x002608, \ - 0x001ec2, \ - 0x001b63, \ - 0x0017f2, \ - 0x0016cb, \ - 0x000393, \ - 0x804971, \ - 0x64e682, \ - 0xb4f7a1, \ - 0x785dc8, \ - 0x48c796, \ - 0x804e70, \ - 0x3880df, \ - 0x1094bb, \ - 0xf01898, \ - 0x48a91c, \ - 0xa056f3, \ - 0x549963, \ - 0x28ff3c, \ - 0x902155, \ - 0x64a769, \ - 0xbccfcc, \ - 0xa4516f, \ - 0x3c8375, \ - 0x149a10, \ - 0x0ce725, \ - 0xc0335e, \ - 0x20a99b, \ - 0x4c0bbe, \ - 0x7c1e52, \ - 0xdcb4c4, \ - 0x001dd8, \ - 0x0017fa, \ - 0x0003ff, \ - 0xf8e079, \ - 0x1430c6, \ - 0xe0757d, \ - 0x9cd35b, \ - 0x60af6d, \ - 0xb85a73, \ - 0x103047, \ - 0x109266, \ - 0xb047bf, \ - 0x7c0bc6, \ - 0x804e81, \ - 0x244b81, \ - 0x50a4c8, \ - 0x8425db, \ - 0xd8c4e9, \ - 0x50c8e5, \ - 0x446d6c, \ - 0x38d40b, \ - 0x647791, \ - 0x781fdb, \ - 0x08fc88, \ - 0x30c7ae, \ - 0x18227e, \ - 0x00f46f, \ - 0x9ce6e7, \ - 0xe498d1, \ - 0x5cca1a, \ - 0x70288b, \ - 0x4849c7, \ - 0x205ef7, \ - 0x182666, \ - 0xc06599, \ - 0xcc07ab, \ - 0xe84e84, \ - 0x50fc9f, \ - 0xe432cb, \ - 0x889b39, \ - 0xbcb1f3, \ - 0x38ece4, \ - 0xccf9e8, \ - 0xf0e77e, \ - 0x5ce8eb, \ - 0xb8d9ce, \ - 0x70f927, \ - 0x301966, \ - 0x28bab5, \ - 0x103b59, \ - 0x6cb7f4, \ - 0x001ee1, \ - 0x0018af, \ - 0xbc72b1, \ - 0x78f7be, \ - 0xf49f54, \ - 0x00214c, \ - 0x001632, \ - 0xd0667b, \ - 0x001377, \ - 0x50b7c3, \ - 0x8018a7, \ - 0x444e1a, \ - 0xe8e5d6, \ - 0x5492be, \ - 0x101dc0, \ - 0x0021d1, \ - 0x68dfdd, \ - 0xc46ab7, \ - 0xfc64ba, \ - 0x2082c0, \ - 0x3480b3, \ - 0x7451ba, \ - 0x64b473, \ - 0xcc2d8c, \ - 0x949aa9, \ - 0x20dbab, \ - 0x5c9960, \ - 0x948bc1, \ - 0x4827ea, \ - 0x388c50, \ - 0xa09347, \ - 0xc8f230, \ - 0x1c77f6, \ - 0xe44790, \ - 0xd4503f, \ - 0x40163b, \ - 0x5c497d, \ - 0xe47dbd, \ - 0x503da1, \ - 0x508569, \ - 0x1077b1, \ - 0x5cf6dc, \ - 0x380195, \ - 0xbc1485, \ - 0x88d50c, \ - 0x947be7, \ - 0x00ec0a, \ - 0x54bd79, \ - 0xdc44b6, \ - 0x1007b6, \ - 0xc0174d, \ - 0xa407b6, \ - 0x149f3c, \ - 0x88b4a6, \ - 0x2c5491, \ - 0x5c70a3, \ - 0x10f96f, \ - 0xf01c13, \ - 0x00aa70, \ - 0xbcf5ac, \ - 0xccfa00, \ - 0xf8a9d0, \ - 0x805a04, \ - 0x5caf06, \ - 0xb81daa, \ - 0x10f1f2, \ - 0x0025e5, \ - 0x0022a9, \ - 0xc49a02, \ - 0x344df7, \ - 0xd41a3f, \ - 0xcc6ea4, \ - 0xa46cf1, \ - 0x0ca8a7, \ - 0x54b802, \ - 0x0469f8, \ - 0xbc6c21, \ - 0xc869cd, \ - 0x80d605, \ - 0x587f57, \ - 0xa4b805, \ - 0x70480f, \ - 0x18f643, \ - 0x748114, \ - 0x18ee69, \ - 0xf0dbe2, \ - 0xb8098a, \ - 0x549f13, \ - 0x2c1f23, \ - 0x507a55, \ - 0x9c35eb, \ - 0xa43135, \ - 0xd0034b, \ - 0xa01828, \ - 0xd0a637, \ - 0xd04f7e, \ - 0xd8bb2c, \ - 0x80be05, \ - 0xe0b52d, \ - 0x68ae20, \ - 0xe8802e, \ - 0x7c0191, \ - 0x9c293f, \ - 0x341298, \ - 0x903c92, \ - 0x24240e, \ - 0xa0999b, \ - 0xe0f847, \ - 0x442a60, \ - 0x1093e9, \ - 0xdc2b61, \ - 0xb8ff61, \ - 0x18e7f4, \ - 0x78ca39, \ - 0x5c5948, \ - 0x60334b, \ - 0x9027e4, \ - 0xd49a20, \ - 0xb09fba, \ - 0x8c006d, \ - 0xc06394, \ - 0x843835, \ - 0xe4c63d, \ - 0x54eaa8, \ - 0xa886dd, \ - 0xaccf5c, \ - 0xf0dbf8, \ - 0x98f0ab, \ - 0xdc9b9c, \ - 0x8c2937, \ - 0xdc86d8, \ - 0xa88e24, \ - 0xd8cf9c, \ - 0x04489a, \ - 0x3c15c2, \ - 0x20c9d0, \ - 0x74e2f5, \ - 0x842999, \ - 0x9c207b, \ - 0x283737, \ - 0x148fc6, \ - 0x28cfda, \ - 0x145a05, \ - 0xa0edcd, \ - 0x1ce62b, \ - 0x3090ab, \ - 0x7073cb, \ - 0xf0cba1, \ - 0x045453, \ - 0x40b395, \ - 0x008865, \ - 0x30f7c5, \ - 0x20768f, \ - 0xc0ccf8, \ - 0x80ed2c, \ - 0xe8b2ac, \ - 0x8489ad, \ - 0x8c8ef2, \ - 0xf40f24, \ - 0x84a134, \ - 0x1c9148, \ - 0x5cf7e6, \ - 0xa0d795, \ - 0xcc088d, \ - 0x00b362, \ - 0xf86214, \ - 0xb0702d, \ - 0xd0c5f3, \ - 0x60f445, \ - 0x5082d5, \ - 0x9c84bf, \ - 0x48bf6b, \ - 0x245ba7, \ - 0xbca920, \ - 0xb019c6, \ - 0x58e28f, \ - 0xac1f74, \ - 0x080007, \ - 0xe425e7, \ - 0x28cfe9, \ - 0x9060f1, \ - 0x741bb2, \ - 0x28ed6a, \ - 0x34ab37, \ - 0x60a37d, \ - 0x0056cd, \ - 0x7081eb, \ - 0x086698, \ - 0x24f677, \ - 0x7867d7, \ - 0x5433cb, \ - 0xd0d2b0, \ - 0xd88f76, \ - 0x3c2ef9, \ - 0xdc56e7, \ - 0x347c25, \ - 0xd4909c, \ - 0x041e64, \ - 0x0026b0, \ - 0x00264a, \ - 0x0025bc, \ - 0x0023df, \ - 0x002241, \ - 0x000a95, \ - 0x38e60a, \ - 0x24181d, \ - 0xf4c248, \ - 0xa8515b, \ - 0xc048e6, \ - 0xd07714, \ - 0x749eaf, \ - 0xb841a4, \ - 0xf895ea, \ - 0x50a67f, \ - 0x647033, \ - 0x846878 \ - }; -#endif diff --git a/src/wifisniffer.cpp b/src/wifisniffer.cpp deleted file mode 100644 index deb73e60..00000000 --- a/src/wifisniffer.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// Basic Config -#include "main.h" -#include "globals.h" - -// ESP32 Functions -#include - -#ifdef VENDORFILTER - #include - #include - #include "vendor_array.h" -#endif - -// Local logging tag -static const char *TAG = "wifisniffer"; - -// function defined in rokkithash.cpp -uint32_t rokkit(const char * , int ); - -static wifi_country_t wifi_country = {.cc=WIFI_MY_COUNTRY, .schan=WIFI_CHANNEL_MIN, .nchan=WIFI_CHANNEL_MAX, .policy=WIFI_COUNTRY_POLICY_MANUAL}; - -typedef struct { - unsigned frame_ctrl:16; - unsigned duration_id:16; - uint8_t addr1[6]; /* receiver address */ - uint8_t addr2[6]; /* sender address */ - uint8_t addr3[6]; /* filtering address */ - unsigned sequence_ctrl:16; - uint8_t addr4[6]; /* optional */ -} wifi_ieee80211_mac_hdr_t; - -typedef struct { - wifi_ieee80211_mac_hdr_t hdr; - uint8_t payload[0]; /* network data ended with 4 bytes csum (CRC32) */ -} wifi_ieee80211_packet_t; - -extern void wifi_sniffer_init(void); -extern void wifi_sniffer_set_channel(uint8_t channel); -extern void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type); - -void wifi_sniffer_init(void) { - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - cfg.nvs_enable = 0; // we don't need any wifi settings from NVRAM - wifi_promiscuous_filter_t filter = {.filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT}; // we need only MGMT frames - ESP_ERROR_CHECK(esp_wifi_init(&cfg)); - ESP_ERROR_CHECK(esp_wifi_set_country(&wifi_country)); - ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM) ); - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_NULL) ); - ESP_ERROR_CHECK(esp_wifi_set_promiscuous_filter(&filter)); // set MAC frame filter - ESP_ERROR_CHECK(esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler)); - ESP_ERROR_CHECK(esp_wifi_set_promiscuous(true)); -} - -void wifi_sniffer_set_channel(uint8_t channel) { - esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE); -} - -void wifi_sniffer_packet_handler(void* buff, wifi_promiscuous_pkt_type_t type) { - const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buff; - const wifi_ieee80211_packet_t *ipkt = (wifi_ieee80211_packet_t *)ppkt->payload; - const wifi_ieee80211_mac_hdr_t *hdr = &ipkt->hdr; - char counter [11]; // uint32_t -> 4 byte -> 10 decimals + '0' terminator -> 11 chars - char macbuf [21]; // uint64_t -> 8 byte -> 20 decimals + '0' terminator -> 21 chars - uint32_t hashedmac, vendor2int; - uint64_t addr2int; - std::pair::iterator, bool> newmac; - - if (( cfg.rssilimit == 0 ) || (ppkt->rx_ctrl.rssi > cfg.rssilimit )) { // rssi is negative value - addr2int = ( (uint64_t)hdr->addr2[0] ) | ( (uint64_t)hdr->addr2[1] << 8 ) | ( (uint64_t)hdr->addr2[2] << 16 ) | \ - ( (uint64_t)hdr->addr2[3] << 24 ) | ( (uint64_t)hdr->addr2[4] << 32 ) | ( (uint64_t)hdr->addr2[5] << 40 ); - -#ifdef VENDORFILTER - vendor2int = ( (uint32_t)hdr->addr2[2] ) | ( (uint32_t)hdr->addr2[1] << 8 ) | ( (uint32_t)hdr->addr2[0] << 16 ); - - if ( std::find(vendors.begin(), vendors.end(), vendor2int) != vendors.end() ) { -#endif - - //if (!(addr2int & WIFI_MAC_FILTER_MASK)) { // filter local and group MACs - - // salt and hash MAC, and if new unique one, store hash in container and increment counter on display - addr2int <<= 8; - addr2int += salt; // append salt value to MAC before hashing it - itoa(addr2int, macbuf, 10); // convert 64 bit MAC to base 10 decimal string - hashedmac = rokkit(macbuf, 10); // hash MAC for privacy, use 10 chars to fit in uint32_t container - newmac = macs.insert(hashedmac); // store hashed MAC if new unique - if (newmac.second) { // first time seen MAC - macnum++; // increment MAC counter - itoa(macnum, counter, 10); // base 10 decimal counter value - u8x8.draw2x2String(0, 0, counter); - ESP_LOGI(TAG, "RSSI %04d -> Hash %010u -> #%04i", ppkt->rx_ctrl.rssi, hashedmac, macnum); - } - else // already seen MAC - ESP_LOGI(TAG, "RSSI %04d -> already seen", ppkt->rx_ctrl.rssi); - //} - -#ifdef VENDORFILTER - } -#endif - } else - ESP_LOGI(TAG, "RSSI %04d -> ignoring (limit: %i)", ppkt->rx_ctrl.rssi, cfg.rssilimit); - - yield(); -}