From 0a2c689bfe6718ce6b5c606ff1e7bd1bddd434e6 Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Mon, 29 Jun 2026 14:37:25 -0400 Subject: [PATCH] Update foxhunt for wifi --- esp32_marauder/MenuFunctions.cpp | 28 +++++++++++++++- esp32_marauder/WiFiScan.cpp | 56 +++++++++++++++++++++++++++++++- esp32_marauder/configs.h | 2 +- 3 files changed, 83 insertions(+), 3 deletions(-) diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index ab4c5c1..1f86d5f 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -1845,10 +1845,36 @@ void MenuFunctions::RunSetup() this->drawStatusBar(); wifi_scan_obj.StartScan(WIFI_SCAN_AP_STA, 0x97e0); }); - this->addNodes(&wifiSnifferMenu, "Fox Hunt", TFTCYAN, PACKET_MONITOR, [this]() { + /*this->addNodes(&wifiSnifferMenu, "Fox Hunt", TFTCYAN, PACKET_MONITOR, [this]() { display_obj.clearScreen(); this->drawStatusBar(); wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_CYAN); + });*/ + this->addNodes(&wifiSnifferMenu, "Fox Hunt", TFTCYAN, SCANNERS, [this]() { + foxHuntMenu.list->clear(); + + // Bluetooth Fox Hunt Menu + foxHuntMenu.parentMenu = &wifiSnifferMenu; // Second Menu is third menu parent + this->addNodes(&foxHuntMenu, text09, TFTLIGHTGREY, 0, [this]() { + this->changeMenu(foxHuntMenu.parentMenu, true); + }); + + for (int i = 0; i < access_points->size(); i++) { + AccessPoint access_point = access_points->get(i); + access_point.selected = false; + access_points->set(i, access_point); + uint8_t node_color = rssiToMenuColor(access_points->get(i).rssi); + String node_name = String(access_points->get(i).rssi) + " " + access_points->get(i).essid; + this->addNodes(&foxHuntMenu, node_name.c_str(), node_color, 255, [this, i](){ + AccessPoint access_point = access_points->get(i); + access_point.selected = true; + access_points->set(i, access_point); + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_CYAN); + }); + } + this->changeMenu(&foxHuntMenu, true); }); this->addNodes(&wifiSnifferMenu, "MAC Monitor", TFTMAGENTA, SCANNERS, [this]() { display_obj.clearScreen(); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 1055367..27c6c55 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -2429,6 +2429,16 @@ void WiFiScan::StopScan(uint8_t scan_mode) { this->subnet = IPAddress(0, 0, 0, 0); } + if (currentScanMode == WIFI_SCAN_SIG_STREN) { + for (int i = 0; i < access_points->size(); i++) { + if (access_points->get(i).selected) { + AccessPoint access_point = access_points->get(i); + access_point.selected = false; + access_points->set(i, access_point); + } + } + } + #ifdef HAS_SCREEN for (int i = 0; i < TFT_WIDTH; i++) { this->_analyzer_values[i] = 0; @@ -10327,6 +10337,47 @@ void WiFiScan::runFoxHunt(uint32_t currentTime) { } } #endif + + if (currentScanMode == WIFI_SCAN_SIG_STREN) { + for (int i = 0; i < access_points->size(); i++) { + if (access_points->get(i).selected) { + this->changeChannel(access_points->get(i).channel); + + int targ_rssi = access_points->get(i).rssi; + + #ifdef HAS_MINI_SCREEN + display_obj.tft.setTextSize(1); + #else + display_obj.tft.setTextSize(2); + #endif + + display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); + + #ifdef HAS_MINI_SCREEN + display_obj.showCenterText(access_points->get(i).essid.c_str(), (TFT_HEIGHT / 4), true); + #else + display_obj.showCenterText(access_points->get(i).essid.c_str(), (TFT_HEIGHT / 4), false, 2); + #endif + + #ifdef HAS_MINI_SCREEN + display_obj.tft.setTextSize(2); + #else + display_obj.tft.setTextSize(3); + #endif + + display_obj.tft.setTextColor(rssiToColorScaled(targ_rssi), TFT_BLACK); + + #ifdef HAS_MINI_SCREEN + display_obj.showCenterText(String(targ_rssi).c_str(), (TFT_HEIGHT / 3), false, 2); + #else + display_obj.showCenterText(String(targ_rssi).c_str(), (TFT_HEIGHT / 3), false, 3); + #endif + + display_obj.tft.fillRect(0, (TFT_HEIGHT / 4) * 3, rssiToBarWidth(targ_rssi), 20, rssiToColorScaled(targ_rssi)); + display_obj.tft.fillRect(rssiToBarWidth(targ_rssi), (TFT_HEIGHT / 4) * 3, TFT_WIDTH, 20, TFT_BLACK); + } + } + } #endif } @@ -10501,6 +10552,9 @@ void WiFiScan::main(uint32_t currentTime) } } else if (currentScanMode == WIFI_SCAN_SIG_STREN) { + this->runFoxHunt(currentTime); + } + /*else if (currentScanMode == WIFI_SCAN_SIG_STREN) { #ifdef HAS_ILI9341 this->signalAnalyzerLoop(currentTime); #endif @@ -10541,7 +10595,7 @@ void WiFiScan::main(uint32_t currentTime) } #endif } - } + }*/ else if ((currentScanMode == WIFI_SCAN_CHAN_ANALYZER) || (currentScanMode == BT_SCAN_ANALYZER)) { this->signalAnalyzerLoop(currentTime); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 2a64bc1..331226e 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -40,7 +40,7 @@ #define JSON_SETTING_SIZE 2048 - #define MARAUDER_VERSION "v1.12.3" + #define MARAUDER_VERSION "v1.13.0" #define GRAPH_REFRESH 100