From bea6978098c4191701e1fbfbd3f3552e9ed7ea23 Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 18 Oct 2023 07:53:19 -0400 Subject: [PATCH 1/9] Fix error output --- esp32_marauder/EvilPortal.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esp32_marauder/EvilPortal.cpp b/esp32_marauder/EvilPortal.cpp index c55b783..f97c4a2 100644 --- a/esp32_marauder/EvilPortal.cpp +++ b/esp32_marauder/EvilPortal.cpp @@ -68,10 +68,10 @@ bool EvilPortal::setHtml() { File html_file = sd_obj.getFile("/" + this->target_html_name); if (!html_file) { #ifdef HAS_SCREEN - this->sendToDisplay("Could not find /index.html."); + this->sendToDisplay("Could not find /" + this->target_html_name); this->sendToDisplay("Touch to exit..."); #endif - Serial.println("Could not find /index.html. Use stopscan..."); + Serial.println("Could not find /" + this->target_html_name + ". Use stopscan..."); return false; } else { From 516b8b0c3fddea255f82283611b38dd61f04b58d Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Thu, 19 Oct 2023 14:34:47 -0400 Subject: [PATCH 2/9] Fix unicast MAC addr --- PCBs/FlipperZero/WiFi-Devboard-Pro/README.md | 1 + esp32_marauder/WiFiScan.cpp | 6 +++++- esp32_marauder/configs.h | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/PCBs/FlipperZero/WiFi-Devboard-Pro/README.md b/PCBs/FlipperZero/WiFi-Devboard-Pro/README.md index e5d1171..0373da3 100644 --- a/PCBs/FlipperZero/WiFi-Devboard-Pro/README.md +++ b/PCBs/FlipperZero/WiFi-Devboard-Pro/README.md @@ -3,6 +3,7 @@ - Header Pin x8: [C2883805](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-08H-C60D48R1_C2883805.html) - Header Pin x10: [C2883807](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-10H-C60D48R1_C2883807.html) - Alternative Header: [M20-8771246](https://www.mouser.com/ProductDetail/Harwin/M20-8771246?qs=WS5Jv%252B%252Bx1qWzrNY%252Bb2U9JQ%3D%3D&countryCode=US¤cyCode=USD) + - or [M20-8771042](https://www.mouser.com/ProductDetail/Harwin/M20-8771042?qs=%252Bk6%2F5FB6qrlBSpg9%252Bi11Bg%3D%3D) - Light Pipe: [PLP2-188](https://www.digikey.com/en/products/detail/bivar-inc/PLP2-188/5721973?utm_medium=email&utm_source=oce&utm_campaign=4251_OCE23RT&utm_content=productdetail_US&utm_cid=2955578&so=79456987&mkt_tok=MDI4LVNYSy01MDcAAAGJOBaFWa7m6RHsJZT6mWcYRd9LRyXmqis92EV7j5ftyM5NuNOSOPqUp292m0P5E3FKrEWCFuvb9fObSzuSvVMsopuOMPjO46ylCAR1IzCL) - M2x6mm Round Top Screw: [97763A407](https://www.mcmaster.com/97763A407/) - M2x8mm Countersunk Screw: [91294A005](https://www.mcmaster.com/91294A005/) diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index f03346e..74631a9 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -1461,7 +1461,11 @@ const char* WiFiScan::generateRandomName() { } void WiFiScan::generateRandomMac(uint8_t* mac) { - for (int i = 0; i < 6; i++) { + // Set the locally administered bit and unicast bit for the first byte + mac[0] = 0x02; // The locally administered bit is the second least significant bit + + // Generate the rest of the MAC address + for (int i = 1; i < 6; i++) { mac[i] = random(0, 255); } } diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index af53a98..484e5e5 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -22,12 +22,13 @@ //#define XIAO_ESP32_S3 //// END BOARD TARGETS - #define MARAUDER_VERSION "v0.13.2" + #define MARAUDER_VERSION "v0.13.3" //// BOARD FEATURES #ifdef MARAUDER_M5STICKC //#define FLIPPER_ZERO_HAT #define HAS_BATTERY + #define HAS_BT #define HAS_BUTTONS #define HAS_NEOPIXEL_LED #define HAS_PWR_MGMT From 598eda99e3fb2dc4a7a1366c0706b3090fa1d2ab Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Tue, 24 Oct 2023 18:52:00 -0400 Subject: [PATCH 3/9] Add headless mode --- esp32_marauder/Display.cpp | 2 +- esp32_marauder/Display.h | 1 + esp32_marauder/MenuFunctions.cpp | 78 +++++++++++++++++-------------- esp32_marauder/MenuFunctions.h | 2 + esp32_marauder/configs.h | 21 ++++++++- esp32_marauder/esp32_marauder.ino | 13 +++++- 6 files changed, 78 insertions(+), 39 deletions(-) diff --git a/esp32_marauder/Display.cpp b/esp32_marauder/Display.cpp index 95c8f17..da835e4 100644 --- a/esp32_marauder/Display.cpp +++ b/esp32_marauder/Display.cpp @@ -25,7 +25,7 @@ void Display::RunSetup() #endif #ifdef MARAUDER_M5STICKC - tft.setRotation(3); + tft.setRotation(1); #endif tft.setCursor(0, 0); diff --git a/esp32_marauder/Display.h b/esp32_marauder/Display.h index 906d481..b206d65 100644 --- a/esp32_marauder/Display.h +++ b/esp32_marauder/Display.h @@ -68,6 +68,7 @@ class Display bool tteBar = false; bool draw_tft = false; bool exit_draw = false; + bool headless_mode = false; uint8_t TOP_FIXED_AREA_2 = 48; uint8_t print_delay_1, print_delay_2 = 10; diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 05f1c45..c5769d4 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -18,6 +18,13 @@ MenuFunctions::MenuFunctions() /* Interrupt driven periodic handler */ #ifdef HAS_ILI9341 + uint8_t MenuFunctions::updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold) { + if (!display_obj.headless_mode) + return display_obj.tft.getTouch(x, y, threshold); + else + return !display_obj.headless_mode; + } + void MenuFunctions::lv_tick_handler() { lv_tick_inc(LVGL_TICK_PERIOD); @@ -456,7 +463,7 @@ void MenuFunctions::main(uint32_t currentTime) // getTouch causes a 10ms delay which makes beacon spam less effective #ifdef HAS_ILI9341 - pressed = display_obj.tft.getTouch(&t_x, &t_y); + pressed = this->updateTouch(&t_x, &t_y); #endif @@ -643,50 +650,51 @@ void MenuFunctions::main(uint32_t currentTime) #endif #ifdef HAS_BUTTONS - #ifndef MARAUDER_M5STICKC - if (u_btn.justPressed()){ + #if !(defined(MARAUDER_V6) || defined(MARAUDER_V6_1)) + #ifndef MARAUDER_M5STICKC + if (u_btn.justPressed()){ + if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) || + (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { + if (current_menu->selected > 0) { + current_menu->selected--; + this->buttonSelected(current_menu->selected); + if (!current_menu->list->get(current_menu->selected + 1).selected) + this->buttonNotSelected(current_menu->selected + 1); + } + } + else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) { + if (wifi_scan_obj.set_channel < 14) + wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1); + } + } + #endif + if (d_btn.justPressed()){ if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) || (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { - if (current_menu->selected > 0) { - current_menu->selected--; + if (current_menu->selected < current_menu->list->size() - 1) { + current_menu->selected++; this->buttonSelected(current_menu->selected); - if (!current_menu->list->get(current_menu->selected + 1).selected) - this->buttonNotSelected(current_menu->selected + 1); + if (!current_menu->list->get(current_menu->selected - 1).selected) + this->buttonNotSelected(current_menu->selected - 1); + } + else { + current_menu->selected = 0; + this->buttonSelected(current_menu->selected); + if (!current_menu->list->get(current_menu->list->size() - 1).selected) + this->buttonNotSelected(current_menu->list->size() - 1); } } else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) { - if (wifi_scan_obj.set_channel < 14) - wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1); + if (wifi_scan_obj.set_channel > 1) + wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel - 1); } } + if(c_btn_press){ + current_menu->list->get(current_menu->selected).callable(); + } #endif - if (d_btn.justPressed()){ - if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) || - (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { - if (current_menu->selected < current_menu->list->size() - 1) { - current_menu->selected++; - this->buttonSelected(current_menu->selected); - if (!current_menu->list->get(current_menu->selected - 1).selected) - this->buttonNotSelected(current_menu->selected - 1); - } - else { - current_menu->selected = 0; - this->buttonSelected(current_menu->selected); - if (!current_menu->list->get(current_menu->list->size() - 1).selected) - this->buttonNotSelected(current_menu->list->size() - 1); - } - } - else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || - (wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) { - if (wifi_scan_obj.set_channel > 1) - wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel - 1); - } - } - if(c_btn_press){ - current_menu->list->get(current_menu->selected).callable(); - } - #endif } diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index eb814a7..07901ce 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -166,6 +166,8 @@ class MenuFunctions void buttonSelected(uint8_t b); void buttonNotSelected(uint8_t b); + uint8_t updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600); + public: MenuFunctions(); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 484e5e5..f263c94 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -71,7 +71,8 @@ //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BT - //#define HAS_BUTTONS + #define HAS_BT_REMOTE + #define HAS_BUTTONS #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN @@ -85,7 +86,7 @@ //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BT - //#define HAS_BUTTONS + #define HAS_BUTTONS #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN @@ -205,6 +206,22 @@ #define U_BTN -1 #define R_BTN -1 #define D_BTN 39 + #endif + + #ifdef MARAUDER_V6 + #define L_BTN -1 + #define C_BTN 0 + #define U_BTN -1 + #define R_BTN -1 + #define D_BTN -1 + #endif + + #ifdef MARAUDER_V6_1 + #define L_BTN -1 + #define C_BTN 0 + #define U_BTN -1 + #define R_BTN -1 + #define D_BTN -1 #endif #endif diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index 343667d..d5e54a1 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -165,7 +165,7 @@ void setup() axp192_obj.begin(); #endif - pinMode(FLASH_BUTTON, INPUT); + //pinMode(FLASH_BUTTON, INPUT); #ifdef HAS_SCREEN pinMode(TFT_BL, OUTPUT); @@ -247,6 +247,17 @@ void setup() #ifdef HAS_SCREEN delay(2000); + // Do some stealth mode stuff + #ifdef HAS_BUTTONS + if (c_btn.justPressed()) { + display_obj.headless_mode = true; + + backlightOff(); + + Serial.println("Headless Mode enabled"); + } + #endif + display_obj.clearScreen(); display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); From 38e53db892fe3f5120182a8e6402536be209717a Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 25 Oct 2023 13:27:52 -0400 Subject: [PATCH 4/9] Add BT for LDDB --- esp32_marauder/configs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index f263c94..117ba00 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -12,11 +12,11 @@ //#define MARAUDER_M5STICKC //#define MARAUDER_MINI //#define MARAUDER_V4 - //#define MARAUDER_V6 + #define MARAUDER_V6 //#define MARAUDER_V6_1 //#define MARAUDER_KIT //#define GENERIC_ESP32 - #define MARAUDER_FLIPPER + //#define MARAUDER_FLIPPER //#define ESP32_LDDB //#define MARAUDER_DEV_BOARD_PRO //#define XIAO_ESP32_S3 @@ -128,7 +128,7 @@ #ifdef ESP32_LDDB //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY - //#define HAS_BT + #define HAS_BT //#define HAS_BUTTONS #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT From a6335fed223a6847fc11c89356dd59afce6a44ba Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 25 Oct 2023 22:25:02 -0400 Subject: [PATCH 5/9] Paginated Mini menu and fix status bar --- esp32_marauder/MenuFunctions.cpp | 46 +++++++++++++++++++++++--------- esp32_marauder/MenuFunctions.h | 7 ++--- esp32_marauder/WiFiScan.cpp | 24 ++++++++++------- esp32_marauder/configs.h | 9 +++++-- 4 files changed, 59 insertions(+), 27 deletions(-) diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index c5769d4..998c253 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -393,14 +393,18 @@ MenuFunctions::MenuFunctions() #endif //// END LV_ARDUINO STUFF -void MenuFunctions::buttonNotSelected(uint8_t b) { +void MenuFunctions::buttonNotSelected(uint8_t b, int8_t x) { + if (x == -1) + x = b; display_obj.tft.setFreeFont(NULL); - display_obj.key[b].drawButton(false, current_menu->list->get(b).name); + display_obj.key[b].drawButton(false, current_menu->list->get(x).name); } -void MenuFunctions::buttonSelected(uint8_t b) { +void MenuFunctions::buttonSelected(uint8_t b, int8_t x) { + if (x == -1) + x = b; display_obj.tft.setFreeFont(NULL); - display_obj.key[b].drawButton(true, current_menu->list->get(b).name); + display_obj.key[b].drawButton(true, current_menu->list->get(x).name); } // Function to check menu input @@ -657,9 +661,13 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { if (current_menu->selected > 0) { current_menu->selected--; - this->buttonSelected(current_menu->selected); + if (current_menu->selected < this->menu_start_index) { + this->buildButtons(current_menu, current_menu->selected); + this->displayCurrentMenu(current_menu->selected); + } + this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected); if (!current_menu->list->get(current_menu->selected + 1).selected) - this->buttonNotSelected(current_menu->selected + 1); + this->buttonNotSelected(current_menu->selected + 1 - this->menu_start_index, current_menu->selected + 1); } } else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || @@ -674,11 +682,19 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { if (current_menu->selected < current_menu->list->size() - 1) { current_menu->selected++; - this->buttonSelected(current_menu->selected); + this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected); if (!current_menu->list->get(current_menu->selected - 1).selected) - this->buttonNotSelected(current_menu->selected - 1); + this->buttonNotSelected(current_menu->selected - 1 - this->menu_start_index, current_menu->selected - 1); + if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { + this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); + this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); + } } else { + if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { + this->buildButtons(current_menu); + this->displayCurrentMenu(); + } current_menu->selected = 0; this->buttonSelected(current_menu->selected); if (!current_menu->list->get(current_menu->list->size() - 1).selected) @@ -827,6 +843,9 @@ void MenuFunctions::updateStatusBar() display_obj.tft.setTextColor(TFT_WHITE, STATUSBAR_COLOR); display_obj.tft.drawString(gps_obj.getNumSatsString(), 22, 0, 2); + #elif defined(HAS_SCREEN) + display_obj.tft.setTextColor(the_color, STATUSBAR_COLOR); + display_obj.tft.drawString("GPS", 0, 0, 1); #endif } #endif @@ -836,7 +855,7 @@ void MenuFunctions::updateStatusBar() // WiFi Channel Stuff if (wifi_scan_obj.set_channel != wifi_scan_obj.old_channel) { wifi_scan_obj.old_channel = wifi_scan_obj.set_channel; - display_obj.tft.fillRect(50, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR); + display_obj.tft.fillRect(50, 0, TFT_WIDTH * 0.21, STATUS_BAR_WIDTH, STATUSBAR_COLOR); #ifdef HAS_ILI9341 display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, 50, 0, 2); #endif @@ -1589,6 +1608,7 @@ void MenuFunctions::buildButtons(Menu * menu, int starting_index) { if (menu->list != NULL) { + this->menu_start_index = starting_index; for (uint8_t i = 0; i < menu->list->size(); i++) { TFT_eSPI_Button new_button; @@ -1611,7 +1631,7 @@ void MenuFunctions::buildButtons(Menu * menu, int starting_index) } -void MenuFunctions::displayCurrentMenu() +void MenuFunctions::displayCurrentMenu(uint8_t start_index) { //Serial.println(F("Displaying current menu...")); display_obj.clearScreen(); @@ -1629,7 +1649,7 @@ void MenuFunctions::displayCurrentMenu() display_obj.tft.setFreeFont(NULL); display_obj.tft.setTextSize(1); #endif - for (uint8_t i = 0; i < current_menu->list->size(); i++) + for (uint8_t i = start_index; i < current_menu->list->size(); i++) { #ifdef HAS_ILI9341 if (!current_menu->list->get(i).selected) @@ -1650,9 +1670,9 @@ void MenuFunctions::displayCurrentMenu() #if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC) if ((current_menu->selected == i) || (current_menu->list->get(i).selected)) - display_obj.key[i].drawButton(true, current_menu->list->get(i).name); + display_obj.key[i - start_index].drawButton(true, current_menu->list->get(i).name); else - display_obj.key[i].drawButton(false, current_menu->list->get(i).name); + display_obj.key[i - start_index].drawButton(false, current_menu->list->get(i).name); #endif } display_obj.tft.setFreeFont(NULL); diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 07901ce..f39a5f9 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -116,6 +116,7 @@ class MenuFunctions String u_result = ""; uint32_t initTime = 0; + uint8_t menu_start_index = 0; // Main menu stuff @@ -163,8 +164,8 @@ class MenuFunctions String callSetting(String key); void runBoolSetting(String ley); void displaySetting(String key, Menu* menu, int index); - void buttonSelected(uint8_t b); - void buttonNotSelected(uint8_t b); + void buttonSelected(uint8_t b, int8_t x = -1); + void buttonNotSelected(uint8_t b, int8_t x = -1); uint8_t updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600); @@ -195,7 +196,7 @@ class MenuFunctions void buildButtons(Menu* menu, int starting_index = 0); void changeMenu(Menu* menu); void drawStatusBar(); - void displayCurrentMenu(); + void displayCurrentMenu(uint8_t start_index = 0); void main(uint32_t currentTime); void RunSetup(); void orientDisplay(); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 74631a9..7f763bd 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -518,9 +518,11 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_ display_obj.initScrollValues(true); display_obj.tft.setTextWrap(false); display_obj.tft.setTextColor(TFT_BLACK, color); - display_obj.tft.fillRect(0,16,240,16, color); - display_obj.tft.drawCentreString((String)title_string,120,16,2); - display_obj.touchToExit(); + #ifdef HAS_ILI9341 + display_obj.tft.fillRect(0,16,240,16, color); + display_obj.tft.drawCentreString((String)title_string,120,16,2); + display_obj.touchToExit(); + #endif display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); #endif @@ -1857,9 +1859,11 @@ void WiFiScan::RunSourApple(uint8_t scan_mode, uint16_t color) { display_obj.initScrollValues(true); display_obj.tft.setTextWrap(false); display_obj.tft.setTextColor(TFT_BLACK, color); - display_obj.tft.fillRect(0,16,240,16, color); - display_obj.tft.drawCentreString("Sour Apple",120,16,2); - display_obj.touchToExit(); + #ifdef HAS_ILI9341 + display_obj.tft.fillRect(0,16,240,16, color); + display_obj.tft.drawCentreString("Sour Apple",120,16,2); + display_obj.touchToExit(); + #endif display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); #endif @@ -1877,9 +1881,11 @@ void WiFiScan::RunSwiftpairSpam(uint8_t scan_mode, uint16_t color) { display_obj.initScrollValues(true); display_obj.tft.setTextWrap(false); display_obj.tft.setTextColor(TFT_BLACK, color); - display_obj.tft.fillRect(0,16,240,16, color); - display_obj.tft.drawCentreString("Swiftpair Spam",120,16,2); - display_obj.touchToExit(); + #ifdef HAS_ILI9341 + display_obj.tft.fillRect(0,16,240,16, color); + display_obj.tft.drawCentreString("Swiftpair Spam",120,16,2); + display_obj.touchToExit(); + #endif display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); #endif diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 117ba00..d36cf7f 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -10,9 +10,9 @@ //// BOARD TARGETS //#define MARAUDER_M5STICKC - //#define MARAUDER_MINI + #define MARAUDER_MINI //#define MARAUDER_V4 - #define MARAUDER_V6 + //#define MARAUDER_V6 //#define MARAUDER_V6_1 //#define MARAUDER_KIT //#define GENERIC_ESP32 @@ -272,6 +272,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 @@ -327,6 +328,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -384,6 +386,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -442,6 +445,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -510,6 +514,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 10 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 From 41a231777897232a75dfc70735dfe851063c1552 Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 25 Oct 2023 22:46:49 -0400 Subject: [PATCH 6/9] Loop menu front to end --- esp32_marauder/MenuFunctions.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 998c253..487375a 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -661,6 +661,7 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { if (current_menu->selected > 0) { current_menu->selected--; + // Page up if (current_menu->selected < this->menu_start_index) { this->buildButtons(current_menu, current_menu->selected); this->displayCurrentMenu(current_menu->selected); @@ -669,6 +670,17 @@ void MenuFunctions::main(uint32_t currentTime) if (!current_menu->list->get(current_menu->selected + 1).selected) this->buttonNotSelected(current_menu->selected + 1 - this->menu_start_index, current_menu->selected + 1); } + // Loop to end + else { + current_menu->selected = current_menu->list->size() - 1; + if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { + this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); + this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); + } + this->buttonSelected(current_menu->selected, current_menu->selected); + if (!current_menu->list->get(0).selected) + this->buttonNotSelected(0); + } } else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) { @@ -685,11 +697,13 @@ void MenuFunctions::main(uint32_t currentTime) this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected); if (!current_menu->list->get(current_menu->selected - 1).selected) this->buttonNotSelected(current_menu->selected - 1 - this->menu_start_index, current_menu->selected - 1); + // Page down if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); } } + // Loop to beginning else { if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { this->buildButtons(current_menu); From 2fd76556fbf9e159a600eb867c9f51c8e01791db Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 25 Oct 2023 22:53:37 -0400 Subject: [PATCH 7/9] Fix wrong menu index name on back loop --- esp32_marauder/MenuFunctions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 487375a..2ef55e1 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -679,7 +679,7 @@ void MenuFunctions::main(uint32_t currentTime) } this->buttonSelected(current_menu->selected, current_menu->selected); if (!current_menu->list->get(0).selected) - this->buttonNotSelected(0); + this->buttonNotSelected(0, this->menu_start_index); } } else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || From cbb110a944b1e465e8a9c591b50b9ba334327a3f Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 25 Oct 2023 23:18:12 -0400 Subject: [PATCH 8/9] Add pwn scan and fix page down refresh Mini gets pwn scan again --- esp32_marauder/MenuFunctions.cpp | 14 ++++++++------ esp32_marauder/configs.h | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 2ef55e1..b1b4d42 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -698,7 +698,7 @@ void MenuFunctions::main(uint32_t currentTime) if (!current_menu->list->get(current_menu->selected - 1).selected) this->buttonNotSelected(current_menu->selected - 1 - this->menu_start_index, current_menu->selected - 1); // Page down - if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { + if (current_menu->selected - this->menu_start_index >= BUTTON_SCREEN_LIMIT) { this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); } @@ -1219,11 +1219,13 @@ void MenuFunctions::RunSetup() wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE); }); #endif - /*this->addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() { - display_obj.clearScreen(); - this->drawStatusBar(); - wifi_scan_obj.StartScan(WIFI_SCAN_PWN, TFT_RED); - });*/ + #ifndef HAS_ILI9341 + this->addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_PWN, TFT_RED); + }); + #endif this->addNodes(&wifiSnifferMenu, text_table1[49], TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() { display_obj.clearScreen(); this->drawStatusBar(); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index d36cf7f..79e0f6f 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -273,7 +273,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 12 - #define BUTTON_ARRAY_LEN 12 + #define BUTTON_ARRAY_LEN 13 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 @@ -515,7 +515,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 10 - #define BUTTON_ARRAY_LEN 12 + #define BUTTON_ARRAY_LEN 13 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 From 5dd56125a0b2871f1f1bd1a9b4f39b5b16f7646b Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Thu, 26 Oct 2023 09:46:14 -0400 Subject: [PATCH 9/9] Kit doesn't have buttons --- esp32_marauder/configs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 79e0f6f..53f0e7e 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -86,7 +86,7 @@ //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BT - #define HAS_BUTTONS + //#define HAS_BUTTONS #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT #define HAS_SCREEN