Przeglądaj źródła

Trying out new UI option - commands not functional

0xchocolate 3 lat temu
rodzic
commit
21f153ad76

+ 35 - 33
applications/wifi_marauder_companion/scenes/wifi_marauder_scene_start.c

@@ -1,6 +1,6 @@
 #include "../wifi_marauder_app_i.h"
 #include "../wifi_marauder_app_i.h"
 
 
-#define NUM_MENU_ITEMS (29)
+#define NUM_MENU_ITEMS (15)
 
 
 // For each command, define whether additional arguments are needed
 // For each command, define whether additional arguments are needed
 // (enabling text input to fill them out), and whether the console
 // (enabling text input to fill them out), and whether the console
@@ -11,47 +11,37 @@
 #define FOCUS_CONSOLE_END   (false)
 #define FOCUS_CONSOLE_END   (false)
 struct WifiMarauderItem {
 struct WifiMarauderItem {
     const char* item_string;
     const char* item_string;
+    const char* options_menu[5];
+    int num_options_menu;
     bool needs_keyboard;
     bool needs_keyboard;
     bool focus_console_start;
     bool focus_console_start;
 };
 };
 
 
 const struct WifiMarauderItem items[NUM_MENU_ITEMS] = {
 const struct WifiMarauderItem items[NUM_MENU_ITEMS] = {
-    { "View Log (start)", NO_ARGS, FOCUS_CONSOLE_START },
-    { "View Log (end)", NO_ARGS, FOCUS_CONSOLE_END },
-    { "attack -t beacon -l", NO_ARGS, FOCUS_CONSOLE_END },
-    { "attack -t beacon -r", NO_ARGS, FOCUS_CONSOLE_END },
-    { "attack -t beacon -a", NO_ARGS, FOCUS_CONSOLE_END },
-    { "attack -t deauth", NO_ARGS, FOCUS_CONSOLE_END },
-    { "attack -t probe", NO_ARGS, FOCUS_CONSOLE_END },
-    { "attack -t rickroll", NO_ARGS, FOCUS_CONSOLE_END },
-    { "channel", NO_ARGS, FOCUS_CONSOLE_END },
-    { "channel -s", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "clearlist -a", NO_ARGS, FOCUS_CONSOLE_END },
-    { "clearlist -s", NO_ARGS, FOCUS_CONSOLE_END },
-    { "help", NO_ARGS, FOCUS_CONSOLE_START },
-    { "list -a", NO_ARGS, FOCUS_CONSOLE_START },
-    { "list -s", NO_ARGS, FOCUS_CONSOLE_START },
-    { "reboot", NO_ARGS, FOCUS_CONSOLE_END },
-    { "scanap", NO_ARGS, FOCUS_CONSOLE_END },
-    { "select -a", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "select -s", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "sniffbeacon", NO_ARGS, FOCUS_CONSOLE_END },
-    { "sniffdeauth", NO_ARGS, FOCUS_CONSOLE_END },
-    { "sniffesp", NO_ARGS, FOCUS_CONSOLE_END },
-    { "sniffpmkid", NO_ARGS, FOCUS_CONSOLE_END },
-    { "sniffpmkid -c", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "sniffpwn", NO_ARGS, FOCUS_CONSOLE_END },
-    { "ssid -a -g", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "ssid -a -n", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "ssid -r", INPUT_ARGS, FOCUS_CONSOLE_END },
-    { "update -w", NO_ARGS, FOCUS_CONSOLE_END },
+    { "View Log", {"(start)", "(end)"}, 2, NO_ARGS, FOCUS_CONSOLE_START },
+    { "attack -t beacon", {"-l", "-r", "-a"}, 3, NO_ARGS, FOCUS_CONSOLE_END },
+    { "attack -t", {"deauth", "probe", "rickroll"}, 3, NO_ARGS, FOCUS_CONSOLE_END },
+    { "channel", {}, 0, NO_ARGS, FOCUS_CONSOLE_END },
+    { "channel -s", {}, 0, INPUT_ARGS, FOCUS_CONSOLE_END },
+    { "clearlist", {"-a", "-s"}, 2, NO_ARGS, FOCUS_CONSOLE_END },
+    { "help", {}, 0, NO_ARGS, FOCUS_CONSOLE_START },
+    { "list", {"-a", "-s"}, 2, NO_ARGS, FOCUS_CONSOLE_START },
+    { "reboot", {}, 0, NO_ARGS, FOCUS_CONSOLE_END },
+    { "scanap", {}, 0, NO_ARGS, FOCUS_CONSOLE_END },
+    { "select", {"-a", "-s"}, 2, INPUT_ARGS, FOCUS_CONSOLE_END },
+    { "sniff", {"beacon", "deauth", "esp", "pmkid", "pwn"}, 5, NO_ARGS, FOCUS_CONSOLE_END },
+    { "sniffpmkid -c", {}, 0, INPUT_ARGS, FOCUS_CONSOLE_END },
+    { "ssid", {"-a -g", "-a -n", "-r"}, 3, INPUT_ARGS, FOCUS_CONSOLE_END },
+    { "update -w", {}, 0, NO_ARGS, FOCUS_CONSOLE_END },
 };
 };
 
 
