diff --git a/esp32_marauder/Display.cpp b/esp32_marauder/Display.cpp index 07721db..1584392 100644 --- a/esp32_marauder/Display.cpp +++ b/esp32_marauder/Display.cpp @@ -34,10 +34,10 @@ void Display::RunSetup() #ifdef TFT_SHIELD uint16_t calData[5] = { 275, 3494, 361, 3528, 4 }; // tft.setRotation(0); // Portrait with TFT Shield - Serial.println("Using TFT Shield"); + Serial.println(F("Using TFT Shield")); #else if defined(TFT_DIY) uint16_t calData[5] = { 339, 3470, 237, 3438, 2 }; // tft.setRotation(0); // Portrait with DIY TFT - Serial.println("Using TFT DIY"); + Serial.println(F("Using TFT DIY")); #endif tft.setTouch(calData); @@ -52,7 +52,7 @@ void Display::RunSetup() // Initialize file system // This should probably have its own class if (!SPIFFS.begin()) { - Serial.println("SPIFFS initialisation failed!"); + Serial.println(F("SPIFFS initialisation failed!")); while (1) yield(); // Stay here twiddling thumbs waiting } @@ -312,7 +312,7 @@ void Display::touchToExit() // Function to just draw the screen black void Display::clearScreen() { - Serial.println("clearScreen()"); + Serial.println(F("clearScreen()")); tft.fillScreen(TFT_BLACK); tft.setCursor(0, 0); } @@ -354,7 +354,7 @@ void Display::showCenterText(String text, int y) void Display::initScrollValues(bool tte) { - Serial.println("initScrollValues()"); + Serial.println(F("initScrollValues()")); yDraw = YMAX - BOT_FIXED_AREA - TEXT_HEIGHT; xPos = 0; @@ -372,7 +372,7 @@ void Display::initScrollValues(bool tte) yArea = YMAX - TOP_FIXED_AREA_2 - BOT_FIXED_AREA; } - for(int i = 0; i < 18; i++) blank[i] = 0; + for(uint8_t i = 0; i < 18; i++) blank[i] = 0; } @@ -410,7 +410,7 @@ int Display::scroll_line(uint32_t color) { // Function to setup hardware scroll for TFT screen void Display::setupScrollArea(uint16_t tfa, uint16_t bfa) { - Serial.println("setupScrollArea()"); + Serial.println(F("setupScrollArea()")); Serial.println(" tfa: " + (String)tfa); Serial.println(" bfa: " + (String)bfa); Serial.println("yStart: " + (String)this->yStart); @@ -458,7 +458,7 @@ void Display::drawJpeg(const char *filename, int xpos, int ypos) { jpegRender(xpos, ypos); } else { - Serial.println("Jpeg file format not supported!"); + Serial.println(F("Jpeg file format not supported!")); } } @@ -479,7 +479,7 @@ void Display::drawStylus() boolean pressed = tft.getTouch(&x, &y); if ((x <= 10) && (y <= 10) && (pressed)) { - Serial.println("Exit draw function"); + Serial.println(F("Exit draw function")); this->draw_tft = false; this->exit_draw = true; return; @@ -646,16 +646,16 @@ void createArray(const char *filename) { uint8_t data; byte line_len = 0; Serial.println(""); - Serial.println("// Generated by a JPEGDecoder library example sketch:"); - Serial.println("// https://github.com/Bodmer/JPEGDecoder"); + Serial.println(F("// Generated by a JPEGDecoder library example sketch:")); + Serial.println(F("// https://github.com/Bodmer/JPEGDecoder")); Serial.println(""); - Serial.println("#if defined(__AVR__)"); - Serial.println(" #include "); - Serial.println("#endif"); + Serial.println(F("#if defined(__AVR__)")); + Serial.println(F(" #include ")); + Serial.println(F("#endif")); Serial.println(""); - Serial.print ("const uint8_t "); + Serial.print (F("const uint8_t ")); while (*filename != '.') Serial.print(*filename++); - Serial.println("[] PROGMEM = {"); // PROGMEM added for AVR processors, it is ignored by Due + Serial.println(F("[] PROGMEM = {")); // PROGMEM added for AVR processors, it is ignored by Due while ( jpgFile.available()) { @@ -681,13 +681,13 @@ void createArray(const char *filename) { #ifdef ESP8266 void Display::listFiles(void) { Serial.println(); - Serial.println("SPIFFS files found:"); + Serial.println(F("SPIFFS files found:")); fs::Dir dir = SPIFFS.openDir("/"); // Root directory String line = "====================================="; Serial.println(line); - Serial.println(" File name Size"); + Serial.println(F(" File name Size")); Serial.println(line); while (dir.next()) { @@ -720,22 +720,22 @@ void Display::listFiles(void) { void Display::listDir(fs::FS &fs, const char * dirname, uint8_t levels) { Serial.println(); - Serial.println("SPIFFS files found:"); + Serial.println(F("SPIFFS files found:")); Serial.printf("Listing directory: %s\n", "/"); String line = "====================================="; Serial.println(line); - Serial.println(" File name Size"); + Serial.println(F(" File name Size")); Serial.println(line); fs::File root = fs.open(dirname); if (!root) { - Serial.println("Failed to open directory"); + Serial.println(F("Failed to open directory")); return; } if (!root.isDirectory()) { - Serial.println("Not a directory"); + Serial.println(F("Not a directory")); return; } diff --git a/esp32_marauder/Display.h b/esp32_marauder/Display.h index 0e27420..b324c79 100644 --- a/esp32_marauder/Display.h +++ b/esp32_marauder/Display.h @@ -76,7 +76,7 @@ class Display TFT_eSPI tft = TFT_eSPI(); TFT_eSprite img = TFT_eSprite(&tft); TFT_eSPI_Button key[BUTTON_ARRAY_LEN]; - String version_number = "v0.7.0"; + const String PROGMEM version_number = "v0.7.1"; bool printing = false; bool loading = false; diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 3e68077..2cb4260 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -262,6 +262,7 @@ void MenuFunctions::battery2(bool initial) void MenuFunctions::updateStatusBar() { + display_obj.tft.setTextSize(1); uint16_t the_color; // Draw temp info @@ -320,6 +321,7 @@ void MenuFunctions::updateStatusBar() void MenuFunctions::drawStatusBar() { + display_obj.tft.setTextSize(1); display_obj.tft.fillRect(0, 0, 240, STATUS_BAR_WIDTH, STATUSBAR_COLOR); //display_obj.tft.fillRect(0, STATUS_BAR_WIDTH + 1, 240, 1, TFT_DARKGREY); display_obj.tft.setTextColor(TFT_WHITE, STATUSBAR_COLOR); @@ -677,10 +679,10 @@ void MenuFunctions::changeMenu(Menu * menu) void MenuFunctions::showMenuList(Menu * menu, int layer) { // Iterate through all of the menu nodes in the menu - for (int i = 0; i < menu->list->size(); i++) + for (uint8_t i = 0; i < menu->list->size(); i++) { // Depending on layer, indent - for (int x = 0; x < layer * 4; x++) + for (uint8_t x = 0; x < layer * 4; x++) Serial.print(" "); Serial.print("Node: "); Serial.println(menu->list->get(i).name); @@ -732,7 +734,7 @@ void MenuFunctions::buildButtons(Menu * menu) void MenuFunctions::displayCurrentMenu() { - Serial.println("Displaying current menu..."); + Serial.println(F("Displaying current menu...")); display_obj.clearScreen(); display_obj.tft.setTextColor(TFT_LIGHTGREY, TFT_DARKGREY); this->drawStatusBar(); diff --git a/esp32_marauder/SDInterface.cpp b/esp32_marauder/SDInterface.cpp index 7644308..159cef3 100644 --- a/esp32_marauder/SDInterface.cpp +++ b/esp32_marauder/SDInterface.cpp @@ -4,7 +4,7 @@ bool SDInterface::initSD() { String display_string = ""; if (!SD.begin(SD_CS)) { - Serial.println("Failed to mount SD Card"); + Serial.println(F("Failed to mount SD Card")); this->supported = false; return false; } @@ -12,13 +12,13 @@ bool SDInterface::initSD() { this->supported = true; this->cardType = SD.cardType(); if (cardType == CARD_MMC) - Serial.println("SD: MMC Mounted"); + Serial.println(F("SD: MMC Mounted")); else if(cardType == CARD_SD) - Serial.println("SD: SDSC Mounted"); + Serial.println(F("SD: SDSC Mounted")); else if(cardType == CARD_SDHC) - Serial.println("SD: SDHC Mounted"); + Serial.println(F("SD: SDHC Mounted")); else - Serial.println("SD: UNKNOWN Card Mounted"); + Serial.println(F("SD: UNKNOWN Card Mounted")); //this->cardSizeBT = SD.cardSize(); //this->cardSizeKB = SD.cardSize() / 1024; @@ -76,13 +76,13 @@ void SDInterface::runUpdate() { display_obj.tft.setTextSize(1); display_obj.tft.setTextColor(TFT_WHITE); - display_obj.tft.println("Opening /update.bin..."); + display_obj.tft.println(F("Opening /update.bin...")); File updateBin = SD.open("/update.bin"); if (updateBin) { if(updateBin.isDirectory()){ display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println("Error, could not find update.bin"); - Serial.println("Error, update.bin is not a file"); + display_obj.tft.println(F("Error, could not find update.bin")); + Serial.println(F("Error, update.bin is not a file")); display_obj.tft.setTextColor(TFT_WHITE); updateBin.close(); return; @@ -91,14 +91,14 @@ void SDInterface::runUpdate() { size_t updateSize = updateBin.size(); if (updateSize > 0) { - display_obj.tft.println("Starting SD Update..."); - Serial.println("Try to start update"); + display_obj.tft.println(F("Starting SD Update...")); + Serial.println(F("Try to start update")); this->performUpdate(updateBin, updateSize); } else { display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println("Error, update.bin is empty"); - Serial.println("Error, file is empty"); + display_obj.tft.println(F("Error, update.bin is empty")); + Serial.println(F("Error, file is empty")); display_obj.tft.setTextColor(TFT_WHITE); return; } @@ -106,16 +106,16 @@ void SDInterface::runUpdate() { updateBin.close(); // whe finished remove the binary from sd card to indicate end of the process - display_obj.tft.println("rebooting..."); - Serial.println("rebooting..."); + display_obj.tft.println(F("rebooting...")); + Serial.println(F("rebooting...")); //SD.remove("/update.bin"); delay(1000); ESP.restart(); } else { display_obj.tft.setTextColor(TFT_RED); - display_obj.tft.println("Could not load update.bin from /"); - Serial.println("Could not load update.bin from sd root"); + display_obj.tft.println(F("Could not load update.bin from /")); + Serial.println(F("Could not load update.bin from sd root")); display_obj.tft.setTextColor(TFT_WHITE); } } @@ -123,7 +123,7 @@ void SDInterface::runUpdate() { void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { if (Update.begin(updateSize)) { display_obj.tft.println("File size: " + String(updateSize)); - display_obj.tft.println("Writing file to partition..."); + display_obj.tft.println(F("Writing file to partition...")); size_t written = Update.writeStream(updateSource); if (written == updateSize) { display_obj.tft.println("Written: " + String(written) + " successfully"); @@ -136,8 +136,8 @@ void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { if (Update.end()) { Serial.println("OTA done!"); if (Update.isFinished()) { - display_obj.tft.println("Update complete"); - Serial.println("Update successfully completed. Rebooting."); + display_obj.tft.println(F("Update complete")); + Serial.println(F("Update successfully completed. Rebooting.")); } else { display_obj.tft.setTextColor(TFT_RED); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 271a99d..ad657b2 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -162,6 +162,18 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color) WiFiScan::currentScanMode = scan_mode; } +void WiFiScan::shutdownWiFi() { + Serial.println("Ahhh yes...promiscuity will end"); + esp_wifi_set_promiscuous(false); + //WiFi.persistent(false); + WiFi.disconnect(true); + WiFi.mode(WIFI_OFF); + + esp_wifi_set_mode(WIFI_MODE_NULL); + esp_wifi_stop(); + esp_wifi_deinit(); +} + // Function to stop all wifi scans void WiFiScan::StopScan(uint8_t scan_mode) { @@ -176,13 +188,7 @@ void WiFiScan::StopScan(uint8_t scan_mode) (currentScanMode == WIFI_ATTACK_RICK_ROLL) || (currentScanMode == WIFI_PACKET_MONITOR)) { - Serial.println("Ahhh yes...promiscuity will end"); - esp_wifi_set_promiscuous(false); - WiFi.mode(WIFI_OFF); - - esp_wifi_set_mode(WIFI_MODE_NULL); - esp_wifi_stop(); - esp_wifi_deinit(); + this->shutdownWiFi(); } @@ -220,7 +226,7 @@ String WiFiScan::getStaMAC() char *buf; uint8_t mac[6]; char macAddrChr[18] = {0}; - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + //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_MODE_NULL); @@ -234,6 +240,7 @@ String WiFiScan::getStaMAC() mac[3], mac[4], mac[5]); + this->shutdownWiFi(); return String(macAddrChr); } @@ -242,7 +249,7 @@ String WiFiScan::getApMAC() char *buf; uint8_t mac[6]; char macAddrChr[18] = {0}; - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + //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_MODE_NULL); @@ -256,6 +263,7 @@ String WiFiScan::getApMAC() mac[3], mac[4], mac[5]); + this->shutdownWiFi(); return String(macAddrChr); } @@ -293,8 +301,8 @@ void WiFiScan::RunLvJoinWiFi(uint8_t scan_mode, uint16_t color) { void WiFiScan::RunInfo() { - //String sta_mac = this->getStaMAC(); - //String ap_mac = this->getApMAC(); + String sta_mac = this->getStaMAC(); + String ap_mac = this->getApMAC(); String free_ram = this->freeRAM(); //Serial.print("STA MAC: "); @@ -308,11 +316,10 @@ void WiFiScan::RunInfo() display_obj.tft.setCursor(0, 100); display_obj.tft.setTextSize(1); display_obj.tft.setTextColor(TFT_CYAN); - - //display_obj.tft.println(" Station MAC: " + sta_mac); - //display_obj.tft.println(" AP MAC: " + ap_mac); display_obj.tft.println(" Firmware: Marauder"); display_obj.tft.println(" Version: " + display_obj.version_number + "\n"); + display_obj.tft.println(" Station MAC: " + sta_mac); + display_obj.tft.println(" AP MAC: " + ap_mac); display_obj.tft.println(" " + free_ram); if (sd_obj.supported) { @@ -353,7 +360,7 @@ void WiFiScan::RunEspressifScan(uint8_t scan_mode, uint16_t color) { 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(); + //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_MODE_NULL); @@ -398,7 +405,7 @@ void WiFiScan::RunPacketMonitor(uint8_t scan_mode, uint16_t color) display_obj.tftDrawExitScaleButtons(); Serial.println("Running packet scan..."); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + //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_MODE_NULL); @@ -501,7 +508,11 @@ void WiFiScan::RunBeaconSpam(uint8_t scan_mode, uint16_t color) display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); packets_sent = 0; //esp_wifi_set_mode(WIFI_MODE_STA); - WiFi.mode(WIFI_AP_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); @@ -528,7 +539,7 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color) 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(); + //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_MODE_NULL); @@ -558,7 +569,7 @@ void WiFiScan::RunBeaconScan(uint8_t scan_mode, uint16_t color) 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(); + //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_MODE_NULL); @@ -587,7 +598,7 @@ void WiFiScan::RunDeauthScan(uint8_t scan_mode, uint16_t color) display_obj.touchToExit(); display_obj.tft.setTextColor(TFT_RED, TFT_BLACK); display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + //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_MODE_NULL); @@ -618,7 +629,7 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color) 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(); + //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_MODE_NULL); @@ -831,7 +842,10 @@ void WiFiScan::pwnSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) { Serial.print((char)snifferPacket->payload[i + 38]); //display_string.concat((char)snifferPacket->payload[i + 38]); - essid.concat((char)snifferPacket->payload[i + 38]); + if (isAscii(snifferPacket->payload[i + 38])) + essid.concat((char)snifferPacket->payload[i + 38]); + else + Serial.println("Got non-ascii character: " + (String)(char)snifferPacket->payload[i + 38]); } //essid.concat("\": \"\"}}"); //Serial.println("\n" + (String)(snifferPacket->payload[37]) + " -> " + essid); @@ -841,6 +855,7 @@ void WiFiScan::pwnSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) JsonObject& json = jsonBuffer.parseObject(essid); if (!json.success()) { Serial.println("\nCould not parse Pwnagotchi json"); + display_string.concat(essid); } else { Serial.println("\nSuccessfully parsed json"); diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index b5f642e..86ef770 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -165,6 +165,7 @@ class WiFiScan wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + void shutdownWiFi(); String getStaMAC(); String getApMAC(); String freeRAM(); diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index 93491e9..a7c3cc5 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -79,11 +79,11 @@ void setup() display_obj.tft.println("Started Serial"); - Serial.println("\n\n--------------------------------\n"); - Serial.println(" ESP32 Marauder \n"); + Serial.println(F("\n\n--------------------------------\n")); + Serial.println(F(" ESP32 Marauder \n")); Serial.println(" " + display_obj.version_number + "\n"); - Serial.println(" By: justcallmekoko\n"); - Serial.println("--------------------------------\n\n"); + Serial.println(F(" By: justcallmekoko\n")); + Serial.println(F("--------------------------------\n\n")); //Serial.println("Internal Temp: " + (String)((temprature_sens_read() - 32) / 1.8)); @@ -93,13 +93,13 @@ void setup() // Do some SD stuff if(sd_obj.initSD()) { - Serial.println("SD Card supported"); - display_obj.tft.println("Initialized SD Card"); + Serial.println(F("SD Card supported")); + display_obj.tft.println(F("Initialized SD Card")); } else { - Serial.println("SD Card NOT Supported"); + Serial.println(F("SD Card NOT Supported")); display_obj.tft.setTextColor(TFT_RED, TFT_BLACK); - display_obj.tft.println("Failed to Initialize SD Card"); + display_obj.tft.println(F("Failed to Initialize SD Card")); display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); } @@ -117,30 +117,30 @@ void setup() Serial.println(wifi_scan_obj.freeRAM()); battery_obj.RunSetup(); - display_obj.tft.println("Checked battery configuration"); + display_obj.tft.println(F("Checked battery configuration")); // Temperature stuff Serial.println(wifi_scan_obj.freeRAM()); temp_obj.RunSetup(); - display_obj.tft.println("Initialized temperature interface"); + display_obj.tft.println(F("Initialized temperature interface")); battery_obj.battery_level = battery_obj.getBatteryLevel(); if (battery_obj.i2c_supported) { - Serial.println("IP5306 I2C Supported: true"); + Serial.println(F("IP5306 I2C Supported: true")); } else - Serial.println("IP5306 I2C Supported: false"); + Serial.println(F("IP5306 I2C Supported: false")); Serial.println(wifi_scan_obj.freeRAM()); // Do some LED stuff led_obj.RunSetup(); - display_obj.tft.println("Initialized LED Interface"); + display_obj.tft.println(F("Initialized LED Interface")); - display_obj.tft.println("Starting..."); + display_obj.tft.println(F("Starting...")); delay(1000);