MX 2 lat temu
rodzic
commit
bd77ed3f2f

+ 4 - 4
non_catalog_apps/esp32_gravity/README.md

@@ -108,13 +108,13 @@ which esp32-Gravity is compatible with which Flipper-Gravity.
 * Probe: Any, target-ssids, APs
 * Sniff: On, Off
 * target-ssids: add, remove, list
-* scan: <ssid> WiFi BT BLE OFF
+* scan: <ssid> WiFi BT BLE *SERVICES* OFF
 * hop: on, off, sequential, random, default, set
-* view: sta, ap, bt, sta+ap+bt, sta+ap
+* view: sta, ap, bt, sta+ap+bt, sta+ap, *services*
 * select: sta, ap, bt
 * selected: sta, ap, bt, sta+ap+bt
-* clear: sta, ap, bt
-* purge: WiFi, BT, BLE
+* clear: sta, ap, bt, *services* *selected*
+* purge: WiFi, BT, BLE, *AP* *STA* *SERVICES*
 * get/set: <variables> BLE_PURGE_STRAT _MIN_AGE _MAX_RSSI
 * deauth: off, frame STA, device STA, spoof STA, frame APs, device APs, spoof APs, frame broadcast, device broadcast, spoof broadcast
 * mana: on, off, clear

+ 1 - 1
non_catalog_apps/esp32_gravity/application.fam

@@ -12,6 +12,6 @@ App(
     fap_icon_assets_symbol="uart_terminal",
     fap_author="https://github.com/chris-bc",
     fap_weburl="https://github.com/chris-bc/Flipper-Gravity",
-    fap_version="0.5.0",
+    fap_version="0.6.0",
     fap_description="App to control ESP32 Gravity wireless exploration platform.",
 )

+ 0 - 49
non_catalog_apps/esp32_gravity/esp_flip_const.h

