CWA scanner minor modifications
This commit is contained in:
parent
c014824667
commit
2f0b3c8ef2
@ -9,7 +9,7 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
bool cwa_init(void);
|
bool cwa_init(void);
|
||||||
bool cwa_mac_add(uint8_t *);
|
bool cwa_mac_add(uint16_t hashedmac);
|
||||||
void cwa_clear(void);
|
void cwa_clear(void);
|
||||||
uint16_t cwa_report(void);
|
uint16_t cwa_report(void);
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
uint16_t get_salt(void);
|
uint16_t get_salt(void);
|
||||||
uint64_t macConvert(uint8_t *paddr);
|
uint64_t macConvert(uint8_t *paddr);
|
||||||
bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type);
|
uint16_t mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type);
|
||||||
void printKey(const char *name, const uint8_t *key, uint8_t len, bool lsb);
|
void printKey(const char *name, const uint8_t *key, uint8_t len, bool lsb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -114,7 +114,9 @@ const char *btsig_gap_type(uint32_t gap_type) {
|
|||||||
// using IRAM_:ATTR here to speed up callback function
|
// using IRAM_:ATTR here to speed up callback function
|
||||||
IRAM_ATTR void gap_callback_handler(esp_gap_ble_cb_event_t event,
|
IRAM_ATTR void gap_callback_handler(esp_gap_ble_cb_event_t event,
|
||||||
esp_ble_gap_cb_param_t *param) {
|
esp_ble_gap_cb_param_t *param) {
|
||||||
|
|
||||||
esp_ble_gap_cb_param_t *p = (esp_ble_gap_cb_param_t *)param;
|
esp_ble_gap_cb_param_t *p = (esp_ble_gap_cb_param_t *)param;
|
||||||
|
uint16_t hashedmac = 0;
|
||||||
|
|
||||||
ESP_LOGV(TAG, "BT payload rcvd -> type: 0x%.2x -> %s", *p->scan_rst.ble_adv,
|
ESP_LOGV(TAG, "BT payload rcvd -> type: 0x%.2x -> %s", *p->scan_rst.ble_adv,
|
||||||
btsig_gap_type(*p->scan_rst.ble_adv));
|
btsig_gap_type(*p->scan_rst.ble_adv));
|
||||||
@ -151,24 +153,20 @@ IRAM_ATTR void gap_callback_handler(esp_gap_ble_cb_event_t event,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if (VENDORFILTER)
|
#if (VENDORFILTER)
|
||||||
|
|
||||||
if ((p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RANDOM) ||
|
if ((p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RANDOM) ||
|
||||||
(p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RPA_RANDOM)) {
|
(p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RPA_RANDOM)) {
|
||||||
ESP_LOGV(TAG, "BT device filtered");
|
ESP_LOGV(TAG, "BT device filtered");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// add this device and show new count total if it was not previously added
|
// hash and add this device and show new count total if it was not previously added
|
||||||
mac_add((uint8_t *)p->scan_rst.bda, p->scan_rst.rssi, MAC_SNIFF_BLE);
|
hashedmac = mac_add((uint8_t *)p->scan_rst.bda, p->scan_rst.rssi, MAC_SNIFF_BLE);
|
||||||
|
|
||||||
#if (COUNT_ENS)
|
#if (COUNT_ENS)
|
||||||
// we can call the ens functions now using hashed max-value in mac_add()
|
|
||||||
|
|
||||||
// check for ens signature
|
// check for ens signature
|
||||||
if (0 == strncmp((const char *)p->scan_rst.ble_adv, ensMagicBytes, 4)) {
|
if (0 == strncmp((const char *)p->scan_rst.ble_adv, ensMagicBytes, 4)) {
|
||||||
cwa_mac_add(p->scan_rst.bda);
|
cwa_mac_add(hashedmac);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -15,10 +15,6 @@ static const char TAG[] = __FILE__;
|
|||||||
|
|
||||||
#include "corona.h"
|
#include "corona.h"
|
||||||
|
|
||||||
// taken from macsniff.cpp
|
|
||||||
extern uint16_t salt;
|
|
||||||
extern uint16_t hashedmac;
|
|
||||||
|
|
||||||
// When to forget old senders.
|
// When to forget old senders.
|
||||||
#define FORGET_AFTER_MINUTES 2
|
#define FORGET_AFTER_MINUTES 2
|
||||||
|
|
||||||
@ -27,15 +23,16 @@ static std::map<uint16_t, unsigned long> cwaSeenNotifiers;
|
|||||||
|
|
||||||
// Remove notifiers last seen over FORGET_AFTER_MINUTES ago.
|
// Remove notifiers last seen over FORGET_AFTER_MINUTES ago.
|
||||||
void cwa_clear() {
|
void cwa_clear() {
|
||||||
ESP_LOGD(TAG, "CWA: forget old notifier: %d", cwaSeenNotifiers.size());
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#ifdef SOME_FORM_OF_DEBUG
|
|
||||||
|
#ifdef SOME_FORM_OF_DEBUG
|
||||||
|
ESP_LOGD(TAG, "CWA: forget old notifier: %d", cwaSeenNotifiers.size());
|
||||||
for (auto const ¬ifier : cwaSeenNotifiers) {
|
for (auto const ¬ifier : cwaSeenNotifiers) {
|
||||||
ESP_LOGD(TAG, "CWA forget <%X>", notifier.first);
|
ESP_LOGD(TAG, "CWA forget <%X>", notifier.first);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// clear everything, otherwise we would count the same device again, as in the
|
// clear everything, otherwise we would count the same device again, as in the
|
||||||
@ -51,30 +48,22 @@ bool cwa_init(void) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// similar to mac_add(), found in macsniff.cpp
|
// similar to mac_add(), found in macsniff.cpp, for comments look into this function
|
||||||
// for comments pls. look into this function
|
bool cwa_mac_add(uint16_t hashedmac) {
|
||||||
bool cwa_mac_add(uint8_t *paddr) {
|
|
||||||
|
|
||||||
// are we too early?
|
|
||||||
if (!hashedmac)
|
|
||||||
return false; // YES -> return
|
|
||||||
|
|
||||||
bool added = false;
|
bool added = false;
|
||||||
ESP_LOGD(TAG, "Device address (bda): %02x:%02x:%02x:%02x:%02x:%02x",
|
|
||||||
BT_BD_ADDR_HEX(paddr));
|
|
||||||
|
|
||||||
ESP_LOGD(TAG, "hashed ENS mac = %X, ENS count = %d (total=%d)", hashedmac,
|
ESP_LOGD(TAG, "hashed ENS mac = %X, ENS count = %d (total=%d)", hashedmac,
|
||||||
cwaSeenNotifiers.count(hashedmac), cwaSeenNotifiers.size());
|
cwaSeenNotifiers.count(hashedmac), cwaSeenNotifiers.size());
|
||||||
added = !(cwaSeenNotifiers.count(hashedmac) > 0);
|
added = !(cwaSeenNotifiers.count(hashedmac) > 0);
|
||||||
|
|
||||||
// Count only if this ENS MAC was not yet seen
|
// Count only if this ENS MAC was not yet seen
|
||||||
if (added) {
|
if (added) {
|
||||||
|
cwaSeenNotifiers[hashedmac] = millis(); // last seen at ....
|
||||||
ESP_LOGD(TAG, "added device with active ENS");
|
ESP_LOGD(TAG, "added device with active ENS");
|
||||||
}
|
}
|
||||||
|
|
||||||
cwaSeenNotifiers[hashedmac] = millis(); // last seen at ....
|
// True if ENS MAC was new
|
||||||
|
|
||||||
// True if MAC WiFi/BLE was new
|
|
||||||
return added;
|
return added;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,9 +10,7 @@
|
|||||||
// Local logging tag
|
// Local logging tag
|
||||||
static const char TAG[] = __FILE__;
|
static const char TAG[] = __FILE__;
|
||||||
|
|
||||||
// used here and in corona.cpp
|
|
||||||
uint16_t salt = 0;
|
uint16_t salt = 0;
|
||||||
uint16_t hashedmac = 0; // temporary buffer for generated hash value
|
|
||||||
|
|
||||||
uint16_t get_salt(void) {
|
uint16_t get_salt(void) {
|
||||||
salt = (uint16_t)random(65536); // get new 16bit random for salting hashes
|
salt = (uint16_t)random(65536); // get new 16bit random for salting hashes
|
||||||
@ -45,12 +43,13 @@ uint64_t macConvert(uint8_t *paddr) {
|
|||||||
return (__builtin_bswap64(*mac) >> 16);
|
return (__builtin_bswap64(*mac) >> 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
uint16_t mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
||||||
|
|
||||||
if (!salt) // ensure we have salt (appears after radio is turned on)
|
if (salt == 0) // ensure we have salt (appears after radio is turned on)
|
||||||
return false;
|
return 0;
|
||||||
|
|
||||||
char buff[10]; // temporary buffer for printf
|
uint16_t hashedmac = 0; // temporary buffer for generated hash value
|
||||||
|
char buff[10]; // temporary buffer for printf
|
||||||
bool added = false;
|
bool added = false;
|
||||||
int8_t beaconID; // beacon number in test monitor mode
|
int8_t beaconID; // beacon number in test monitor mode
|
||||||
uint32_t *mac; // temporary buffer for shortened MAC
|
uint32_t *mac; // temporary buffer for shortened MAC
|
||||||
@ -140,7 +139,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// True if MAC WiFi/BLE was new
|
// if a new and unique Wifi or BLE mac was counted, returs hash of this mac,
|
||||||
return added; // function returns bool if a new and unique Wifi or BLE mac was
|
// else 0
|
||||||
// counted (true) or not (false)
|
return hashedmac;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
// Corona Exposure Notification Service(ENS) counter
|
// Corona Exposure Notification Service(ENS) counter
|
||||||
#define COUNT_ENS 1 // count found number of devices which advertise Exposure Notification Service
|
#define COUNT_ENS 1 // count found number of devices which advertise Exposure Notification Service
|
||||||
// set to 0 if you do not want to count these devices
|
// set to 0 if you do not want to enable this function
|
||||||
|
|
||||||
// for additional sensors (added by some user)
|
// for additional sensors (added by some user)
|
||||||
#define HAS_SENSOR_1 1 // set to 1 if you want to count CWAs
|
#define HAS_SENSOR_1 1 // set to 1 if you want to count CWAs
|
||||||
|
Loading…
Reference in New Issue
Block a user