diff --git a/.github/workflows/build_parallel.yml b/.github/workflows/build_parallel.yml index b5f740c..8d3c39a 100644 --- a/.github/workflows/build_parallel.yml +++ b/.github/workflows/build_parallel.yml @@ -277,3 +277,46 @@ jobs: draft: true files: | esp32_marauder_v*.bin + body: | + [justcallmekokollc.com](https://justcallmekokollc.com) + + ### Please see [GPS Modification](https://github.com/justcallmekoko/ESP32Marauder/wiki/gps-modification) to find out how to add GPS capabilities to your Marauder. + **Flipper Zero Marauder Companion App:** + **Be sure to install the latest version of the [Marauder Companion](https://github.com/0xchocolate/flipperzero-wifi-marauder/releases/latest) to use these new features on your Flipper Zero** + + **Additional Resources** + **[Project Issues](https://github.com/justcallmekoko/ESP32Marauder/issues)** + **[Install/Update Instructions](https://github.com/justcallmekoko/ESP32Marauder/wiki/update-firmware)** + **[ESP32 Marauder companion app](https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion/releases/latest)** + **[My Discord](https://discord.com/servers/willstunforfood-776211399918878760)** + + **Flipper Zero Dev Board is NOT the same thing as Dev Board Pro. Don't get them confused.** + + ### MARAUDER V6/V6.X WARNING + **Please check which Marauder you are using by looking at the front face of the PCB (side with the screen). If it says v6.1 (or .2), use the v6.1 bin. If it says v6, use the v6 bin.** + + ## ESP32-C5 (5GHz support) + Please see our [installation guide](https://github.com/justcallmekoko/ESP32Marauder/wiki/ESP32%E2%80%90C5%E2%80%90DevKitC%E2%80%901) for installing the Marauder firmware on your ESP32-C5-DevKitC-1 + + | Hardware | Binary Version | + | -------- | -------------- | + | v4 (OG) | `_old_hardware.bin` | + | v6 | `_new_hardware.bin`/`_v6.bin` | + | v6.1/v6.2 | `_v6_1.bin` | + | v7 | `_v7.bin` | + | Kit | `_kit.bin` | + | Mini | `_mini.bin` | + | Flipper Zero | `_flipper.bin` | + | MutliBoard S3 | `_multiboardS3.bin` | + | LDDB/NodeMCU/Wemos | `_lddb.bin` | + | Dev Board Pro | `_marauder_dev_board_pro.bin` | + | BFFB | `_marauder_dev_board_pro.bin` | + | ESP32-S2 Reverse Feather | `_rev_feather.bin` | + | CYD 2432S028(R) | `_cyd_2432S028.bin` | + | RL Phantom | `_cyd_2432S024_guition.bin` | + | CYD 2432S028 2 USB | `_cyd_2432S028_2usb.bin` | + | M5 Cardputer | `_m5cardputer.bin` (Available on M5 Burner) | + | ESP32-C5 DevKit | [`_esp32c5_devkit.bin`](https://github.com/justcallmekoko/ESP32Marauder/wiki/ESP32%E2%80%90C5%E2%80%90DevKitC%E2%80%901) | + | AWOK V2/V3 screen (white usb) | `_v6_1.bin` | + | AWOK V2 flipper (orange usb) | `_flipper.bin` | + | AWOK V3 flipper (orange usb) | `_marauder_dev_board_pro.bin` | diff --git a/.github/workflows/close_stale.yml b/.github/workflows/close_stale.yml new file mode 100644 index 0000000..6cd99b3 --- /dev/null +++ b/.github/workflows/close_stale.yml @@ -0,0 +1,32 @@ +name: Close stale issues + +on: + schedule: + - cron: "0 3 * * *" # runs daily at 03:00 UTC + workflow_dispatch: {} + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + days-before-stale: 132 + days-before-close: 7 + stale-issue-message: > + This issue has been automatically marked as stale due to inactivity. + It will be closed in 7 days unless there is further activity. + close-issue-message: > + Closing due to prolonged inactivity. If this is still relevant, + please comment or open a new issue with updated details. + stale-issue-label: "stale" + exempt-issue-labels: "pinned,security,backlog,keep-open" + remove-stale-when-updated: true + operations-per-run: 2000 + # Optional: also handle PRs + days-before-pr-stale: -1 + days-before-pr-close: -1 diff --git a/C5_Py_Flasher/bins/bootloader.bin b/C5_Py_Flasher/bins/bootloader.bin index a677b57..00db978 100644 Binary files a/C5_Py_Flasher/bins/bootloader.bin and b/C5_Py_Flasher/bins/bootloader.bin differ diff --git a/C5_Py_Flasher/bins/esp32_marauder_v1_8_2_20250728_esp32c5devkitc1.bin b/C5_Py_Flasher/bins/esp32_marauder_v1_8_2_20250728_esp32c5devkitc1.bin deleted file mode 100644 index f39d242..0000000 Binary files a/C5_Py_Flasher/bins/esp32_marauder_v1_8_2_20250728_esp32c5devkitc1.bin and /dev/null differ diff --git a/C5_Py_Flasher/bins/esp32_marauder_v1_8_5_esp32c5devkitc1.bin b/C5_Py_Flasher/bins/esp32_marauder_v1_8_5_esp32c5devkitc1.bin new file mode 100644 index 0000000..2b1eb7a Binary files /dev/null and b/C5_Py_Flasher/bins/esp32_marauder_v1_8_5_esp32c5devkitc1.bin differ diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index f80bdea..0928466 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -860,6 +860,11 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == WIFI_PORT_SCAN_ALL) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_SSH) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_TELNET) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_DNS) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_SMTP) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_HTTP) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_HTTPS) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_RDP) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_PWN) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_PINESCAN) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_MULTISSID) || @@ -949,6 +954,11 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == WIFI_PORT_SCAN_ALL) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_SSH) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_TELNET) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_DNS) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_SMTP) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_HTTP) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_HTTPS) || + (wifi_scan_obj.currentScanMode == WIFI_SCAN_RDP) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_PWN) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_PINESCAN) || (wifi_scan_obj.currentScanMode == WIFI_SCAN_MULTISSID) || @@ -1181,6 +1191,7 @@ void MenuFunctions::main(uint32_t currentTime) // Menu navigation and paging #ifdef HAS_BUTTONS + // Don't do this for touch screens #if !(defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_CYD_MICRO) || defined(MARAUDER_CYD_GUITION) || defined(MARAUDER_CYD_2USB)) #if !defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2) #if (U_BTN >= 0 || defined(MARAUDER_CARDPUTER)) @@ -1229,6 +1240,7 @@ void MenuFunctions::main(uint32_t currentTime) } #endif #endif + #if (D_BTN >= 0 || defined(MARAUDER_CARDPUTER)) #if (D_BTN >= 0) if (d_btn.justPressed()){ @@ -1279,6 +1291,37 @@ void MenuFunctions::main(uint32_t currentTime) } } #endif + + #if (R_BTN >= 0 || defined(MARAUDER_CARDPUTER)) + #if (R_BTN >= 0) + if (r_btn.justPressed()) { + #elif defined(MARAUDER_CARDPUTER) + if (this->isKeyPressed('/')) { + #endif + if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) { + if (wifi_scan_obj.set_channel < 14) + wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1); + else + wifi_scan_obj.changeChannel(1); + } + } + #endif + + #if (L_BTN >= 0 || defined(MARAUDER_CARDPUTER)) + #if (L_BTN >= 0) + if (l_btn.justPressed()) { + #elif defined(MARAUDER_CARDPUTER) + if (this->isKeyPressed(',')) { + #endif + if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) { + if (wifi_scan_obj.set_channel > 1) + wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel - 1); + else + wifi_scan_obj.changeChannel(14); + } + } + #endif + if(c_btn_press){ current_menu->list->get(current_menu->selected).callable(); } @@ -1902,7 +1945,7 @@ void MenuFunctions::RunSetup() deviceMenu.list = new LinkedList(); #ifdef HAS_GPS if (gps_obj.getGpsModuleStatus()) { - gpsMenu.list = new LinkedList(); // H4W9 Added GPS Menu + gpsMenu.list = new LinkedList(); gpsInfoMenu.list = new LinkedList(); } #endif @@ -2014,8 +2057,8 @@ void MenuFunctions::RunSetup() wifiStationMenu.name = "Select Stations"; //#endif #ifdef HAS_GPS + gpsMenu.name = "GPS"; gpsInfoMenu.name = "GPS Data"; - gpsMenu.name = "GPS"; // H4W9 Added GPS Menu wardrivingMenu.name = "Wardriving"; #endif htmlMenu.name = "EP HTML List"; @@ -2041,14 +2084,11 @@ void MenuFunctions::RunSetup() this->addNodes(&mainMenu, text_table1[19], TFTCYAN, NULL, BLUETOOTH, [this]() { this->changeMenu(&bluetoothMenu); }); - - // H4W9 Added GPS Menu option to Main Menu #ifdef HAS_GPS this->addNodes(&mainMenu, text1_66, TFTRED, NULL, GPS_MENU, [this]() { this->changeMenu(&gpsMenu); }); #endif - this->addNodes(&mainMenu, text_table1[9], TFTBLUE, NULL, DEVICE, [this]() { this->changeMenu(&deviceMenu); }); @@ -2124,6 +2164,31 @@ void MenuFunctions::RunSetup() this->drawStatusBar(); wifi_scan_obj.StartScan(WIFI_SCAN_TELNET, TFT_CYAN); }); + this->addNodes(&wifiScannerMenu, "SMTP Scan", TFTWHITE, NULL, SCANNERS, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_SMTP, TFT_CYAN); + }); + this->addNodes(&wifiScannerMenu, "DNS Scan", TFTLIME, NULL, SCANNERS, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_DNS, TFT_CYAN); + }); + this->addNodes(&wifiScannerMenu, "HTTP Scan", TFTSKYBLUE, NULL, SCANNERS, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_HTTP, TFT_CYAN); + }); + this->addNodes(&wifiScannerMenu, "HTTPS Scan", TFTYELLOW, NULL, SCANNERS, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_HTTPS, TFT_CYAN); + }); + this->addNodes(&wifiScannerMenu, "RDP Scan", TFTPURPLE, NULL, SCANNERS, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_RDP, TFT_CYAN); + }); // Build WiFi sniffer Menu wifiSnifferMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent @@ -3087,7 +3152,7 @@ void MenuFunctions::RunSetup() #ifdef HAS_SD if (sd_obj.supported) { - this->addNodes(&deviceMenu, "Delete SD Files", TFTCYAN, NULL, SD_UPDATE, [this]() { + /*this->addNodes(&deviceMenu, "Delete SD Files", TFTCYAN, NULL, SD_UPDATE, [this]() { #ifndef HAS_ILI9341 #ifdef HAS_BUTTONS this->changeMenu(&sdDeleteMenu); @@ -3255,11 +3320,26 @@ void MenuFunctions::RunSetup() } #endif #endif + });*/ + + sdDeleteMenu.parentMenu = &deviceMenu; + + this->addNodes(&deviceMenu, "Delete SD Files", TFTCYAN, NULL, SD_UPDATE, [this]() { + display_obj.clearScreen(); + display_obj.tft.setTextWrap(false); + display_obj.tft.setCursor(0, SCREEN_HEIGHT / 3); + display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); + display_obj.tft.println("Loading..."); + + // Clear menu and lists + this->buildSDFileMenu(); + + this->changeMenu(&sdDeleteMenu); }); } #endif - #ifdef HAS_SD + /*#ifdef HAS_SD //#ifndef HAS_ILI9341 #ifdef HAS_BUTTONS sdDeleteMenu.parentMenu = &deviceMenu; @@ -3268,7 +3348,7 @@ void MenuFunctions::RunSetup() }); #endif //#endif - #endif + #endif*/ // Save Files Menu saveFileMenu.parentMenu = &deviceMenu; @@ -3330,13 +3410,11 @@ void MenuFunctions::RunSetup() this->changeMenu(loadATsMenu.parentMenu); }); - // H4W9 Moved GPS functions to GPS Menu - // Build GPS Menu + // GPS Menu #ifdef HAS_GPS if (gps_obj.getGpsModuleStatus()) { - - gpsMenu.parentMenu = &mainMenu; // Main Menu is second menu parent - + gpsMenu.parentMenu = &mainMenu; // Main Menu is second menu parent + this->addNodes(&gpsMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->changeMenu(gpsMenu.parentMenu); }); @@ -3380,7 +3458,7 @@ void MenuFunctions::RunSetup() wifi_scan_obj.currentScanMode = GPS_POI; display_obj.tft.setCursor(0, TFT_HEIGHT / 2); display_obj.clearScreen(); - if (wifi_scan_obj.RunGPSInfo(true, false)) + if (wifi_scan_obj.RunGPSInfo(true, false, true)) display_obj.showCenterText("POI Logged", TFT_HEIGHT / 2); else display_obj.showCenterText("POI Log Failed", TFT_HEIGHT / 2); @@ -3884,6 +3962,46 @@ void MenuFunctions::RunSetup() } //#endif +void MenuFunctions::setupSDFileList() { + sd_obj.sd_files->clear(); + + delete sd_obj.sd_files; + + sd_obj.sd_files = new LinkedList(); + + sd_obj.listDirToLinkedList(sd_obj.sd_files); +} + +void MenuFunctions::buildSDFileMenu() { + this->setupSDFileList(); + + sdDeleteMenu.list->clear(); + delete sdDeleteMenu.list; + sdDeleteMenu.list = new LinkedList(); + sdDeleteMenu.name = "SD Files"; + + this->addNodes(&sdDeleteMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { + this->changeMenu(sdDeleteMenu.parentMenu); + }); + + for (int x = 0; x < sd_obj.sd_files->size(); x++) { + this->addNodes(&sdDeleteMenu, sd_obj.sd_files->get(x), TFTCYAN, NULL, SD_UPDATE, [this, x]() { + if (sd_obj.removeFile("/" + sd_obj.sd_files->get(x))) { + Serial.println("Deleted /" + sd_obj.sd_files->get(x)); + display_obj.clearScreen(); + display_obj.tft.setTextWrap(false); + display_obj.tft.setCursor(0, SCREEN_HEIGHT / 3); + display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); + display_obj.tft.println("Deleting /" + sd_obj.sd_files->get(x) + "..."); + //sd_obj.sd_files->remove(x); + //sdDeleteMenu.list->remove(x + 1); // +1 for "Back" + this->buildSDFileMenu(); + this->changeMenu(&sdDeleteMenu); + } + }); + } +} + // Function to show all MenuNodes in a Menu void MenuFunctions::showMenuList(Menu * menu, int layer) { diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index d225ef8..8ee6b99 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -224,6 +224,8 @@ class MenuFunctions // Menu icons + void setupSDFileList(); + void buildSDFileMenu(); void displayMenuButtons(); uint16_t getColor(uint16_t color); void drawAvgLine(int16_t value); diff --git a/esp32_marauder/SDInterface.cpp b/esp32_marauder/SDInterface.cpp index ea6f319..110c554 100644 --- a/esp32_marauder/SDInterface.cpp +++ b/esp32_marauder/SDInterface.cpp @@ -90,7 +90,7 @@ bool SDInterface::initSD() { this->sd_files = new LinkedList(); - this->sd_files->add("Back"); + //this->sd_files->add("Back"); return true; } diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 08757d0..d5a957d 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -1018,6 +1018,16 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color) RunPortScanAll(scan_mode, color); else if (scan_mode == WIFI_SCAN_TELNET) RunPortScanAll(scan_mode, color); + else if (scan_mode == WIFI_SCAN_SMTP) + RunPortScanAll(scan_mode, color); + else if (scan_mode == WIFI_SCAN_DNS) + RunPortScanAll(scan_mode, color); + else if (scan_mode == WIFI_SCAN_HTTP) + RunPortScanAll(scan_mode, color); + else if (scan_mode == WIFI_SCAN_HTTPS) + RunPortScanAll(scan_mode, color); + else if (scan_mode == WIFI_SCAN_RDP) + RunPortScanAll(scan_mode, color); this->currentScanMode = scan_mode; } @@ -1191,6 +1201,11 @@ void WiFiScan::StopScan(uint8_t scan_mode) (currentScanMode == WIFI_PORT_SCAN_ALL) || (currentScanMode == WIFI_SCAN_SSH) || (currentScanMode == WIFI_SCAN_TELNET) || + (currentScanMode == WIFI_SCAN_SMTP) || + (currentScanMode == WIFI_SCAN_DNS) || + (currentScanMode == WIFI_SCAN_HTTP) || + (currentScanMode == WIFI_SCAN_HTTPS) || + (currentScanMode == WIFI_SCAN_RDP) || (currentScanMode == WIFI_SCAN_PWN) || (currentScanMode == WIFI_SCAN_PINESCAN) || (currentScanMode == WIFI_SCAN_MULTISSID) || @@ -1251,7 +1266,7 @@ void WiFiScan::StopScan(uint8_t scan_mode) else if ((currentScanMode == GPS_TRACKER) || (currentScanMode == GPS_POI)) { - this->writeFooter(); + this->writeFooter(currentScanMode == GPS_POI); } @@ -1576,6 +1591,16 @@ void WiFiScan::RunPortScanAll(uint8_t scan_mode, uint16_t color) startLog("sshscan"); else if (scan_mode == WIFI_SCAN_TELNET) startLog("telnetscan"); + else if (scan_mode == WIFI_SCAN_SMTP) + startLog("smtp"); + else if (scan_mode == WIFI_SCAN_DNS) + startLog("dns"); + else if (scan_mode == WIFI_SCAN_HTTP) + startLog("http"); + else if (scan_mode == WIFI_SCAN_HTTPS) + startLog("https"); + else if (scan_mode == WIFI_SCAN_RDP) + startLog("rdp"); else startLog("portscan"); @@ -1605,6 +1630,16 @@ void WiFiScan::RunPortScanAll(uint8_t scan_mode, uint16_t color) display_obj.tft.drawCentreString("SSH Scan",120,16,2); else if (scan_mode == WIFI_SCAN_TELNET) display_obj.tft.drawCentreString("Telnet Scan",120,16,2); + else if (scan_mode == WIFI_SCAN_SMTP) + display_obj.tft.drawCentreString("SMTP Scan",120,16,2); + else if (scan_mode == WIFI_SCAN_DNS) + display_obj.tft.drawCentreString("DNS Scan",120,16,2); + else if (scan_mode == WIFI_SCAN_HTTP) + display_obj.tft.drawCentreString("HTTP Scan",120,16,2); + else if (scan_mode == WIFI_SCAN_HTTPS) + display_obj.tft.drawCentreString("HTTPS Scan",120,16,2); + else if (scan_mode == WIFI_SCAN_RDP) + display_obj.tft.drawCentreString("RDP Scan",120,16,2); #endif #ifdef HAS_ILI9341 display_obj.touchToExit(); @@ -1615,7 +1650,12 @@ void WiFiScan::RunPortScanAll(uint8_t scan_mode, uint16_t color) this->current_scan_port = 0; if ((scan_mode == WIFI_SCAN_SSH) || - (scan_mode == WIFI_SCAN_TELNET)) + (scan_mode == WIFI_SCAN_TELNET) || + (scan_mode == WIFI_SCAN_SMTP) || + (scan_mode == WIFI_SCAN_DNS) || + (scan_mode == WIFI_SCAN_HTTP) || + (scan_mode == WIFI_SCAN_HTTPS) || + (scan_mode == WIFI_SCAN_RDP)) this->current_scan_ip = this->gateway; Serial.println("Starting Port Scan with..."); @@ -2221,30 +2261,40 @@ void WiFiScan::RunGenerateSSIDs(int count) { #endif } -void WiFiScan::logPoint(String lat, String lon, float alt, String datetime) { +void WiFiScan::logPoint(String lat, String lon, float alt, String datetime, bool poi) { datetime.replace(" ", "T"); datetime += "Z"; - buffer_obj.append(" \n"); + if (!poi) + buffer_obj.append(" \n"); + else + buffer_obj.append(" \n"); buffer_obj.append(" " + String(alt, 2) + "\n"); buffer_obj.append(" \n"); - buffer_obj.append(" \n"); + if (!poi) + buffer_obj.append(" \n"); + else + buffer_obj.append(" \n"); //gpxFile.flush(); } -void WiFiScan::writeHeader() { +void WiFiScan::writeHeader(bool poi) { Serial.println("Writing header to GPX file..."); buffer_obj.append("\n"); buffer_obj.append("\n"); - buffer_obj.append(" \n"); + if (!poi) + buffer_obj.append(" \n"); buffer_obj.append(" ESP32 Track\n"); - buffer_obj.append(" \n"); + if (!poi) + buffer_obj.append(" \n"); } -void WiFiScan::writeFooter() { +void WiFiScan::writeFooter(bool poi) { Serial.println("Writing footer to GPX file...\n"); - buffer_obj.append(" \n"); - buffer_obj.append(" \n"); + if (!poi) { + buffer_obj.append(" \n"); + buffer_obj.append(" \n"); + } buffer_obj.append("\n"); } @@ -2254,18 +2304,18 @@ void WiFiScan::RunSetupGPSTracker(uint8_t scan_mode) { else if (scan_mode == GPS_POI) this->startGPX("poi"); - this->writeHeader(); + this->writeHeader(scan_mode == GPS_POI); initTime = millis(); } -bool WiFiScan::RunGPSInfo(bool tracker, bool display) { +bool WiFiScan::RunGPSInfo(bool tracker, bool display, bool poi) { bool return_val = true; #ifdef HAS_GPS String text=gps_obj.getText(); if (tracker) { if (gps_obj.getFixStatus()) { - this->logPoint(gps_obj.getLat(), gps_obj.getLon(), gps_obj.getAlt(), gps_obj.getDatetime()); + this->logPoint(gps_obj.getLat(), gps_obj.getLon(), gps_obj.getAlt(), gps_obj.getDatetime(), poi); } else return_val = false; @@ -8134,8 +8184,45 @@ void WiFiScan::pingScan(uint8_t scan_mode) { } } } + else { + int targ_port = 0; + if (scan_mode == WIFI_SCAN_SSH) + targ_port = 22; + else if (scan_mode == WIFI_SCAN_TELNET) + targ_port = 23; + else if (scan_mode == WIFI_SCAN_SMTP) + targ_port = 25; + else if (scan_mode == WIFI_SCAN_DNS) + targ_port = 53; + else if (scan_mode == WIFI_SCAN_HTTP) + targ_port = 80; + else if (scan_mode == WIFI_SCAN_HTTPS) + targ_port = 443; + else if (scan_mode == WIFI_SCAN_RDP) + targ_port = 3389; - else if (scan_mode == WIFI_SCAN_SSH) { + if (this->current_scan_ip != IPAddress(0, 0, 0, 0)) { + this->current_scan_ip = getNextIP(this->current_scan_ip, this->subnet); + #ifndef HAS_DUAL_BAND + if (this->singleARP(this->current_scan_ip)) { + #else + if (this->isHostAlive(this->current_scan_ip)) { + #endif + Serial.println(this->current_scan_ip); + this->portScan(scan_mode, targ_port); + } + } + else { + if (!this->scan_complete) { + this->scan_complete = true; + #ifdef HAS_SCREEN + display_obj.display_buffer->add("Scan complete"); + #endif + } + } + } + + /*else if (scan_mode == WIFI_SCAN_SSH) { if (this->current_scan_ip != IPAddress(0, 0, 0, 0)) { this->current_scan_ip = getNextIP(this->current_scan_ip, this->subnet); #ifndef HAS_DUAL_BAND @@ -8177,7 +8264,7 @@ void WiFiScan::pingScan(uint8_t scan_mode) { #endif } } - } + }*/ } void WiFiScan::portScan(uint8_t scan_mode, uint16_t targ_port) { @@ -8272,6 +8359,21 @@ void WiFiScan::main(uint32_t currentTime) else if (currentScanMode == WIFI_SCAN_TELNET) { this->pingScan(WIFI_SCAN_TELNET); } + else if (currentScanMode == WIFI_SCAN_SMTP) { + this->pingScan(WIFI_SCAN_SMTP); + } + else if (currentScanMode == WIFI_SCAN_DNS) { + this->pingScan(WIFI_SCAN_DNS); + } + else if (currentScanMode == WIFI_SCAN_HTTP) { + this->pingScan(WIFI_SCAN_HTTP); + } + else if (currentScanMode == WIFI_SCAN_HTTPS) { + this->pingScan(WIFI_SCAN_HTTPS); + } + else if (currentScanMode == WIFI_SCAN_RDP) { + this->pingScan(WIFI_SCAN_RDP); + } else if (currentScanMode == WIFI_SCAN_SIG_STREN) { #ifdef HAS_ILI9341 this->signalAnalyzerLoop(currentTime); diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index ce7b0b6..ee3183f 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -130,6 +130,11 @@ #define WIFI_ATTACK_SLEEP 61 #define WIFI_ATTACK_SLEEP_TARGETED 62 #define GPS_POI 63 +#define WIFI_SCAN_DNS 64 +#define WIFI_SCAN_HTTP 65 +#define WIFI_SCAN_HTTPS 66 +#define WIFI_SCAN_SMTP 67 +#define WIFI_SCAN_RDP 68 #define WIFI_ATTACK_FUNNY_BEACON 9999 @@ -581,8 +586,8 @@ class WiFiScan void RunPortScanAll(uint8_t scan_mode, uint16_t color); bool checkMem(); void parseBSSID(const char* bssidStr, uint8_t* bssid); - void writeHeader(); - void writeFooter(); + void writeHeader(bool poi = false); + void writeFooter(bool poi = false); public: @@ -693,8 +698,8 @@ class WiFiScan #ifdef HAS_SCREEN int8_t checkAnalyzerButtons(uint32_t currentTime); #endif - bool RunGPSInfo(bool tracker = false, bool display = true); - void logPoint(String lat, String lon, float alt, String datetime); + bool RunGPSInfo(bool tracker = false, bool display = true, bool poi = false); + void logPoint(String lat, String lon, float alt, String datetime, bool poi = false); void setMac(); void renderRawStats(); void renderPacketRate(); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index ad280bb..f2774e5 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -30,7 +30,7 @@ //#define MARAUDER_CARDPUTER //// END BOARD TARGETS - #define MARAUDER_VERSION "v1.8.5" + #define MARAUDER_VERSION "v1.8.6" #define GRAPH_REFRESH 100 @@ -382,7 +382,7 @@ //#define HAS_BATTERY //#define HAS_BT //#define HAS_BUTTONS - //#define HAS_NEOPIXEL_LED + #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT //#define HAS_SCREEN #define HAS_GPS @@ -1976,6 +1976,8 @@ #define PIN 4 #elif defined(MARAUDER_CYD_2USB) #define PIN 4 + #elif defined(MARAUDER_C5) + #define PIN 27 #else #define PIN 25 #endif