beacon monitor mode bugfix
This commit is contained in:
		
							parent
							
								
									4ec63085ca
								
							
						
					
					
						commit
						4070d5231a
					
				@ -1,5 +1,5 @@
 | 
				
			|||||||
std::array<uint32_t, 5>::iterator it;
 | 
					std::array<uint32_t, 5>::iterator it;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::array<uint32_t, 5> beacons = {0x000000000000, 0x000000000000,
 | 
					std::array<uint32_t, 5> beacons = {0x000000000000, 0x111111111111,
 | 
				
			||||||
                                   0x000000000000, 0x000000000000,
 | 
					                                   0x123456789000, 0xaaaaaaaaaaaa,
 | 
				
			||||||
                                   0x000000000000};
 | 
					                                   0x0101010101010};
 | 
				
			||||||
@ -42,15 +42,18 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  char buff[16]; // temporary buffer for printf
 | 
					  char buff[16]; // temporary buffer for printf
 | 
				
			||||||
  bool added = false;
 | 
					  bool added = false;
 | 
				
			||||||
  uint32_t addr2int, vendor2int; // temporary buffer for MAC and Vendor OUI
 | 
					  uint32_t addr2int, vendor2int,
 | 
				
			||||||
  uint16_t hashedmac;            // temporary buffer for generated hash value
 | 
					      tempmac;          // temporary buffer for MAC and Vendor OUI
 | 
				
			||||||
  uint8_t beacon = 0;            // beacon number in test monitor mode
 | 
					  uint16_t hashedmac;   // temporary buffer for generated hash value
 | 
				
			||||||
 | 
					  uint8_t beaconID = 0; // beacon number in test monitor mode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // only last 3 MAC Address bytes are used for MAC address anonymization
 | 
					  // only last 3 MAC Address bytes are used for MAC address anonymization
 | 
				
			||||||
  // but since it's uint32 we take 4 bytes to avoid 1st value to be 0
 | 
					  // but since it's uint32 we take 4 bytes to avoid 1st value to be 0
 | 
				
			||||||
  addr2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[3] << 8) |
 | 
					  addr2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[3] << 8) |
 | 
				
			||||||
             ((uint32_t)paddr[4] << 16) | ((uint32_t)paddr[5] << 24);
 | 
					             ((uint32_t)paddr[4] << 16) | ((uint32_t)paddr[5] << 24);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  tempmac = addr2int; // temporary store mac for beacon check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef VENDORFILTER
 | 
					#ifdef VENDORFILTER
 | 
				
			||||||
  vendor2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[1] << 8) |
 | 
					  vendor2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[1] << 8) |
 | 
				
			||||||
               ((uint32_t)paddr[0] << 16);
 | 
					               ((uint32_t)paddr[0] << 16);
 | 
				
			||||||
@ -63,16 +66,6 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
 | 
				
			|||||||
    // and increment counter on display
 | 
					    // and increment counter on display
 | 
				
			||||||
    // https://en.wikipedia.org/wiki/MAC_Address_Anonymization
 | 
					    // https://en.wikipedia.org/wiki/MAC_Address_Anonymization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // in test monitor mode check if MAC is a known beacon
 | 
					 | 
				
			||||||
    if (cfg.monitormode) {
 | 
					 | 
				
			||||||
      beacon = isBeacon(addr2int);
 | 
					 | 
				
			||||||
      if (beacon) {
 | 
					 | 
				
			||||||
        payload.reset();
 | 
					 | 
				
			||||||
        payload.addAlarm(rssi, beacon);
 | 
					 | 
				
			||||||
        senddata(BEACONPORT);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    addr2int += (uint32_t)salt; // add 16-bit salt to pseudo MAC
 | 
					    addr2int += (uint32_t)salt; // add 16-bit salt to pseudo MAC
 | 
				
			||||||
    snprintf(
 | 
					    snprintf(
 | 
				
			||||||
        buff, sizeof(buff), "%08X",
 | 
					        buff, sizeof(buff), "%08X",
 | 
				
			||||||
@ -85,6 +78,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Count only if MAC was not yet seen
 | 
					    // Count only if MAC was not yet seen
 | 
				
			||||||
    if (added) {
 | 
					    if (added) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // increment counter and one blink led
 | 
					      // increment counter and one blink led
 | 
				
			||||||
      if (sniff_type == MAC_SNIFF_WIFI) {
 | 
					      if (sniff_type == MAC_SNIFF_WIFI) {
 | 
				
			||||||
        macs_wifi++; // increment Wifi MACs counter
 | 
					        macs_wifi++; // increment Wifi MACs counter
 | 
				
			||||||
@ -100,7 +94,18 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					      // in beacon monitor mode check if seen MAC is a known beacon
 | 
				
			||||||
 | 
					      if (cfg.monitormode) {
 | 
				
			||||||
 | 
					        beaconID = isBeacon(tempmac);
 | 
				
			||||||
 | 
					        if (beaconID) {
 | 
				
			||||||
 | 
					          payload.reset();
 | 
				
			||||||
 | 
					          payload.addAlarm(rssi, beaconID);
 | 
				
			||||||
 | 
					          senddata(BEACONPORT);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } // added
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Log scan result
 | 
					    // Log scan result
 | 
				
			||||||
    ESP_LOGD(TAG,
 | 
					    ESP_LOGD(TAG,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user