Преглед изворни кода

Added support for probe attack stage in automation script

tcpassos пре 2 година
родитељ
комит
8da2c9bb1d

+ 29 - 0
applications/external/wifi_marauder_companion/script/wifi_marauder_script.c

@@ -3,6 +3,7 @@
 
 #define WIFI_MARAUDER_DEFAULT_TIMEOUT_SCAN 15
 #define WIFI_MARAUDER_DEFAULT_TIMEOUT_DEAUTH 30
+#define WIFI_MARAUDER_DEFAULT_TIMEOUT_PROBE 60
 #define WIFI_MARAUDER_DEFAULT_TIMEOUT_SNIFF_PMKID 60
 #define WIFI_MARAUDER_DEFAULT_TIMEOUT_SNIFF_BEACON 60
 #define WIFI_MARAUDER_DEFAULT_TIMEOUT_BEACON 60
@@ -131,6 +132,21 @@ WifiMarauderScriptStageDeauth* _wifi_marauder_script_get_stage_deauth(cJSON *sta
     return deauth_stage;
 }
 
+WifiMarauderScriptStageProbe* _wifi_marauder_script_get_stage_probe(cJSON *stages) {
+    cJSON *probe_stage_json = cJSON_GetObjectItemCaseSensitive(stages, "probe");
+    if (probe_stage_json == NULL) {
+        return NULL;
+    }
+
+    cJSON* timeout = cJSON_GetObjectItem(probe_stage_json, "timeout");
+    int probe_timeout = timeout != NULL ? (int)cJSON_GetNumberValue(timeout) : WIFI_MARAUDER_DEFAULT_TIMEOUT_PROBE;
+
+    WifiMarauderScriptStageProbe *probe_stage = (WifiMarauderScriptStageProbe*) malloc(sizeof(WifiMarauderScriptStageProbe));
+    probe_stage->timeout = probe_timeout;
+
+    return probe_stage;
+}
+
 WifiMarauderScriptStageSniffBeacon* _wifi_marauder_script_get_stage_sniff_beacon(cJSON *stages) {
     cJSON* sniffbeacon_stage_json = cJSON_GetObjectItem(stages, "sniffbeacon");
     if (sniffbeacon_stage_json == NULL) {
@@ -260,6 +276,16 @@ void _wifi_marauder_script_load_stages(WifiMarauderScript *script, cJSON *stages
         );
     }
 
+    // Probe stage
+    WifiMarauderScriptStageProbe *stage_probe = _wifi_marauder_script_get_stage_probe(stages);
+    if (stage_probe != NULL) {
+        _wifi_marauder_script_add_stage(
+            script,
+            _wifi_marauder_script_create_stage(WifiMarauderScriptStageTypeProbe, stage_probe),
+            &prev_stage
+        );
+    }
+
     // Sniff beacon stage
     WifiMarauderScriptStageSniffBeacon *sniff_beacon = _wifi_marauder_script_get_stage_sniff_beacon(stages);
     if (sniff_beacon != NULL) {
@@ -365,6 +391,9 @@ void wifi_marauder_script_free(WifiMarauderScript *script) {
             case WifiMarauderScriptStageTypeDeauth:
                 free(current_stage->stage);
                 break;
+            case WifiMarauderScriptStageTypeProbe:
+                free(current_stage->stage);
+                break;
             case WifiMarauderScriptStageTypeSniffPmkid:
                 free(current_stage->stage);
                 break;

+ 9 - 0
applications/external/wifi_marauder_companion/script/wifi_marauder_script.h

@@ -20,6 +20,7 @@
  * - Scan
  * - Select
  * - Deauth
+ * - Probe
  * - Sniff beacon
  * - Sniff PMKID
  * - Beacon List
@@ -45,6 +46,9 @@
  *         "deauth": {
  *             "timeout": seconds
  *         },
+ *         "probe": {
+ *             "timeout": seconds
+ *         },
  *         "sniffBeacon": {
  *             "timeout": seconds
  *         },
@@ -75,6 +79,7 @@ typedef enum {
     WifiMarauderScriptStageTypeScan,
     WifiMarauderScriptStageTypeSelect,
     WifiMarauderScriptStageTypeDeauth,
+    WifiMarauderScriptStageTypeProbe,
     WifiMarauderScriptStageTypeSniffBeacon,
     WifiMarauderScriptStageTypeSniffPmkid,
     WifiMarauderScriptStageTypeBeaconList,
@@ -115,6 +120,10 @@ typedef struct WifiMarauderScriptStageDeauth {
     int timeout;
 } WifiMarauderScriptStageDeauth;
 
+typedef struct WifiMarauderScriptStageProbe {
+    int timeout;
+} WifiMarauderScriptStageProbe;
+
 typedef struct WifiMarauderScriptStageSniffBeacon {
     int timeout;
 } WifiMarauderScriptStageSniffBeacon;

+ 10 - 0
applications/external/wifi_marauder_companion/script/wifi_marauder_script_executor.c

@@ -73,6 +73,13 @@ void _wifi_marauder_script_execute_deauth(WifiMarauderScriptStageDeauth* stage,
     _send_stop();
 }
 
+void _wifi_marauder_script_execute_probe(WifiMarauderScriptStageProbe* stage, WifiMarauderScriptWorker* worker) {
+    const char attack_command[] = "attack -t probe\n";
+    wifi_marauder_uart_tx((uint8_t*)(attack_command), strlen(attack_command));
+    _wifi_marauder_script_delay(worker, stage->timeout);
+    _send_stop();
+}
+
 void _wifi_marauder_script_execute_sniff_beacon(WifiMarauderScriptStageSniffBeacon* stage, WifiMarauderScriptWorker* worker) {
     const char sniff_command[] = "sniffbeacon\n";
     wifi_marauder_uart_tx((uint8_t*)sniff_command, strlen(sniff_command));
@@ -151,6 +158,9 @@ void wifi_marauder_script_execute_stage(WifiMarauderScriptStage* stage, void *co
         case WifiMarauderScriptStageTypeDeauth:
             _wifi_marauder_script_execute_deauth((WifiMarauderScriptStageDeauth*)stage_data, worker);
             break;
+        case WifiMarauderScriptStageTypeProbe:
+            _wifi_marauder_script_execute_probe((WifiMarauderScriptStageProbe*)stage_data, worker);
+            break;
         case WifiMarauderScriptStageTypeSniffBeacon:
             _wifi_marauder_script_execute_sniff_beacon((WifiMarauderScriptStageSniffBeacon*)stage_data, worker);
             break;