BadKB lock relevant configs with ID and BT_ID cmds

This commit is contained in:
Willy-JL
2023-05-10 19:11:35 +01:00
parent 5b710bf488
commit bb7dc8ce22
4 changed files with 51 additions and 29 deletions

View File

@@ -102,9 +102,13 @@ int32_t bad_kb_config_switch_mode(BadKbApp* app) {
XTREME_SETTINGS_SAVE();
bad_kb_reload_worker(app);
if(app->is_bt) furi_hal_bt_start_advertising();
bad_kb_config_refresh_menu(app);
return 0;
}
void bad_kb_config_refresh_menu(BadKbApp* app) {
scene_manager_next_scene(app->scene_manager, BadKbSceneConfig);
scene_manager_previous_scene(app->scene_manager);
return 0;
}
void bad_kb_config_switch_remember_mode(BadKbApp* app) {

View File

@@ -386,9 +386,11 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
bad_kb->app->switch_mode_thread = NULL;
}
// Looking for ID or BT_ID command at first line
bool usb_id = false;
bool bt_id = false;
if(strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0) {
bad_kb->set_usb_id = false;
bad_kb->set_bt_id = false;
bad_kb->has_usb_id = strncmp(line_tmp, ducky_cmd_id, strlen(ducky_cmd_id)) == 0;
bad_kb->has_bt_id = strncmp(line_tmp, ducky_cmd_bt_id, strlen(ducky_cmd_bt_id)) == 0;
if(bad_kb->has_usb_id) {
if(bad_kb->bt) {
bad_kb->app->is_bt = false;
bad_kb->app->switch_mode_thread = furi_thread_alloc_ex(
@@ -399,8 +401,8 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
furi_thread_start(bad_kb->app->switch_mode_thread);
return false;
}
usb_id = ducky_set_usb_id(bad_kb, &line_tmp[strlen(ducky_cmd_id) + 1]);
} else if(strncmp(line_tmp, ducky_cmd_bt_id, strlen(ducky_cmd_bt_id)) == 0) {
bad_kb->set_usb_id = ducky_set_usb_id(bad_kb, &line_tmp[strlen(ducky_cmd_id) + 1]);
} else if(bad_kb->has_bt_id) {
if(!bad_kb->bt) {
bad_kb->app->is_bt = true;
bad_kb->app->switch_mode_thread = furi_thread_alloc_ex(
@@ -412,12 +414,13 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
return false;
}
if(!bad_kb->app->bt_remember) {
bt_id = ducky_set_bt_id(bad_kb, &line_tmp[strlen(ducky_cmd_bt_id) + 1]);
bad_kb->set_bt_id = ducky_set_bt_id(bad_kb, &line_tmp[strlen(ducky_cmd_bt_id) + 1]);
}
}
bad_kb_config_refresh_menu(bad_kb->app);
if(bad_kb->bt) {
if(!bt_id) {
if(!bad_kb->set_bt_id) {
const char* bt_name = bad_kb->app->config.bt_name;
const uint8_t* bt_mac = bad_kb->app->bt_remember ?
(uint8_t*)&BAD_KB_BOUND_MAC_ADDRESS :
@@ -440,7 +443,7 @@ static bool ducky_script_preload(BadKbScript* bad_kb, File* script_file) {
}
}
} else {
if(usb_id) {
if(bad_kb->set_usb_id) {
furi_check(furi_hal_usb_set_config(&usb_hid, &bad_kb->hid_cfg));
} else {
furi_check(furi_hal_usb_set_config(&usb_hid, NULL));

View File

@@ -82,6 +82,11 @@ typedef struct {
FuriString* string_print;
size_t string_print_pos;
bool set_usb_id;
bool set_bt_id;
bool has_usb_id;
bool has_bt_id;
Bt* bt;
BadKbApp* app;
} BadKbScript;
@@ -147,6 +152,8 @@ struct BadKbApp {
int32_t bad_kb_config_switch_mode(BadKbApp* app);
void bad_kb_config_refresh_menu(BadKbApp* app);
#ifdef __cplusplus
}
#endif

View File

@@ -45,28 +45,36 @@ void bad_kb_scene_config_on_enter(void* context) {
var_item_list, "Connection", 2, bad_kb_scene_config_connection_callback, bad_kb);
variable_item_set_current_value_index(item, bad_kb->is_bt);
variable_item_set_current_value_text(item, bad_kb->is_bt ? "BT" : "USB");
item = variable_item_list_add(
var_item_list, "BT Remember", 2, bad_kb_scene_config_bt_remember_callback, bad_kb);
variable_item_set_current_value_index(item, bad_kb->bt_remember);
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
variable_item_set_locked(item, !bad_kb->is_bt, "Only in\nBT mode!");
item = variable_item_list_add(var_item_list, "BT Device Name", 0, NULL, bad_kb);
variable_item_set_locked(item, !bad_kb->is_bt, "Only in\nBT mode!");
item = variable_item_list_add(var_item_list, "BT MAC Address", 0, NULL, bad_kb);
if(!bad_kb->is_bt) {
variable_item_set_locked(item, true, "Only in\nBT mode!");
} else if(bad_kb->bt_remember) {
variable_item_set_locked(item, true, "Remember\nmust be Off!");
if(bad_kb->bad_kb_script->has_usb_id) {
variable_item_set_locked(item, true, "Script has\nID cmd!\nLocked to\nUSB Mode!");
} else if(bad_kb->bad_kb_script->has_bt_id) {
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nBT Mode!");
}
item = variable_item_list_add(var_item_list, "Randomize BT MAC", 0, NULL, bad_kb);
if(!bad_kb->is_bt) {
variable_item_set_locked(item, true, "Only in\nBT mode!");
} else if(bad_kb->bt_remember) {
variable_item_set_locked(item, true, "Remember\nmust be Off!");
if(bad_kb->is_bt) {
item = variable_item_list_add(
var_item_list, "BT Remember", 2, bad_kb_scene_config_bt_remember_callback, bad_kb);
variable_item_set_current_value_index(item, bad_kb->bt_remember);
variable_item_set_current_value_text(item, bad_kb->bt_remember ? "ON" : "OFF");
item = variable_item_list_add(var_item_list, "BT Device Name", 0, NULL, bad_kb);
if(bad_kb->bad_kb_script->set_bt_id) {
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nset Name!");
}
item = variable_item_list_add(var_item_list, "BT MAC Address", 0, NULL, bad_kb);
if(bad_kb->bt_remember) {
variable_item_set_locked(item, true, "Remember\nmust be Off!");
} else if(bad_kb->bad_kb_script->set_bt_id) {
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nset MAC!");
}
item = variable_item_list_add(var_item_list, "Randomize BT MAC", 0, NULL, bad_kb);
if(bad_kb->bt_remember) {
variable_item_set_locked(item, true, "Remember\nmust be Off!");
} else if(bad_kb->bad_kb_script->set_bt_id) {
variable_item_set_locked(item, true, "Script has\nBT_ID cmd!\nLocked to\nset MAC!");
}
}
variable_item_list_set_enter_callback(