Compare commits

..

38 Commits

Author SHA1 Message Date
Just Call Me Koko
a7bc611ede Merge pull request #1089 from justcallmekoko/develop
Add soft display buffer cap
2026-01-28 16:03:59 -05:00
Just Call Me Koko
b0a823ac6b Merge pull request #1086 from justcallmekoko/develop
Update version number
2026-01-27 17:36:50 -05:00
Just Call Me Koko
1e70c04894 Merge pull request #1085 from justcallmekoko/develop
Fix SD support for v7
2026-01-27 16:03:51 -05:00
Just Call Me Koko
069ff0a475 Merge pull request #1084 from justcallmekoko/develop
Clear some space
2026-01-27 09:27:50 -05:00
Just Call Me Koko
4fb65cd186 Merge pull request #1081 from justcallmekoko/develop
Remove verbose print statements
2026-01-25 17:46:33 -05:00
Just Call Me Koko
44f51d2f70 Merge pull request #1077 from justcallmekoko/develop
Add prints
2026-01-25 01:18:47 -05:00
Just Call Me Koko
a1b02691d0 Merge pull request #1075 from justcallmekoko/develop
Update all standard ESP32 NimBLE
2026-01-23 16:01:50 -05:00
Just Call Me Koko
a54a311995 Merge pull request #1073 from justcallmekoko/develop
Fix airtag sniffing crash
2026-01-22 21:09:52 -05:00
Just Call Me Koko
ebcfc9392e Merge pull request #1072 from justcallmekoko/develop
Bluetooth can deinit on ESP32 C5
2026-01-22 09:48:27 -05:00
Just Call Me Koko
64f6b4c582 Merge pull request #1071 from justcallmekoko/develop
Update NimBLE for ESP32-C5
2026-01-22 08:42:36 -05:00
Just Call Me Koko
467c58fef3 Merge pull request #1067 from justcallmekoko/develop
Add commands for SAE sniff and attack
2026-01-20 11:38:41 -05:00
Just Call Me Koko
2430db99b3 Merge pull request #1066 from justcallmekoko/develop
Output SAE attack stats
2026-01-19 22:54:30 -05:00
Just Call Me Koko
0196c00220 Merge pull request #1065 from justcallmekoko/develop
Add SAE sniff and SAE spam attack
2026-01-19 20:24:55 -05:00
Just Call Me Koko
af9938f8eb Merge pull request #1059 from justcallmekoko/develop
Capture and parse SAE commit frames
2026-01-17 10:26:37 -05:00
Just Call Me Koko
0ba3d0f60a Merge pull request #1056 from justcallmekoko/develop
Remove v7.1 from build list
2026-01-15 16:47:16 -05:00
Just Call Me Koko
140668448f Merge pull request #1055 from justcallmekoko/develop
Remove continuous BT wardrive
2026-01-14 10:03:10 -05:00
Just Call Me Koko
961bcb6cf5 Merge pull request #1052 from justcallmekoko/develop
Fix PCAPs not saving for MAC tracker
2026-01-13 15:42:46 -05:00
Just Call Me Koko
774d5f0707 Merge pull request #1050 from justcallmekoko/develop
Update Sour Apple
2026-01-13 08:13:54 -05:00
Just Call Me Koko
07a684a03e Merge pull request #1045 from justcallmekoko/develop
Following MACs save PCAPs
2026-01-11 14:24:16 -05:00
Just Call Me Koko
e3fe40ede0 Merge pull request #1043 from justcallmekoko/develop
Fix distance threshold
2026-01-11 00:39:49 -05:00
Just Call Me Koko
8e0ed07483 Merge pull request #1042 from justcallmekoko/develop
Oopsie
2026-01-09 23:02:25 -05:00
Just Call Me Koko
249ba6eabe Merge pull request #1041 from justcallmekoko/develop
MAC track BLE and revamp wardrive UI
2026-01-09 17:41:00 -05:00
Just Call Me Koko
88762063ff Merge pull request #1040 from justcallmekoko/develop
Add CLI command for MAC tracking
2026-01-08 12:45:44 -05:00
Just Call Me Koko
9d2a1ab3aa Merge pull request #1036 from justcallmekoko/develop
GPS now operates at 115200 baud
2026-01-07 17:51:54 -05:00
Just Call Me Koko
a20b25a39c Merge pull request #1034 from justcallmekoko/develop
Fix eviction criteria and work mini displays
2026-01-06 16:35:03 -05:00
Just Call Me Koko
a785a3b125 Merge pull request #1033 from justcallmekoko/develop
Add MAC tracking backend
2026-01-05 20:55:24 -05:00
Just Call Me Koko
380875d32f Merge pull request #1029 from justcallmekoko/develop
Update version number
2026-01-03 14:50:37 -05:00
Just Call Me Koko
d03c079080 Merge pull request #1028 from justcallmekoko/develop
Fix wardriving function on CLI
2026-01-03 14:29:58 -05:00
Just Call Me Koko
8ef5cf3b92 Merge pull request #1015 from justcallmekoko/develop
Faster display buffer
2025-12-13 14:48:34 -05:00
Just Call Me Koko
1dd5502c1d Merge pull request #1012 from justcallmekoko/develop
Fix crash during BT wardrive
2025-12-12 18:11:10 -05:00
Just Call Me Koko
f5375eedaf Merge pull request #1006 from justcallmekoko/develop
Wardriving is asynchronous now
2025-12-08 16:45:31 -05:00
Just Call Me Koko
86e2fb206a Merge pull request #1005 from justcallmekoko/develop
Add wifi to flock wardrive
2025-12-08 15:10:53 -05:00
Just Call Me Koko
1d419605f7 Merge pull request #1001 from justcallmekoko/develop
Fix menu navigation for back button
2025-12-04 18:36:50 -05:00
Just Call Me Koko
dfd556da30 Merge pull request #999 from justcallmekoko/develop
Update NimBLE version in actions
2025-12-02 01:09:42 -05:00
Just Call Me Koko
03623e2985 Merge pull request #998 from justcallmekoko/develop
Update arduino esp32
2025-12-02 00:14:12 -05:00
Just Call Me Koko
4e7f48a036 Merge pull request #997 from justcallmekoko/develop
Add 5ghz channels for c5 packet injection
2025-12-01 18:44:52 -05:00
Just Call Me Koko
722b9ad88e Merge pull request #996 from justcallmekoko/develop
Merge develop
2025-12-01 01:44:59 -05:00
Just Call Me Koko
0a5e200294 Merge pull request #990 from justcallmekoko/develop
Add Flock wardriving
2025-11-24 13:27:21 -05:00
3 changed files with 22 additions and 35 deletions

