Просмотр исходного кода

Add more sniff and attack commands

Just Call Me Koko 3 лет назад
Родитель
Сommit
2b130b9d11
3 измененных файлов с 140 добавлено и 3 удалено
  1. 123 2
      esp32_marauder/CommandLine.cpp
  2. 16 1
      esp32_marauder/CommandLine.h
  3. 1 0
      esp32_marauder/configs.h

+ 123 - 2
esp32_marauder/CommandLine.cpp

@@ -77,6 +77,22 @@ bool CommandLine::inRange(int max, int index) {
   return false;
   return false;
 }
 }
 
 
+bool CommandLine::apSelected() {
+  for (int i = 0; i < access_points->size(); i++) {
+    if (access_points->get(i).selected)
+      return true;
+  }
+
+  return false;
+}
+
+bool CommandLine::hasSSIDs() {
+  if (ssids->size() == 0)
+    return false;
+
+  return true;
+}
+
 void CommandLine::runCommand(String input) {
 void CommandLine::runCommand(String input) {
   if (input != "")
   if (input != "")
     Serial.println("#" + input);
     Serial.println("#" + input);
@@ -115,7 +131,14 @@ void CommandLine::runCommand(String input) {
   }
   }
   // Clear APs
   // Clear APs
   else if (cmd_args.get(0) == CLEARAP_CMD) {
   else if (cmd_args.get(0) == CLEARAP_CMD) {
-    wifi_scan_obj.RunClearAPs();
+    int ap_sw = this->argSearch(&cmd_args, "-a"); // APs
+    int ss_sw = this->argSearch(&cmd_args, "-s"); // SSIDs
+
+    if (ap_sw != -1)
+      wifi_scan_obj.RunClearAPs();
+
+    if (ss_sw != -1)
+      wifi_scan_obj.RunClearSSIDs();
   }
   }
 
 
   else if (cmd_args.get(0) == REBOOT_CMD) {
   else if (cmd_args.get(0) == REBOOT_CMD) {
@@ -123,7 +146,7 @@ void CommandLine::runCommand(String input) {
     ESP.restart();
     ESP.restart();
   }
   }
 
 
-  //// WiFi Scan/Attack commands
+  //// WiFi/Bluetooth Scan/Attack commands
   if (!wifi_scan_obj.scanning()) {
   if (!wifi_scan_obj.scanning()) {
 
 
     // AP Scan
     // AP Scan
@@ -144,6 +167,15 @@ void CommandLine::runCommand(String input) {
       #endif
       #endif
       wifi_scan_obj.StartScan(WIFI_SCAN_AP, TFT_MAGENTA);
       wifi_scan_obj.StartScan(WIFI_SCAN_AP, TFT_MAGENTA);
     }
     }
+    // Probe sniff
+    else if (cmd_args.get(0) == SNIFF_PROBE_CMD) {
+      Serial.println("Starting Probe sniff. Stop with " + (String)STOPSCAN_CMD);
+      #ifdef HAS_SCREEN
+        display_obj.clearScreen();
+        menu_function_obj.drawStatusBar();
+      #endif
+      wifi_scan_obj.StartScan(WIFI_SCAN_PROBE, TFT_MAGENTA);
+    }
     // Deauth sniff
     // Deauth sniff
     else if (cmd_args.get(0) == SNIFF_DEAUTH_CMD) {
     else if (cmd_args.get(0) == SNIFF_DEAUTH_CMD) {
       Serial.println("Starting Deauth sniff. Stop with " + (String)STOPSCAN_CMD);
       Serial.println("Starting Deauth sniff. Stop with " + (String)STOPSCAN_CMD);
@@ -153,6 +185,24 @@ void CommandLine::runCommand(String input) {
       #endif
       #endif
       wifi_scan_obj.StartScan(WIFI_SCAN_DEAUTH, TFT_RED);
       wifi_scan_obj.StartScan(WIFI_SCAN_DEAUTH, TFT_RED);
     }
     }
+    // Pwn sniff
+    else if (cmd_args.get(0) == SNIFF_PWN_CMD) {
+      Serial.println("Starting Pwnagotchi sniff. Stop with " + (String)STOPSCAN_CMD);
+      #ifdef HAS_SCREEN
+        display_obj.clearScreen();
+        menu_function_obj.drawStatusBar();
+      #endif
+      wifi_scan_obj.StartScan(WIFI_SCAN_PWN, TFT_MAGENTA);
+    }
+    // Espressif sniff
+    else if (cmd_args.get(0) == SNIFF_ESP_CMD) {
+      Serial.println("Starting Espressif device sniff. Stop with " + (String)STOPSCAN_CMD);
+      #ifdef HAS_SCREEN
+        display_obj.clearScreen();
+        menu_function_obj.drawStatusBar();
+      #endif
+      wifi_scan_obj.StartScan(WIFI_SCAN_ESPRESSIF, TFT_MAGENTA);
+    }
     // PMKID sniff
     // PMKID sniff
     else if (cmd_args.get(0) == SNIFF_PMKID_CMD) {
     else if (cmd_args.get(0) == SNIFF_PMKID_CMD) {
       Serial.println("Starting PMKID sniff. Stop with " + (String)STOPSCAN_CMD);
       Serial.println("Starting PMKID sniff. Stop with " + (String)STOPSCAN_CMD);
@@ -176,6 +226,10 @@ void CommandLine::runCommand(String input) {
         // Branch on attack type
         // Branch on attack type
         // Deauth
         // Deauth
         if (attack_type == ATTACK_TYPE_DEAUTH) {
         if (attack_type == ATTACK_TYPE_DEAUTH) {
+          if (!this->apSelected()) {
+            Serial.println("You don't have any targets selected. Use " + (String)SEL_CMD);
+            return;
+          }
           #ifdef HAS_SCREEN
           #ifdef HAS_SCREEN
             display_obj.clearScreen();
             display_obj.clearScreen();
             menu_function_obj.drawStatusBar();
             menu_function_obj.drawStatusBar();
@@ -187,6 +241,10 @@ void CommandLine::runCommand(String input) {
         else if (attack_type == ATTACK_TYPE_BEACON) {
         else if (attack_type == ATTACK_TYPE_BEACON) {
           // spam by list
           // spam by list
           if (list_beacon_sw != -1) {
           if (list_beacon_sw != -1) {
+            if (!this->hasSSIDs()) {
+              Serial.println("You don't have any SSIDs in your list. Use " + (String)SSID_CMD);
+              return;
+            }
             #ifdef HAS_SCREEN
             #ifdef HAS_SCREEN
               display_obj.clearScreen();
               display_obj.clearScreen();
               menu_function_obj.drawStatusBar();
               menu_function_obj.drawStatusBar();
@@ -207,12 +265,75 @@ void CommandLine::runCommand(String input) {
             Serial.println("You did not specify a beacon attack type");
             Serial.println("You did not specify a beacon attack type");
           }
           }
         }
         }
+        else if (attack_type == ATTACK_TYPE_PROBE) {
+          if (!this->apSelected()) {
+            Serial.println("You don't have any targets selected. Use " + (String)SEL_CMD);
+            return;
+          }
+          Serial.println("Starting Probe spam. Stop with " + (String)STOPSCAN_CMD);
+          #ifdef HAS_SCREEN
+            display_obj.clearScreen();
+            menu_function_obj.drawStatusBar();
+          #endif
+          wifi_scan_obj.StartScan(WIFI_ATTACK_AUTH, TFT_RED);
+        }
+        else if (attack_type == ATTACK_TYPE_RR) {
+          Serial.println("Starting Rick Roll Beacon spam. Stop with " + (String)STOPSCAN_CMD);
+          #ifdef HAS_SCREEN
+            display_obj.clearScreen();
+            menu_function_obj.drawStatusBar();
+          #endif
+          wifi_scan_obj.StartScan(WIFI_ATTACK_RICK_ROLL, TFT_YELLOW);
+        }
         else {
         else {
           Serial.println("Attack type not properly defined");
           Serial.println("Attack type not properly defined");
           return;
           return;
         }
         }
       }
       }
     }
     }
+
+    //// Bluetooth scan/attack commands
+    // Bluetooth scan
+    if (cmd_args.get(0) == BT_SNIFF_CMD) {
+      Serial.println("Starting Bluetooth scan. Stop with " + (String)STOPSCAN_CMD);
+      #ifdef HAS_SCREEN
+        display_obj.clearScreen();
+        menu_function_obj.drawStatusBar();
+      #endif
+      wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
+    }
+    // Bluetooth CC Skimmer scan
+    else if (cmd_args.get(0) == BT_SKIM_CMD) {
+      Serial.println("Starting Bluetooth CC Skimmer scan. Stop with " + (String)STOPSCAN_CMD);
+      #ifdef HAS_SCREEN
+        display_obj.clearScreen();
+        menu_function_obj.drawStatusBar();
+      #endif
+      wifi_scan_obj.StartScan(BT_SCAN_SKIMMERS, TFT_MAGENTA);
+    }
+
+    // Update command
+    if (cmd_args.get(0) == UPDATE_CMD) {
+      int w_sw = this->argSearch(&cmd_args, "-w"); // Web update
+      int sd_sw = this->argSearch(&cmd_args, "-s"); // SD Update
+
+      // Update via OTA
+      if (w_sw != -1) {
+        Serial.println("Starting Marauder OTA Update. Stop with " + (String)STOPSCAN_CMD);
+        wifi_scan_obj.currentScanMode = OTA_UPDATE;
+        #ifdef HAS_SCREEN
+          menu_function_obj.changeMenu(menu_function_obj.updateMenu);
+        #endif
+        web_obj.setupOTAupdate();
+      }
+      // Update via SD
+      else if (sd_sw != -1) {
+        if (!sd_obj.supported) {
+          Serial.println("SD card is not connected. Cannot perform SD Update");
+          return;
+        }
+      }
+    }
   }
   }
 
 
 
 

+ 16 - 1
esp32_marauder/CommandLine.h

@@ -9,6 +9,8 @@
 #endif 
 #endif 
 
 
 #include "WiFiScan.h"
 #include "WiFiScan.h"
+#include "Web.h"
+#include "SDInterface.h"
 
 
 #ifdef HAS_SCREEN
 #ifdef HAS_SCREEN
   extern MenuFunctions menu_function_obj;
   extern MenuFunctions menu_function_obj;
@@ -16,6 +18,8 @@
 #endif
 #endif
 
 
 extern WiFiScan wifi_scan_obj;
 extern WiFiScan wifi_scan_obj;
+extern Web web_obj;
+extern SDInterface sd_obj;
 extern LinkedList<AccessPoint>* access_points;
 extern LinkedList<AccessPoint>* access_points;
 extern LinkedList<ssid>* ssids;
 extern LinkedList<ssid>* ssids;
 extern const String PROGMEM version_number;
 extern const String PROGMEM version_number;
@@ -24,12 +28,16 @@ extern const String PROGMEM version_number;
 
 
 // Admin
 // Admin
 const char PROGMEM CH_CMD[] = "channel";
 const char PROGMEM CH_CMD[] = "channel";
-const char PROGMEM CLEARAP_CMD[] = "clearap";
+const char PROGMEM CLEARAP_CMD[] = "clearlist";
 const char PROGMEM REBOOT_CMD[] = "reboot";
 const char PROGMEM REBOOT_CMD[] = "reboot";
+const char PROGMEM UPDATE_CMD[] = "update";
 
 
 // WiFi sniff/scan
 // WiFi sniff/scan
 const char PROGMEM SCANAP_CMD[] = "scanap";
 const char PROGMEM SCANAP_CMD[] = "scanap";
 const char PROGMEM SNIFF_BEACON_CMD[] = "sniffbeacon";
 const char PROGMEM SNIFF_BEACON_CMD[] = "sniffbeacon";
+const char PROGMEM SNIFF_PROBE_CMD[] = "sniffprobe";
+const char PROGMEM SNIFF_PWN_CMD[] = "sniffpwn";
+const char PROGMEM SNIFF_ESP_CMD[] = "sniffesp";
 const char PROGMEM SNIFF_DEAUTH_CMD[] = "sniffdeauth";
 const char PROGMEM SNIFF_DEAUTH_CMD[] = "sniffdeauth";
 const char PROGMEM SNIFF_PMKID_CMD[] = "sniffpmkid";
 const char PROGMEM SNIFF_PMKID_CMD[] = "sniffpmkid";
 const char PROGMEM STOPSCAN_CMD[] = "stopscan";
 const char PROGMEM STOPSCAN_CMD[] = "stopscan";
@@ -39,12 +47,17 @@ const char PROGMEM ATTACK_CMD[] = "attack";
 const char PROGMEM ATTACK_TYPE_DEAUTH[] = "deauth";
 const char PROGMEM ATTACK_TYPE_DEAUTH[] = "deauth";
 const char PROGMEM ATTACK_TYPE_BEACON[] = "beacon";
 const char PROGMEM ATTACK_TYPE_BEACON[] = "beacon";
 const char PROGMEM ATTACK_TYPE_PROBE[] = "probe";
 const char PROGMEM ATTACK_TYPE_PROBE[] = "probe";
+const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
 
 
 // WiFi Aux
 // WiFi Aux
 const char PROGMEM LIST_AP_CMD[] = "list";
 const char PROGMEM LIST_AP_CMD[] = "list";
 const char PROGMEM SEL_CMD[] = "select";
 const char PROGMEM SEL_CMD[] = "select";
 const char PROGMEM SSID_CMD[] = "ssid";
 const char PROGMEM SSID_CMD[] = "ssid";
 
 
+// Bluetooth sniff/scan
+const char PROGMEM BT_SNIFF_CMD[] = "sniffbt";
+const char PROGMEM BT_SKIM_CMD[] = "sniffskim";
+
 class CommandLine {
 class CommandLine {
   private:
   private:
     String getSerialInput();
     String getSerialInput();
@@ -52,6 +65,8 @@ class CommandLine {
     void runCommand(String input);
     void runCommand(String input);
     bool checkValueExists(LinkedList<String>* cmd_args_list, int index);
     bool checkValueExists(LinkedList<String>* cmd_args_list, int index);
     bool inRange(int max, int index);
     bool inRange(int max, int index);
+    bool apSelected();
+    bool hasSSIDs();
     int argSearch(LinkedList<String>* cmd_args, String key);
     int argSearch(LinkedList<String>* cmd_args, String key);
 
 
     const char* ascii_art =
     const char* ascii_art =

+ 1 - 0
esp32_marauder/configs.h

@@ -385,6 +385,7 @@
     #define TFT_MAGENTA 0
     #define TFT_MAGENTA 0
     #define TFT_VIOLET 0
     #define TFT_VIOLET 0
     #define TFT_ORANGE 0
     #define TFT_ORANGE 0
+    #define TFT_YELLOW 0
     #define STANDARD_FONT_CHAR_LIMIT 40
     #define STANDARD_FONT_CHAR_LIMIT 40
     #define FLASH_BUTTON -1
     #define FLASH_BUTTON -1