diff --git a/esp32_marauder/Assets.h b/esp32_marauder/Assets.h index bcc2c51..1da29aa 100644 --- a/esp32_marauder/Assets.h +++ b/esp32_marauder/Assets.h @@ -227,7 +227,13 @@ PROGMEM static const unsigned char menu_icons[][66] = { 0x67, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0x1F, 0xF8, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, // FORCE: 39 0x67, 0xE6, 0x77, 0xEE, 0x87, 0xE0, 0x8F, 0xF1, 0x0F, 0xF0, 0x4F, 0xF5, - 0x1F, 0xF8, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF} + 0x1F, 0xF8, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, 0xC0, 0x3F, 0x3F, 0x3F, 0x3F, // FUNNY BEACON: 40 + 0xDF, 0xFF, 0x3E, 0xEF, 0xFF, 0x3D, 0x77, 0xBF, 0x3B, 0x77, 0x3E, 0x3B, + 0x7B, 0x3E, 0x37, 0x7B, 0xBF, 0x37, 0xFB, 0xF7, 0x37, 0xFB, 0xF7, 0x37, + 0xFB, 0xF3, 0x37, 0xBB, 0x7F, 0x37, 0x37, 0x3F, 0x3B, 0x77, 0x80, 0x3B, + 0xEF, 0xE1, 0x3D, 0xDF, 0xFF, 0x3E, 0x3F, 0x3F, 0x3F, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F} }; /*#ifndef MARAUDER_MINI diff --git a/esp32_marauder/CommandLine.cpp b/esp32_marauder/CommandLine.cpp index 2ba2698..d2395e7 100644 --- a/esp32_marauder/CommandLine.cpp +++ b/esp32_marauder/CommandLine.cpp @@ -976,6 +976,14 @@ void CommandLine::runCommand(String input) { #endif wifi_scan_obj.StartScan(WIFI_ATTACK_RICK_ROLL, TFT_YELLOW); } + else if (attack_type == ATTACK_TYPE_FUNNY) { + Serial.println("Starting Funny SSID Beacon spam. Stop with " + (String)STOPSCAN_CMD); + #ifdef HAS_SCREEN + display_obj.clearScreen(); + menu_function_obj.drawStatusBar(); + #endif + wifi_scan_obj.StartScan(WIFI_ATTACK_FUNNY_BEACON, TFT_CYAN); + } else { Serial.println("Attack type not properly defined"); return; diff --git a/esp32_marauder/CommandLine.h b/esp32_marauder/CommandLine.h index 529ef37..73c978f 100644 --- a/esp32_marauder/CommandLine.h +++ b/esp32_marauder/CommandLine.h @@ -82,6 +82,7 @@ const char PROGMEM ATTACK_CMD[] = "attack"; const char PROGMEM ATTACK_TYPE_DEAUTH[] = "deauth"; const char PROGMEM ATTACK_TYPE_BEACON[] = "beacon"; const char PROGMEM ATTACK_TYPE_PROBE[] = "probe"; +const char PROGMEM ATTACK_TYPE_FUNNY[] = "funny"; const char PROGMEM ATTACK_TYPE_RR[] = "rickroll"; const char PROGMEM ATTACK_TYPE_BM[] = "badmsg"; const char PROGMEM ATTACK_TYPE_S[] = "sleep"; diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 067a940..0928466 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -819,6 +819,7 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode != WIFI_ATTACK_SLEEP) && (wifi_scan_obj.currentScanMode != WIFI_ATTACK_SLEEP_TARGETED) && (wifi_scan_obj.currentScanMode != WIFI_ATTACK_MIMIC) && + (wifi_scan_obj.currentScanMode != WIFI_ATTACK_FUNNY_BEACON) && (wifi_scan_obj.currentScanMode != WIFI_ATTACK_RICK_ROLL)) display_obj.displayBuffer(); @@ -881,6 +882,7 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == WIFI_ATTACK_SLEEP) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_SLEEP_TARGETED) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_MIMIC) || + (wifi_scan_obj.currentScanMode == WIFI_ATTACK_FUNNY_BEACON) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) || (wifi_scan_obj.currentScanMode == BT_SCAN_ALL) || @@ -974,6 +976,7 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == WIFI_ATTACK_SLEEP) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_SLEEP_TARGETED) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_MIMIC) || + (wifi_scan_obj.currentScanMode == WIFI_ATTACK_FUNNY_BEACON) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) || (wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) || (wifi_scan_obj.currentScanMode == BT_SCAN_ALL) || @@ -1036,6 +1039,7 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode != WIFI_SCAN_RAW_CAPTURE) && (wifi_scan_obj.currentScanMode != WIFI_SCAN_CHAN_ANALYZER) && (wifi_scan_obj.currentScanMode != WIFI_SCAN_SIG_STREN) && + (wifi_scan_obj.currentScanMode != WIFI_ATTACK_FUNNY_BEACON) && (wifi_scan_obj.currentScanMode != WIFI_ATTACK_RICK_ROLL)) { // Need this to set all keys to false @@ -2333,6 +2337,11 @@ void MenuFunctions::RunSetup() this->drawStatusBar(); wifi_scan_obj.StartScan(WIFI_ATTACK_BEACON_SPAM, TFT_ORANGE); }); + this->addNodes(&wifiAttackMenu, text1_67, TFTCYAN, NULL, FUNNY_BEACON, [this]() { + display_obj.clearScreen(); + this->drawStatusBar(); + wifi_scan_obj.StartScan(WIFI_ATTACK_FUNNY_BEACON, TFT_CYAN); + }); this->addNodes(&wifiAttackMenu, text_table1[52], TFTYELLOW, NULL, RICK_ROLL, [this]() { display_obj.clearScreen(); this->drawStatusBar(); diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 8955af6..8ee6b99 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -92,6 +92,7 @@ extern Settings settings_obj; #define MULTISSID_SNIFF 37 // Use blanks icon #define JOINED 38 #define FORCE 39 +#define FUNNY_BEACON 40 PROGMEM void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); PROGMEM bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data); @@ -305,3 +306,4 @@ class MenuFunctions #endif #endif + diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 0325bcf..d5a957d 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -936,6 +936,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color) this->startWiFiAttacks(scan_mode, color, text_table1[51]); else if (scan_mode == WIFI_ATTACK_RICK_ROLL) this->startWiFiAttacks(scan_mode, color, text_table1[52]); + else if (scan_mode == WIFI_ATTACK_FUNNY_BEACON) + this->startWiFiAttacks(scan_mode, color, text1_67); else if (scan_mode == WIFI_ATTACK_AUTH) this->startWiFiAttacks(scan_mode, color, text_table1[53]); else if (scan_mode == WIFI_ATTACK_DEAUTH) @@ -1224,6 +1226,7 @@ void WiFiScan::StopScan(uint8_t scan_mode) (currentScanMode == WIFI_ATTACK_SLEEP_TARGETED) || (currentScanMode == WIFI_ATTACK_MIMIC) || (currentScanMode == WIFI_ATTACK_RICK_ROLL) || + (currentScanMode == WIFI_ATTACK_FUNNY_BEACON) || (currentScanMode == WIFI_PACKET_MONITOR) || (currentScanMode == WIFI_SCAN_CHAN_ANALYZER) || (currentScanMode == WIFI_SCAN_PACKET_RATE) || @@ -8745,8 +8748,7 @@ void WiFiScan::main(uint32_t currentTime) packets_sent = 0; } } - else if ((currentScanMode == WIFI_ATTACK_RICK_ROLL)) - { + else if ((currentScanMode == WIFI_ATTACK_RICK_ROLL)) { // Need this for loop because getTouch causes ~10ms delay // which makes beacon spam less effective for (int i = 0; i < 7; i++) @@ -8776,6 +8778,36 @@ void WiFiScan::main(uint32_t currentTime) packets_sent = 0; } } + else if ((currentScanMode == WIFI_ATTACK_FUNNY_BEACON)) { + // Need this for loop because getTouch causes ~10ms delay + // which makes beacon spam less effective + for (int i = 0; i < 7; i++) + { + for (int x = 0; x < (sizeof(funny_beacon)/sizeof(char *)); x++) + { + broadcastSetSSID(currentTime, funny_beacon[x]); + } + } + + if (currentTime - initTime >= 1000) + { + initTime = millis(); + //Serial.print("packets/sec: "); + //Serial.println(packets_sent); + String displayString = ""; + String displayString2 = ""; + displayString.concat(text18); + displayString.concat(packets_sent); + for (int x = 0; x < STANDARD_FONT_CHAR_LIMIT; x++) + displayString2.concat(" "); + #ifdef HAS_SCREEN + display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); + display_obj.showCenterText(displayString2, TFT_HEIGHT / 2); + display_obj.showCenterText(displayString, TFT_HEIGHT / 2); + #endif + packets_sent = 0; + } + } #ifdef HAS_GPS else if ((currentScanMode == WIFI_SCAN_OFF)) if(gps_obj.queue_enabled()) diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index c207d83..74a1fc4 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -136,6 +136,8 @@ #define WIFI_SCAN_SMTP 67 #define WIFI_SCAN_RDP 68 +#define WIFI_ATTACK_FUNNY_BEACON 99 + #define BASE_MULTIPLIER 4 #define ANALYZER_NAME_REFRESH 100 // Number of events to refresh the name @@ -289,6 +291,22 @@ class WiFiScan "08 and hurt you" }; + // H4W9 added Funny Beacon Spam + const char* funny_beacon[12] = { + "Abraham Linksys", + "Benjamin FrankLAN", + "Dora the Internet Explorer", + "FBI Surveillance Van 4", + "Get Off My LAN", + "Loading...", + "Martin Router King", + "404 Wi-Fi Unavailable", + "Test Wi-Fi Please Ignore", + "This LAN is My LAN", + "Titanic Syncing", + "Winternet is Coming" + }; + char* prefix = "G"; typedef struct diff --git a/esp32_marauder/lang_var.h b/esp32_marauder/lang_var.h index a740810..78a34e8 100644 --- a/esp32_marauder/lang_var.h +++ b/esp32_marauder/lang_var.h @@ -107,6 +107,8 @@ PROGMEM const char text1_63[] = "Detect Pineapple"; PROGMEM const char text1_64[] = "Detect MultiSSID"; PROGMEM const char text1_65[] = "Select probe SSIDs"; PROGMEM const char text1_66[] = "GPS"; // Text label for GPS Menu in Main Menu +PROGMEM const char text1_67[] = "Funny SSID Beacon"; + //SDInterface.cpp texts PROGMEM const char text2_0[] = "Error, could not find update.bin"; @@ -187,7 +189,7 @@ PROGMEM const char text4_49[] = " Detect MultiSSID "; //Making tables PROGMEM const char *text_table0[] = {text0_0,text0_1, text0_2, text0_3, text0_4, text0_5, text0_6, text0_7, text0_8}; -PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58,text1_59,text1_60,text1_61,text1_62,text1_63,text1_64, text1_65, text1_66}; +PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58,text1_59,text1_60,text1_61,text1_62,text1_63,text1_64, text1_65, text1_66, text1_67}; PROGMEM const char *text_table2[] = {text2_0,text2_1,text2_2,text2_3,text2_4,text2_5,text2_6,text2_7,text2_8,text2_9,text2_10,text2_11,text2_12,text2_13,text2_14}; PROGMEM const char *text_table3[] = {text3_0,text3_1,text3_2,text3_3,text3_4,text3_5}; PROGMEM const char *text_table4[] = {text4_0,text4_1,text4_2,text4_3,text4_4,text4_5,text4_6,text4_7,text1_54,text4_9,text4_10,text4_11,text4_12,text4_13,text4_14,text4_15,text4_16,text4_17,text4_18,text4_19,text4_20,text4_21,text4_22,text4_23,text4_24,text4_25,text4_26,text4_27,text4_28,text4_29,text4_30,text4_31,text4_32,text4_33,text4_34,text4_35,text4_36,text4_37,text4_38,text4_39,text4_40,text4_41,text4_42,text4_43,text4_44,text4_45,text4_46,text4_47,text4_48,text4_49}; diff --git a/pictures/icons/funny_beacon_22.bmp b/pictures/icons/funny_beacon_22.bmp new file mode 100644 index 0000000..0922a4b Binary files /dev/null and b/pictures/icons/funny_beacon_22.bmp differ