View File

@@ -9,8 +9,8 @@
static const uint8_t *g_filter_bssid = nullptr;
uint8_t *current_act = nullptr;
MacEntry WiFiScan::mac_entries[mac_history_len_half];
uint8_t WiFiScan::mac_entry_state[mac_history_len_half];
MacEntry WiFiScan::mac_entries[mac_history_len];
uint8_t WiFiScan::mac_entry_state[mac_history_len];
int num_beacon = 0;
int num_deauth = 0;
@@ -1721,7 +1721,7 @@ void WiFiScan::RunSetup() {
mac_history = (struct mac_addr*) ps_malloc(mac_history_len * sizeof(struct mac_addr));
#endif
for (int i = 0; i < mac_history_len_half; i++)
for (int i = 0; i < mac_history_len; i++)
mac_entry_state[i] = 0;
#ifdef HAS_BT
@@ -1762,8 +1762,6 @@ void WiFiScan::RunSetup() {
this->shutdownBLE();
Serial.println("Initializing WiFi...");
esp_wifi_init(&cfg);
#ifdef HAS_IDF_3
esp_wifi_set_country(&country);
@@ -1775,9 +1773,7 @@ void WiFiScan::RunSetup() {
esp_wifi_get_mac(WIFI_IF_STA, this->sta_mac);
delay(10);
esp_wifi_get_mac(WIFI_IF_AP, this->ap_mac);
Serial.println("Setting MAC...");
this->setMac();
Serial.println("Shutting down WiFi...");
this->shutdownWiFi();
#endif
@@ -2364,10 +2360,6 @@ bool WiFiScan::shutdownBLE() {
pBLEScan->clearResults();
delay(100);
Serial.println("Deinitializing NimBLE...");
//#ifndef HAS_DUAL_BAND
NimBLEDevice::deinit();
//#endif
@@ -2637,7 +2629,7 @@ int16_t WiFiScan::seen_mac_int(unsigned char* mac, bool simple) {
tmp[x] = mac[x];
}
for (int x = 0; x < mac_history_len_half; x++) {
for (int x = 0; x < mac_history_len; x++) {
if (this->mac_cmp(tmp, mac_entries[x].mac)) {
return x;
}
@@ -2658,12 +2650,12 @@ inline uint32_t WiFiScan::hash_mac(const uint8_t mac[6]) {
int WiFiScan::update_mac_entry(const uint8_t mac[6], int8_t rssi, bool bt) {
const uint32_t now_ms = millis();
const uint32_t start_idx = hash_mac(mac) & (mac_history_len_half - 1);
const uint32_t start_idx = hash_mac(mac) & (mac_history_len - 1);
int32_t first_tombstone = -1;
for (uint32_t probe = 0; probe < mac_history_len_half; probe++) {
const uint32_t idx = (start_idx + probe) & (mac_history_len_half - 1);
for (uint32_t probe = 0; probe < mac_history_len; probe++) {
const uint32_t idx = (start_idx + probe) & (mac_history_len - 1);
switch (mac_entry_state[idx]) {
@@ -2699,7 +2691,7 @@ int WiFiScan::update_mac_entry(const uint8_t mac[6], int8_t rssi, bool bt) {
mac_entries[idx].rssi = rssi;
return idx + mac_history_len_half;
return idx + mac_history_len;
}
break;
}
@@ -2737,7 +2729,7 @@ void WiFiScan::evict_and_insert(const uint8_t mac[6], uint32_t now_ms) {
const uint32_t EVICT_AGE_MS = TRACK_EVICT_SEC * 1000UL;
// 1) Prefer reusing a tombstone if any exist.
for (uint32_t i = 0; i < mac_history_len_half; i++) {
for (uint32_t i = 0; i < mac_history_len; i++) {
if (mac_entry_state[i] == TOMBSTONE_ENTRY) {
insert_mac_entry(i, mac, now_ms);
return;
@@ -2754,7 +2746,7 @@ void WiFiScan::evict_and_insert(const uint8_t mac[6], uint32_t now_ms) {
uint16_t victim_any_frames = 0xFFFF;
uint32_t victim_any_age = 0;
for (uint32_t i = 0; i < mac_history_len_half; i++) {
for (uint32_t i = 0; i < mac_history_len; i++) {
if (mac_entry_state[i] != VALID_ENTRY) continue;
const uint32_t age = (uint32_t)(now_ms - mac_entries[i].last_seen_ms);
@@ -2890,7 +2882,7 @@ uint8_t WiFiScan::build_top10_for_ui(MacEntry* out_top10, MacSortMode mode) {
}
};
for (uint32_t i = 0; i < mac_history_len_half; i++) {
for (uint32_t i = 0; i < mac_history_len; i++) {
if (mac_entry_state[i] != VALID_ENTRY)
continue;
@@ -5038,7 +5030,7 @@ void WiFiScan::RunStationScan(uint8_t scan_mode, uint16_t color)
display_obj.print_delay_2 = 10;
display_obj.initScrollValues(true);
display_obj.tft.setTextWrap(false);
display_obj.tft.setTextColor(TFT_BLACK, color);
display_obj.tft.setTextColor(TFT_WHITE, color);
#ifdef HAS_FULL_SCREEN
display_obj.tft.fillRect(0,16,TFT_WIDTH,16, color);
display_obj.tft.drawCentreString(text_table1[59],TFT_WIDTH / 2,16,2);
@@ -5319,8 +5311,6 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
display_obj.tft.drawCentreString(text_table4[40],TFT_WIDTH / 2,16,2);
else if (scan_mode == WIFI_SCAN_DETECT_FOLLOW)
display_obj.tft.drawCentreString("MAC Monitor",TFT_WIDTH / 2,16,2);
else if (scan_mode == WIFI_SCAN_STATION_WAR_DRIVE)
display_obj.tft.drawCentreString("Station Wardrive",TFT_WIDTH / 2,16,2);
else {
Serial.println(F("Starting WiFi sniff for Flock..."));
display_obj.tft.drawCentreString("Flock Sniff",TFT_WIDTH / 2,16,2);
@@ -8085,12 +8075,12 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
else if (wifi_scan_obj.currentScanMode == WIFI_SCAN_DETECT_FOLLOW) {
int frame_check = wifi_scan_obj.update_mac_entry(src_addr, snifferPacket->rx_ctrl.rssi);
if (frame_check >= mac_history_len_half) {
if (frame_check >= mac_history_len) {
int32_t dloc = 0;
bool is_following = is_following_candidate_light(wifi_scan_obj.mac_entries[frame_check - mac_history_len_half], millis(), &dloc);
bool is_following = is_following_candidate_light(wifi_scan_obj.mac_entries[frame_check - mac_history_len], millis(), &dloc);
if (is_following) {
wifi_scan_obj.mac_entries[frame_check - mac_history_len_half].dloc = dloc;
wifi_scan_obj.mac_entries[frame_check - mac_history_len_half].following = is_following;
wifi_scan_obj.mac_entries[frame_check - mac_history_len].dloc = dloc;
wifi_scan_obj.mac_entries[frame_check - mac_history_len].following = is_following;
buffer_obj.append(snifferPacket, len);
}
}

View File

@@ -662,8 +662,8 @@ class WiFiScan
volatile bool bt_pending_clear = false;
static MacEntry mac_entries[mac_history_len_half];
static uint8_t mac_entry_state[mac_history_len_half];
static MacEntry mac_entries[mac_history_len];
static uint8_t mac_entry_state[mac_history_len];
// Stuff for RAW stats
uint32_t mgmt_frames = 0;

View File

@@ -155,7 +155,7 @@
#define HAS_BT
#define HAS_BT_REMOTE
#define HAS_BUTTONS
//#define HAS_NEOPIXEL_LED
#define HAS_NEOPIXEL_LED
//#define HAS_PWR_MGMT
#define HAS_SCREEN
#define HAS_FULL_SCREEN
@@ -2334,8 +2334,6 @@
#define mac_history_len 100
#endif
#define mac_history_len_half (mac_history_len / 2)
#if defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
#define GPS_SERIAL_INDEX 2
#define GPS_TX 4
@@ -2411,7 +2409,6 @@
#endif
#else
#define mac_history_len 100
#define mac_history_len_half (mac_history_len / 2)
#endif
//// END GPS STUFF
@@ -2522,9 +2519,9 @@
#ifdef HAS_PSRAM
#define BUF_SIZE 8 * 1024 // Had to reduce buffer size to save RAM. GG @spacehuhn
#define SNAP_LEN 1 * 4096 // max len of each recieved packet
//#elif !defined(HAS_ILI9341)
// #define BUF_SIZE 8 * 1024 // Had to reduce buffer size to save RAM. GG @spacehuhn
// #define SNAP_LEN 4096 // max len of each recieved packet
#elif !defined(HAS_ILI9341)
#define BUF_SIZE 8 * 1024 // Had to reduce buffer size to save RAM. GG @spacehuhn
#define SNAP_LEN 4096 // max len of each recieved packet
#else
#define BUF_SIZE 3 * 1024 // Had to reduce buffer size to save RAM. GG @spacehuhn
#define SNAP_LEN 2324 // max len of each recieved packet