diff --git a/esp32_marauder/CommandLine.cpp b/esp32_marauder/CommandLine.cpp new file mode 100644 index 0000000..392229b --- /dev/null +++ b/esp32_marauder/CommandLine.cpp @@ -0,0 +1,32 @@ +#include "CommandLine.h" + +CommandLine::CommandLine() { +} + +void CommandLine::RunSetup() { + +} + +String CommandLine::getSerialInput() { + String input = ""; + + if (Serial.available() > 0) + input = Serial.readStringUntil('\n'); + + return input; +} + +void CommandLine::main(uint32_t currentTime) { + this->parseCommand(this->getSerialInput()); +} + +void CommandLine::parseCommand(String input) { + if (input != "") + Serial.println("#" + input); + + if (input == "scanap") { + display_obj.clearScreen(); + menu_function_obj.drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_SCAN_TARGET_AP, TFT_MAGENTA); + } +} diff --git a/esp32_marauder/CommandLine.h b/esp32_marauder/CommandLine.h new file mode 100644 index 0000000..1367c20 --- /dev/null +++ b/esp32_marauder/CommandLine.h @@ -0,0 +1,24 @@ +#ifndef CommandLine_h +#define CommandLine_h + +#include "MenuFunctions.h" +#include "WiFiScan.h" +#include "Display.h" + +extern MenuFunctions menu_function_obj; +extern WiFiScan wifi_scan_obj; +extern Display display_obj; + +class CommandLine { + private: + String getSerialInput(); + void parseCommand(String input); + + public: + CommandLine(); + + void RunSetup(); + void main(uint32_t currentTime); +}; + +#endif diff --git a/esp32_marauder/Display.h b/esp32_marauder/Display.h index e68e0a9..7cb4226 100644 --- a/esp32_marauder/Display.h +++ b/esp32_marauder/Display.h @@ -52,7 +52,7 @@ PROGMEM static lv_obj_t *kb; */ // #define KIT -// #define TFT_FIY +// #define TFT_DIY class Display { diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 8c51b6d..97e8f2e 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -1445,7 +1445,7 @@ void MenuFunctions::RunSetup() display_obj.clearScreen(); this->drawStatusBar(); wifi_scan_obj.StartScan(WIFI_SCAN_PROBE, TFT_CYAN); - }); + }, "probescan"); addNodes(&wifiSnifferMenu, "Beacon Sniff", TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() { display_obj.clearScreen(); this->drawStatusBar(); @@ -1476,7 +1476,7 @@ void MenuFunctions::RunSetup() display_obj.clearScreen(); this->drawStatusBar(); wifi_scan_obj.StartScan(WIFI_SCAN_TARGET_AP, TFT_MAGENTA); - }); + }, "scanap"); // Build WiFi attack menu wifiAttackMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent @@ -1804,10 +1804,10 @@ void MenuFunctions::showMenuList(Menu * menu, int layer) // Function to add MenuNodes to a menu -void MenuFunctions::addNodes(Menu * menu, String name, uint16_t color, Menu * child, int place, std::function callable, bool selected) +void MenuFunctions::addNodes(Menu * menu, String name, uint16_t color, Menu * child, int place, std::function callable, bool selected, String command) { TFT_eSPI_Button new_button; - menu->list->add(MenuNode{name, color, place, &new_button, selected, callable}); + menu->list->add(MenuNode{name, command, color, place, &new_button, selected, callable}); //menu->list->add(MenuNode{name, color, place, callable}); } diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 0641ca0..1d46f70 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -171,8 +171,7 @@ class MenuFunctions //TFT_eSPI_Button key[BUTTON_ARRAY_LEN]; - void addNodes(Menu* menu, String name, uint16_t color, Menu* child, int place, std::function callable, bool selected = false, String command = null); - void drawStatusBar(); + void addNodes(Menu* menu, String name, uint16_t color, Menu* child, int place, std::function callable, bool selected = false, String command = ""); void updateStatusBar(); void battery(bool initial = false); void battery2(bool initial = false); @@ -205,6 +204,7 @@ class MenuFunctions void buildButtons(Menu* menu); void changeMenu(Menu* menu); + void drawStatusBar(); void displayCurrentMenu(); void main(uint32_t currentTime); void RunSetup(); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index d0e2b19..99ebcc7 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -804,67 +804,6 @@ void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color) initTime = millis(); } -/* -void WiFiScan::RunRickRoll(uint8_t scan_mode, uint16_t color) -{ - //Serial.println("Rick Roll..."); - display_obj.TOP_FIXED_AREA_2 = 48; - display_obj.tteBar = true; - display_obj.print_delay_1 = 15; - display_obj.print_delay_2 = 10; - //display_obj.clearScreen(); - 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(" Rick Roll Beacon ",120,16,2); - display_obj.touchToExit(); - display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); - packets_sent = 0; - //esp_wifi_set_mode(WIFI_MODE_STA); - WiFi.mode(WIFI_AP_STA); - esp_wifi_start(); - esp_wifi_set_promiscuous_filter(NULL); - esp_wifi_set_promiscuous(true); - esp_wifi_set_max_tx_power(78); - this->wifi_initialized = true; - initTime = millis(); - //display_obj.clearScreen(); - //Serial.println("End of func"); -}*/ - -// Function to prepare for beacon list -/* -void WiFiScan::RunBeaconList(uint8_t scan_mode, uint16_t color) { - sd_obj.openCapture("beacon_list"); - - display_obj.TOP_FIXED_AREA_2 = 48; - display_obj.tteBar = true; - display_obj.print_delay_1 = 15; - display_obj.print_delay_2 = 10; - //display_obj.clearScreen(); - 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(" Beacon Spam List ",120,16,2); - display_obj.touchToExit(); - display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); - display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA); - //wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - esp_wifi_init(&cfg); - esp_wifi_set_storage(WIFI_STORAGE_RAM); - esp_wifi_set_mode(WIFI_AP_STA); - esp_wifi_start(); - esp_wifi_set_promiscuous(true); - esp_wifi_set_max_tx_power(78); - esp_wifi_set_promiscuous_filter(&filt); - esp_wifi_set_promiscuous_rx_cb(&beaconListSnifferCallback); - esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE); - this->wifi_initialized = true; - initTime = millis(); -}*/ - // Function to prepare for beacon mimic void WiFiScan::RunMimicFlood(uint8_t scan_mode, uint16_t color) { @@ -897,103 +836,6 @@ void WiFiScan::RunMimicFlood(uint8_t scan_mode, uint16_t color) { //Serial.println("End of func"); } -// Function to prepare for beacon spam -/* -void WiFiScan::RunProbeFlood(uint8_t scan_mode, uint16_t color) { - display_obj.TOP_FIXED_AREA_2 = 48; - display_obj.tteBar = true; - display_obj.print_delay_1 = 15; - display_obj.print_delay_2 = 10; - //display_obj.clearScreen(); - 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(" Auth Flood ",120,16,2); - display_obj.touchToExit(); - display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); - packets_sent = 0; - //esp_wifi_set_mode(WIFI_MODE_STA); - //WiFi.mode(WIFI_AP_STA); - esp_wifi_init(&cfg); - esp_wifi_set_storage(WIFI_STORAGE_RAM); - //WiFi.mode(WIFI_AP_STA); - esp_wifi_set_mode(WIFI_AP_STA); - esp_wifi_start(); - esp_wifi_set_promiscuous_filter(NULL); - esp_wifi_set_promiscuous(true); - esp_wifi_set_max_tx_power(78); - this->wifi_initialized = true; - initTime = millis(); - //display_obj.clearScreen(); - //Serial.println("End of func"); -}*/ - -/* -void WiFiScan::RunDeauthFlood(uint8_t scan_mode, uint16_t color) { - display_obj.TOP_FIXED_AREA_2 = 48; - display_obj.tteBar = true; - display_obj.print_delay_1 = 15; - display_obj.print_delay_2 = 10; - //display_obj.clearScreen(); - 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(" Deauth Flood ",120,16,2); - display_obj.touchToExit(); - display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); - packets_sent = 0; - //esp_wifi_set_mode(WIFI_MODE_STA); - //WiFi.mode(WIFI_AP_STA); - esp_wifi_init(&cfg); - esp_wifi_set_storage(WIFI_STORAGE_RAM); - //WiFi.mode(WIFI_AP_STA); - esp_wifi_set_mode(WIFI_AP_STA); - esp_wifi_start(); - esp_wifi_set_promiscuous_filter(NULL); - esp_wifi_set_promiscuous(true); - esp_wifi_set_max_tx_power(78); - this->wifi_initialized = true; - initTime = millis(); - //display_obj.clearScreen(); - //Serial.println("End of func"); -}*/ - -// Function to prepare for beacon spam -/* -void WiFiScan::RunBeaconSpam(uint8_t scan_mode, uint16_t color) -{ - //Serial.println("Beacon Spam..."); - display_obj.TOP_FIXED_AREA_2 = 48; - display_obj.tteBar = true; - display_obj.print_delay_1 = 15; - display_obj.print_delay_2 = 10; - //display_obj.clearScreen(); - 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(" Beacon Spam Random ",120,16,2); - display_obj.touchToExit(); - display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); - packets_sent = 0; - //esp_wifi_set_mode(WIFI_MODE_STA); - //WiFi.mode(WIFI_AP_STA); - esp_wifi_init(&cfg); - esp_wifi_set_storage(WIFI_STORAGE_RAM); - //WiFi.mode(WIFI_AP_STA); - esp_wifi_set_mode(WIFI_AP_STA); - esp_wifi_start(); - esp_wifi_set_promiscuous_filter(NULL); - esp_wifi_set_promiscuous(true); - esp_wifi_set_max_tx_power(78); - this->wifi_initialized = true; - initTime = millis(); - //display_obj.clearScreen(); - //Serial.println("End of func"); -}*/ - void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color) { sd_obj.openCapture("pwnagotchi"); @@ -1123,22 +965,6 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color) display_obj.print_delay_1 = 50; display_obj.print_delay_2 = 20; - /* - esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); - esp_err_t init_ret = esp_bt_controller_init(&bt_cfg); - if (init_ret != ESP_OK) - Serial.println("Could not initialize BT Controller: " + (String)init_ret); - - //esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT); - //esp_bt_controller_disable(); - - - esp_err_t ret = esp_bt_controller_enable(ESP_BT_MODE_BTDM); - if (ret != ESP_OK) - Serial.println("Could not enable BT Controller: " + (String)ret); - - Serial.println("BT Controller Status: " + (String)esp_bt_controller_get_status()); - */ NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE); NimBLEDevice::setScanDuplicateCacheSize(200); NimBLEDevice::init(""); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 2d01d0d..c7e1da0 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -1,7 +1,9 @@ #ifndef configs_h - #define MARAUDER_MINI -// #define MARAUDER_V4 + #define configs_h + +// #define MARAUDER_MINI + #define MARAUDER_V4 #define MARAUDER_VERSION "v0.9.6" @@ -20,16 +22,6 @@ //// DISPLAY DEFINITIONS #ifdef MARAUDER_V4 - #define TFT_MISO 19 - #define TFT_MOSI 23 - #define TFT_SCLK 18 - #define TFT_CS 27 - #define TFT_DC 26 - #define TFT_RST 5 - #define TFT_BL 32 - #define TOUCH_CS 21 - #define SD_CS 4 - #define BANNER_TEXT_SIZE 2 #ifndef TFT_WIDTH @@ -146,6 +138,8 @@ //// MENU DEFINITIONS #ifdef MARAUDER_V4 + #define COMMAND_PREFIX "!" + // Keypad start position, key sizes and spacing #define KEY_X 120 // Centre of key #define KEY_Y 50 @@ -161,6 +155,8 @@ #endif #ifdef MARAUDER_MINI + #define COMMAND_PREFIX "!" + // Keypad start position, key sizes and spacing #define KEY_X (TFT_WIDTH/2) // Centre of key #define KEY_Y (TFT_HEIGHT/4.5) diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index af8d87c..d11bfe2 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -29,6 +29,7 @@ https://www.online-utility.org/image/convert/to/XBM #include "esp_interface.h" #include "a32u4_interface.h" #include "settings.h" +#include "CommandLine.h" #include "configs.h" #ifdef MARAUDER_MINI @@ -52,11 +53,14 @@ LedInterface led_obj; EspInterface esp_obj; A32u4Interface a32u4_obj; Settings settings_obj; +CommandLine cli_obj; + Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels, PIN, NEO_GRB + NEO_KHZ800); uint32_t currentTime = 0; + void backlightOn() { #ifdef MARAUDER_MINI digitalWrite(TFT_BL, LOW); @@ -77,6 +81,7 @@ void backlightOff() { #endif } + void setup() { pinMode(FLASH_BUTTON, INPUT); @@ -226,19 +231,17 @@ void setup() delay(2000); + cli_obj.RunSetup(); + menu_function_obj.RunSetup(); } void loop() { - // get the current time - //if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM)) currentTime = millis(); // Update all of our objects - //if ((!display_obj.draw_tft) && - // (wifi_scan_obj.currentScanMode != OTA_UPDATE)) if ((!display_obj.draw_tft) && (wifi_scan_obj.currentScanMode != ESP_UPDATE)) { display_obj.main(wifi_scan_obj.currentScanMode); @@ -247,13 +250,11 @@ void loop() battery_obj.main(currentTime); temp_obj.main(currentTime); settings_obj.main(currentTime); - //esp_obj.main(currentTime); - //a32u4_obj.main(currentTime); - //led_obj.main(currentTime); - //if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM)) if ((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) && - (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL)) + (wifi_scan_obj.currentScanMode != WIFI_SCAN_EAPOL)) { menu_function_obj.main(currentTime); + cli_obj.main(currentTime); + } if (wifi_scan_obj.currentScanMode == OTA_UPDATE) web_obj.main(); delay(1); @@ -266,17 +267,7 @@ void loop() else if (wifi_scan_obj.currentScanMode == ESP_UPDATE) { display_obj.main(wifi_scan_obj.currentScanMode); menu_function_obj.main(currentTime); - //esp_obj.program(); + cli_obj.main(currentTime); delay(1); } - //else - //{ - // web_obj.main(); - //} - - //Serial.println(wifi_scan_obj.currentScanMode); - - //Serial.print("Run Time: "); - //Serial.print(millis() - currentTime); - //Serial.println("ms"); }