@@ -1,49 +0,0 @@
-#ifndef ESP_FLIP_CONST_H
-#define ESP_FLIP_CONST_H
-
-/* Command usage string - SHORT_* is compressed help text for Flipper */
-const char USAGE_BEACON[] = "Beacon spam attack. Usage: beacon [ RICKROLL | RANDOM [ COUNT ] | INFINITE | TARGET-SSIDs | APs | OFF ]";
-const char USAGE_TARGET_SSIDS[] = "Manage SSID targets. Usage: target-ssids [ ( ADD | REMOVE ) <ssid_name> ]";
-const char USAGE_PROBE[] = "Probe flood attack. Usage: probe [ ANY | TARGET-SSIDs | APs | OFF ]";
-const char USAGE_FUZZ[] = "Various invalid packets. Usage: fuzz OFF | ( ( BEACON | REQ | RESP )+ ( OVERFLOW | MALFORMED ) )";
-const char USAGE_SNIFF[] = "Display interesting packets. Usage: sniff [ ON | OFF ]";
-const char USAGE_DEAUTH[] = "Deauth attack. Usage: deauth [ <millis> ] [ FRAME | DEVICE | SPOOF ] [ STA | AP | BROADCAST | OFF ]";
-const char USAGE_MANA[] = "Mana attack. Usage: mana ( CLEAR | ( [ VERBOSE ] [ ON | OFF ] ) | ( AUTH [ NONE | WEP | WPA ] ) | ( LOUD [ ON | OFF ] ) )";
-const char USAGE_STALK[] = "Toggle target tracking/homing. Usage: stalk";
-const char USAGE_AP_DOS[] = "802.11 denial-of-service attack. Usage: ap-dos [ ON | OFF ]";
-const char USAGE_AP_CLONE[] = "Clone and attempt takeover of the specified AP. Usage: ap-clone [ <AP MAC> | APs | OFF ]";
-const char USAGE_SCAN[] = "Scan for wireless devices. Usage: scan [ <ssid> | ON | OFF ]";
-const char USAGE_HOP[] = "Configure channel hopping. Usage: hop [ <millis> ] [ ON | OFF | DEFAULT | KILL ]";
-const char USAGE_SET[] = "Set a variable. Usage: set <variable> <value>";
-const char USAGE_GET[] = "Get a variable. Usage: get <variable>";
-const char USAGE_VIEW[] = "List available targets. Usage: view ( ( AP [ selectedSTA ] ) | ( STA [ selectedAP ] ) )+";
-const char USAGE_SELECT[] = "Select an element. Usage: select ( AP | STA ) <elementId>+";
-const char USAGE_SELECTED[] = "Display selected elements. Usage: selected ( AP | STA )";
-const char USAGE_CLEAR[] = "Clear stored APs or STAs. Usage: clear ( AP | STA | ALL )";
-const char USAGE_HANDSHAKE[] = "Toggle monitoring for encryption material. Usage handshake [ ON | OFF ]";
-const char USAGE_COMMANDS[] = "Display a *brief* summary of Gravity commands";
-const char USAGE_INFO[] = "Provide help information for the specified command. Usage: info <cmd>";
-
-const char SHORT_BEACON[] = "beacon RANDOM <count>";
-const char SHORT_TARGET_SSIDS[] = "(ADD | REMOVE) <apName>";
-const char SHORT_PROBE[] = "probe ANY | TARGET-SSIDs | APs | OFF";
-const char SHORT_FUZZ[] = "fuzz OFF | ( ( BEACON | REQ | RESP )+ ( OVERFLOW | MALFORMED ) )";
-const char SHORT_SNIFF[] = "sniff [ ON | OFF ]";
-const char SHORT_DEAUTH[] = "deauth <millis>";
-const char SHORT_MANA[] = "Mana attack";
-const char SHORT_STALK[] = "Track RSSI";
-const char SHORT_AP_DOS[] = "ap-dos [ ON | OFF ]";
-const char SHORT_AP_CLONE[] = "ap-clone <AP MAC>";
-const char SHORT_SCAN[] = "scan <SSID Name>";
-const char SHORT_HOP[] = "hop <millis>";
-const char SHORT_SET[] = "set <variable> <value>";
-const char SHORT_GET[] = "get <variable>";
-const char SHORT_VIEW[] = "VIEW ( ( AP [ selectedSTA ] ) | ( STA [ selectedAP ] ) )+";
-const char SHORT_SELECT[] = "select ( AP | STA ) <id>+  sep. ^";
-const char SHORT_SELECTED[] = "selected ( AP | STA )";
-const char SHORT_CLEAR[] = "clear ( AP | STA | ALL )";
-const char SHORT_HANDSHAKE[] = "handshake [ ON | OFF ]";
-const char SHORT_COMMANDS[] = "Brief command summary";
-const char SHORT_INFO[] = "Command help. info <cmd>";
-
-#endif

+ 4 - 1
non_catalog_apps/esp32_gravity/esp_flip_struct.h