+typedef struct WifiMarauderItem WifiMarauderItem;
+
 static void wifi_marauder_scene_start_var_list_enter_callback(void* context, uint32_t index) {
 static void wifi_marauder_scene_start_var_list_enter_callback(void* context, uint32_t index) {
     furi_assert(context);
     furi_assert(context);
     WifiMarauderApp* app = context;
     WifiMarauderApp* app = context;
     app->selected_tx_string = items[index].item_string;
     app->selected_tx_string = items[index].item_string;
-    app->is_command = (2 <= index);
+    app->is_command = (1 <= index);
     app->is_custom_tx_string = false;
     app->is_custom_tx_string = false;
     app->selected_menu_index = index;
     app->selected_menu_index = index;
     app->focus_console_start = items[index].focus_console_start;
     app->focus_console_start = items[index].focus_console_start;
@@ -62,6 +52,14 @@ static void wifi_marauder_scene_start_var_list_enter_callback(void* context, uin
     }
     }
 }
 }
 
 
+static void wifi_marauder_scene_start_var_list_change_callback(VariableItem* item) {
+    WifiMarauderItem* menu_item = variable_item_get_context(item);
+    furi_assert(menu_item);
+    uint8_t item_index = variable_item_get_current_value_index(item);
+    furi_assert(item_index < menu_item->num_options_menu);
+    variable_item_set_current_value_text(item, menu_item->options_menu[item_index]);
+}
+
 void wifi_marauder_scene_start_on_enter(void* context) {
 void wifi_marauder_scene_start_on_enter(void* context) {
     WifiMarauderApp* app = context;
     WifiMarauderApp* app = context;
     VariableItemList* var_item_list = app->var_item_list;
     VariableItemList* var_item_list = app->var_item_list;
@@ -69,9 +67,13 @@ void wifi_marauder_scene_start_on_enter(void* context) {
     variable_item_list_set_enter_callback(
     variable_item_list_set_enter_callback(
         var_item_list, wifi_marauder_scene_start_var_list_enter_callback, app);
         var_item_list, wifi_marauder_scene_start_var_list_enter_callback, app);
 
 
-    // TODO: organize menu
+    VariableItem* item;
     for (int i = 0; i < NUM_MENU_ITEMS; ++i) {
     for (int i = 0; i < NUM_MENU_ITEMS; ++i) {
-        variable_item_list_add(var_item_list, items[i].item_string, 0, NULL, NULL);
+        item = variable_item_list_add(var_item_list, items[i].item_string, items[i].num_options_menu, wifi_marauder_scene_start_var_list_change_callback, (WifiMarauderItem*)&items[i]);
+        if (items[i].num_options_menu) {
+            variable_item_set_current_value_index(item, 0);
+            variable_item_set_current_value_text(item, items[i].options_menu[0]);
+        }
     }
     }
 
 
     variable_item_list_set_selected_item(
     variable_item_list_set_selected_item(