diff --git a/CHANGELOG.md b/CHANGELOG.md index bc7bf4630..b6863dba6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,7 @@ ### New changes -* Plugins: Fix RFID Fuzzer crashes -* SubGHz: Fix Nice Flor S crash -* SubGHz: Allow saving signals for subghz protocols without encoder (sending is not possible) -* Some random names added -* Fix `debug_pack` to allow building debug builds with extra parameter for `./fbt` (check previous releases for info) +* Plugins: Fixed MouseJacker GUI was displaying duckyscript is running before file is selected +* OFW: NFC fixes (DESFire -> info -> More bug fixed, Mifare classic user list will display message if has more than 100keys) +* OFW: Desktop: removing slideshow file when leaving slideshow view #### **DFU files no longer included in releases to avoid issues with wrong manual installation of assets - use .tgz file with qFlipper, or install automatically via web updater or use microSD update package** diff --git a/applications/plugins/mousejacker/mousejacker.c b/applications/plugins/mousejacker/mousejacker.c index f1cb69111..b2e72f9cf 100644 --- a/applications/plugins/mousejacker/mousejacker.c +++ b/applications/plugins/mousejacker/mousejacker.c @@ -48,7 +48,8 @@ static void render_callback(Canvas* const canvas, void* ctx) { canvas_draw_frame(canvas, 0, 0, 128, 64); canvas_set_font(canvas, FontSecondary); - if(!plugin_state->addr_err && !plugin_state->ducky_err && !plugin_state->is_thread_running) { + if(!plugin_state->addr_err && !plugin_state->ducky_err && !plugin_state->is_thread_running && + !plugin_state->is_ducky_running) { snprintf(target_text, sizeof(target_text), target_fmt_text, target_address_str); canvas_draw_str_aligned(canvas, 7, 10, AlignLeft, AlignBottom, target_text); canvas_draw_str_aligned(canvas, 22, 20, AlignLeft, AlignBottom, "<- select address ->"); @@ -67,7 +68,10 @@ static void render_callback(Canvas* const canvas, void* ctx) { canvas, 3, 10, AlignLeft, AlignBottom, "Error: No mousejacker folder"); canvas_draw_str_aligned(canvas, 3, 20, AlignLeft, AlignBottom, "or duckyscript file"); canvas_draw_str_aligned(canvas, 3, 30, AlignLeft, AlignBottom, "loading error"); - } else if(plugin_state->is_thread_running) { + } else if(plugin_state->is_thread_running && !plugin_state->is_ducky_running) { + canvas_draw_str_aligned(canvas, 3, 10, AlignLeft, AlignBottom, "Loading..."); + canvas_draw_str_aligned(canvas, 3, 20, AlignLeft, AlignBottom, "Please wait!"); + } else if(plugin_state->is_thread_running && plugin_state->is_ducky_running) { canvas_draw_str_aligned(canvas, 3, 10, AlignLeft, AlignBottom, "Running duckyscript"); canvas_draw_str_aligned(canvas, 3, 20, AlignLeft, AlignBottom, "Please wait!"); canvas_draw_str_aligned( @@ -98,7 +102,7 @@ static void hexlify(uint8_t* in, uint8_t size, char* out) { snprintf(out + strlen(out), sizeof(out + strlen(out)), "%02X", in[i]); } -static bool open_ducky_script(Stream* stream) { +static bool open_ducky_script(Stream* stream, PluginState* plugin_state) { DialogsApp* dialogs = furi_record_open("dialogs"); bool result = false; string_t path; @@ -121,6 +125,9 @@ static bool open_ducky_script(Stream* stream) { } } string_clear(path); + + plugin_state->is_ducky_running = true; + return result; } @@ -161,10 +168,11 @@ static bool process_ducky_file( uint8_t* file_buf; bool loaded = false; FURI_LOG_D(TAG, "opening ducky script"); - if(open_ducky_script(file_stream)) { + if(open_ducky_script(file_stream, plugin_state)) { file_size = stream_size(file_stream); if(file_size == (size_t)0) { FURI_LOG_D(TAG, "load failed. file_size: %d", file_size); + plugin_state->is_ducky_running = false; return loaded; } file_buf = malloc(file_size); @@ -182,6 +190,7 @@ static bool process_ducky_file( } free(file_buf); } + plugin_state->is_ducky_running = false; return loaded; } diff --git a/applications/plugins/mousejacker/mousejacker_ducky.h b/applications/plugins/mousejacker/mousejacker_ducky.h index a70a771e8..b4922ed38 100644 --- a/applications/plugins/mousejacker/mousejacker_ducky.h +++ b/applications/plugins/mousejacker/mousejacker_ducky.h @@ -24,6 +24,7 @@ typedef struct { bool ducky_err; bool addr_err; bool is_thread_running; + bool is_ducky_running; bool close_thread_please; Storage* storage; FuriThread* mjthread;