@@ -14,6 +14,8 @@ enum AttackMode {
     ATTACK_AP_DOS,
     ATTACK_AP_CLONE,
     ATTACK_SCAN,
+    ATTACK_SCAN_BT_DISCOVERY,
+    ATTACK_SCAN_BLE,
     ATTACK_HANDSHAKE,
     ATTACK_RANDOMISE_MAC, // True
     ATTACK_BT,
@@ -45,9 +47,10 @@ enum GravityCommand {
     GRAVITY_COMMANDS,
     GRAVITY_INFO,
     GRAVITY_GET_VERSION,
+    GRAVITY_PURGE,
     GRAVITY_BT,
     GRAVITY_NONE = 99
 };
 typedef enum GravityCommand GravityCommand;
 
-#endif
+#endif

+ 15 - 14
non_catalog_apps/esp32_gravity/scenes/uart_terminal_scene_start.c

@@ -64,9 +64,9 @@ const UART_TerminalItem items[NUM_MENU_ITEMS] = {
     FOCUS_CONSOLE_END,
     NO_TIP},
     {"Scan",
-    {"Status", "<SSID>", "WiFi", "BT", "BLE", "Off"},
-    6,
-    {"scan", "scan ", "scan wifi", "scan bt", "scan ble", "scan off"},
+    {"Status", "<SSID>", "WiFi", "BT", "BLE", "BT Svcs", "Off"},
+    7,
+    {"scan", "scan ", "scan wifi", "scan bt", "scan ble", "scan bt services", "scan off"},
     TOGGLE_ARGS,
     FOCUS_CONSOLE_END,
     NO_TIP},
@@ -78,9 +78,9 @@ const UART_TerminalItem items[NUM_MENU_ITEMS] = {
     FOCUS_CONSOLE_END,
     NO_TIP},
     {"View",
-    {"STA", "AP", "BT", "BT+AP+STA", "STA+AP"},
-    5,
-    {"view sta", "view ap", "view bt", "view ap sta bt", "view sta ap"},
+    {"STA", "AP", "BT", "BT SVCS", "BT+AP+STA", "STA+AP"},
+    6,
+    {"view sta", "view ap", "view bt", "view bt services", "view ap sta bt", "view sta ap"},
     NO_ARGS,
     FOCUS_CONSOLE_START,
     NO_TIP},
@@ -99,16 +99,16 @@ const UART_TerminalItem items[NUM_MENU_ITEMS] = {
     FOCUS_CONSOLE_START,
     NO_TIP},
     {"Clear",
-    {"STA", "AP", "BT", "ALL"},
-    4,
-    {"clear sta", "clear ap", "clear bt", "clear all"},
+    {"STA", "STA Sel.", "AP", "AP Sel.", "BT", "BT Sel.", "BT Svcs", "ALL"},
+    8,
+    {"clear sta", "clear sta selected", "clear ap", "clear ap selected", "clear bt", "clear bt selected", "clear bt services", "clear all"},
     NO_ARGS,
     FOCUS_CONSOLE_END,
     NO_TIP},
     {"Purge",
-    {"BLE"},
-    1,
-    {"purge ble"},
+    {"AP", "STA", "BT", "BLE"},
+    4,
+    {"purge ap", "purge sta", "purge bt", "purge ble"},
     NO_ARGS,
     FOCUS_CONSOLE_END,
     NO_TIP},
@@ -225,9 +225,9 @@ static void uart_terminal_scene_start_var_list_enter_callback(void* context, uin
     furi_assert(index < NUM_MENU_ITEMS);
     const UART_TerminalItem* item = &items[index];
 
-    dolphin_deed(DolphinDeedGpioUartBridge);
 
     const int selected_option_index = app->selected_option_index[index];
+    dolphin_deed(DolphinDeedGpioUartBridge);
     furi_assert(selected_option_index < item->num_options_menu);
     app->selected_tx_string = item->actual_commands[selected_option_index];
     /* Don't clear screen if command is an empty string */
@@ -240,9 +240,10 @@ static void uart_terminal_scene_start_var_list_enter_callback(void* context, uin
     app->show_stopscan_tip = item->show_stopscan_tip;
 
     /* GRAVITY: Set app->gravityMode based on first word in command */
-    
+
     //char *cmd = strsep(&origCmd, " ");
     /* GRAVITY: strsep is disabled by Flipper's SDK. RYO */
+
     char *cmd = strToken((char *)app->selected_tx_string, ' ', 1);
     if (!strcmp(cmd, "beacon")) {
         app->gravityCommand = GRAVITY_BEACON;

+ 4 - 0
non_catalog_apps/esp32_gravity/scenes/uart_terminal_scene_text_input.c

@@ -28,6 +28,7 @@ void uart_terminal_scene_text_input_on_enter(void* context) {
     // Setup view
     UART_TextInput* text_input = app->text_input;
     // Add help message to header
+
     char *helpStr = NULL;
     switch (app->gravityCommand) {
         case GRAVITY_BEACON:
@@ -93,6 +94,9 @@ void uart_terminal_scene_text_input_on_enter(void* context) {
         case GRAVITY_INFO:
             helpStr = (char *)SHORT_INFO;
             break;
+        case GRAVITY_PURGE:
+            helpStr = (char *)SHORT_PURGE;
+            break;
         default:
             helpStr = "Send command to UART";
             break;

+ 1 - 1
non_catalog_apps/esp32_gravity/uart_terminal_app_i.h

@@ -12,7 +12,7 @@
 #include <gui/modules/variable_item_list.h>
 #include "uart_text_input.h"
 
-#define GRAVITY_VERSION "0.5.0"
+#define GRAVITY_VERSION "0.6.0"
 
 #define NUM_MENU_ITEMS (23)
 

+ 22 - 18
non_catalog_apps/esp32_gravity/usage_const.h

@@ -2,49 +2,53 @@
 #define ESP_FLIP_CONST_H
 
 /* Command usage string - SHORT_* is compressed help text for Flipper */
-const char USAGE_BT[] = "Bluetooth Test Module. bluetooth [ ON | OFF ]";
-const char USAGE_BEACON[] = "Beacon spam attack. Usage: beacon [ RICKROLL | RANDOM [ COUNT ] | INFINITE | TARGET-SSIDs | APs | OFF ] [ AUTH ( OPEN | WPA )+ ]";
+const char USAGE_BT[] = "Bluetooth Test Module. bluetooth";
+const char USAGE_BEACON[] = "Beacon spam attack. Usage: beacon [ RICKROLL | RANDOM [ COUNT ] |\n\t\tINFINITE | TARGET-SSIDs | APs | OFF ] [ AUTH ( OPEN | WPA )+ ]";
 const char USAGE_TARGET_SSIDS[] = "Manage SSID targets. Usage: target-ssids [ ( ADD | REMOVE ) <ssid_name> ]";
 const char USAGE_PROBE[] = "Probe flood attack. Usage: probe [ ANY | TARGET-SSIDs | APs | OFF ]";
-const char USAGE_FUZZ[] = "Various invalid packets. Usage: fuzz OFF | ( ( BEACON | REQ | RESP )+ ( OVERFLOW | MALFORMED ) )";
+const char USAGE_FUZZ[] = "Various invalid packets. Usage: fuzz OFF | ( ( BEACON | REQ | RESP )+\n\t\t( OVERFLOW | MALFORMED ) [ BROADCAST | TARGET-SSIDs | selectedSTA | selectedAP | RANDOM ] )";
 const char USAGE_SNIFF[] = "Display interesting packets. Usage: sniff [ ON | OFF ]";
-const char USAGE_DEAUTH[] = "Deauth attack. Usage: deauth [ <millis> ] [ FRAME | DEVICE | SPOOF ] [ STA | AP | BROADCAST | OFF ]";
-const char USAGE_MANA[] = "Mana attack. Usage: mana ( CLEAR | ( [ VERBOSE ] [ ON | OFF ] ) | ( AUTH [ NONE | WEP | WPA ] ) | ( LOUD [ ON | OFF ] ) )";
+const char USAGE_DEAUTH[] = "Deauth attack. Usage: deauth [ <millis> ] [ FRAME | DEVICE | SPOOF ]\n\t\t[ STA | AP | BROADCAST | OFF ]";
+const char USAGE_MANA[] = "Mana attack. Usage: mana ( CLEAR | ( [ VERBOSE ] [ ON | OFF ] ) |\n\t\t( AUTH [ NONE | WEP | WPA ] ) | ( LOUD [ ON | OFF ] ) )";
 const char USAGE_STALK[] = "Toggle target tracking/homing. Usage: stalk [ ON | OFF ]";
 const char USAGE_AP_DOS[] = "Denial-of-service attack on selectedAPs. Usage: ap-dos [ ON | OFF ]";
-const char USAGE_AP_CLONE[] = "Clone and attempt takeover of the specified AP. Usage: ap-clone [ ( ON | OFF ) ( OPEN | WEP | WPA )+ ]";
-const char USAGE_SCAN[] = "Scan for wireless devices. Usage: scan [ <ssid> | ON | OFF ]";
-const char USAGE_HOP[] = "Configure channel hopping. Usage: hop [ <millis> ] [ ON | OFF | DEFAULT | KILL ] [ SEQUENTIAL | RANDOM ]";
+const char USAGE_AP_CLONE[] = "Clone and attempt takeover of the specified AP.\n\tUsage: ap-clone [ ( ON | OFF ) ( OPEN | WEP | WPA )+ ]";
+const char USAGE_SCAN[] = "scan [ ( [ <ssid> ] WIFI ) | BT [ SERVICES ] |\n\t\tBLE [ PURGE ( RSSI [ <maxRSSI> ] | AGE [ <minAge> ] |\n\t\tUNNAMED | UNSELECTED | NONE )+ ] | OFF ]";
+const char USAGE_HOP[] = "Configure channel hopping. Usage: hop [ <millis> ] [ ON | OFF | DEFAULT | KILL ]\n\t\t[ SEQUENTIAL | RANDOM ]";
 const char USAGE_SET[] = "Set a variable. Usage: set <variable> <value>";
 const char USAGE_GET[] = "Get a variable. Usage: get <variable>";
-const char USAGE_VIEW[] = "List available targets. Usage: view ( ( AP [ selectedSTA ] ) | ( STA [ selectedAP ] ) | SORT ( AGE | RSSI | SSID ) )+";
-const char USAGE_SELECT[] = "Select an element. Usage: select ( AP | STA ) <elementId>+";
-const char USAGE_SELECTED[] = "Display selected elements. Usage: selected ( AP | STA )";
-const char USAGE_CLEAR[] = "Clear stored APs or STAs. Usage: clear ( AP | STA | ALL )";
+const char USAGE_VIEW[] = "List available targets. Usage: view ( ( AP [ selectedSTA ] ) |\n\t\t( STA [ selectedAP ] ) | BT [ SERVICES [ SELECTED | KNOWN | UNKNOWN ] ] |\n\t\tSORT ( AGE | RSSI | SSID ) )+";
+const char USAGE_SELECT[] = "Select an element. Usage: select ( AP | STA | BT ) <elementId>+";
+const char USAGE_SELECTED[] = "Display selected elements. Usage: selected ( AP | STA | BT )";
+const char USAGE_CLEAR[] = "Clear stored APs, STAs or HCIs. Usage: clear ( AP [ SELECTED ] | STA [ SELECTED ] | BT [ SERVICES | SELECTED ] | ALL )";
 const char USAGE_HANDSHAKE[] = "Toggle monitoring for encryption material. Usage handshake [ ON | OFF ]";
 const char USAGE_COMMANDS[] = "Display a *brief* summary of Gravity commands";
 const char USAGE_INFO[] = "Provide help information for the specified command. Usage: info <cmd>";
 const char USAGE_VERSION[] = "Display esp32-Gravity version information. Usage: gravity-version";
+const char USAGE_BT_STRAT[] = "BLE Purge Strategy. Permitted values: RSSI AGE UNNAMED UNSELECTED NONE.\n\t\tAlternatively can be specified by providing a total value where\n\t\tRSSI is 1, AGE 2, UNNAMED 4, UNSELECTED 8, and NONE 16.";
+const char USAGE_PURGE[] = "Purge cached devices based on criteria. Usage: purge [ AP | STA | BT | BLE ]+\n\t\t[ RSSI [ <maxRSSI> ] | AGE [ <minAge> ] | UNNAMED | UNSELECTED | NONE ]+";
 
+const char SHORT_PURGE[] = "purge [ AP | STA | BT | BLE ]+ [ RSSI [ <maxRSSI> ] | AGE [ <minAge> ] | UNNAMED | UNSELECTED | NONE ]+";
+const char SHORT_BT_STRAT[] = "set BLE_PURGE_STRAT ( RSSI | AGE | UNNAMED | UNSELECTED | NONE )+";
 const char SHORT_BT[] = "bluetooth [ ON | OFF ]";
 const char SHORT_BEACON[] = "beacon [ RICKROLL | RANDOM [ COUNT ] | INFINITE | TARGET-SSIDs | APs | OFF] [ AUTH ( OPEN | WPA )+ ]";
 const char SHORT_TARGET_SSIDS[] = "(ADD | REMOVE) <apName>";
 const char SHORT_PROBE[] = "probe ANY | TARGET-SSIDs | APs | OFF";
-const char SHORT_FUZZ[] = "fuzz OFF | ( ( BEACON | REQ | RESP )+ ( OVERFLOW | MALFORMED ) )";
+const char SHORT_FUZZ[] = "fuzz OFF | ( ( BEACON | REQ | RESP )+ ( OVERFLOW | MALFORMED ) [ BROADCAST | TARGET-SSIDs | selectedSTA | selectedAP | RANDOM ] )";
 const char SHORT_SNIFF[] = "sniff [ ON | OFF ]";
 const char SHORT_DEAUTH[] = "deauth <millis>";
 const char SHORT_MANA[] = "Mana attack";
 const char SHORT_STALK[] = "Track RSSI. stalk [ ON | OFF ]";
 const char SHORT_AP_DOS[] = "ap-dos [ ON | OFF ]";
 const char SHORT_AP_CLONE[] = "ap-clone [ ( ON | OFF ) ( OPEN | WEP | WPA )+ ]";
-const char SHORT_SCAN[] = "scan <SSID Name>";
+const char SHORT_SCAN[] = "scan [ ( [ <ssid> ] WIFI ) | BT [ SERVICES ] | BLE [ PURGE ( RSSI [ <maxRSSI> ] | AGE [ <minAge> ] | UNNAMED | UNSELECTED | NONE )+ ] | OFF ]";
 const char SHORT_HOP[] = "hop [ <millis> ] [ ON | OFF | DEFAULT | KILL ] [ SEQUENTIAL | RANDOM ]";
 const char SHORT_SET[] = "set <variable> <value>";
 const char SHORT_GET[] = "get <variable>";
-const char SHORT_VIEW[] = "VIEW ( ( AP [ selectedSTA ] ) | ( STA [ selectedAP ] ) | SORT ( AGE | RSSI | SSID ) )+";
-char SHORT_SELECT[] = "select ( AP | STA ) <id>+ sep. ~";
-const char SHORT_SELECTED[] = "selected ( AP | STA )";
-const char SHORT_CLEAR[] = "clear ( AP | STA | ALL )";
+const char SHORT_VIEW[] = "VIEW ( ( AP [ selectedSTA ] ) | ( STA [ selectedAP ] ) | BT [ SERVICES [ SELECTED | KNOWN | UNKNOWN ] ] | SORT ( AGE | RSSI | SSID ) )+";
+char SHORT_SELECT[] = "select ( AP | STA | BT ) <id>+ sep. ~";
+const char SHORT_SELECTED[] = "selected ( AP | STA | BT )";
+const char SHORT_CLEAR[] = "clear ( AP [ SELECTED ] | STA [ SELECTED ] | BT [ SERVICES | SELECTED ] | ALL )";
 const char SHORT_HANDSHAKE[] = "handshake [ ON | OFF ]";
 const char SHORT_COMMANDS[] = "Brief command summary";
 const char SHORT_INFO[] = "Command help. info <cmd>";