From 1287e25e3c2001b98f97b36fb590058f28d51090 Mon Sep 17 00:00:00 2001 From: RogueMaster Date: Wed, 19 Oct 2022 00:56:00 -0400 Subject: [PATCH] subbrute update --- applications/plugins/subbrute/LICENSE | 21 +++++++++++++++ applications/plugins/subbrute/LICENSE.md | 8 ------ applications/plugins/subbrute/README.md | 26 ++++++++++++++++--- applications/plugins/subbrute/application.fam | 4 +-- .../subbrute/helpers/subbrute_worker.c | 5 +++- .../scenes/subbrute_scene_run_attack.c | 3 +-- .../scenes/subbrute_scene_save_name.c | 9 ++----- .../scenes/subbrute_scene_setup_attack.c | 8 +++--- .../plugins/subbrute/subbrute_protocols.c | 13 ++++++++++ .../plugins/subbrute/subbrute_protocols.h | 1 + .../subbrute/views/subbrute_main_view.c | 2 +- 11 files changed, 73 insertions(+), 27 deletions(-) create mode 100644 applications/plugins/subbrute/LICENSE delete mode 100644 applications/plugins/subbrute/LICENSE.md diff --git a/applications/plugins/subbrute/LICENSE b/applications/plugins/subbrute/LICENSE new file mode 100644 index 000000000..06dcf7e87 --- /dev/null +++ b/applications/plugins/subbrute/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Der Skythe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/applications/plugins/subbrute/LICENSE.md b/applications/plugins/subbrute/LICENSE.md deleted file mode 100644 index a856581c9..000000000 --- a/applications/plugins/subbrute/LICENSE.md +++ /dev/null @@ -1,8 +0,0 @@ -/* - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * @G4N4P4T1 wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. - * ---------------------------------------------------------------------------- - */ \ No newline at end of file diff --git a/applications/plugins/subbrute/README.md b/applications/plugins/subbrute/README.md index 04a0c975d..662262e3c 100644 --- a/applications/plugins/subbrute/README.md +++ b/applications/plugins/subbrute/README.md @@ -1,4 +1,24 @@ -# FlipFrid +# SubGHz Bruteforcer Plugin for Flipper Zero -SubGhz Fuzzer -select your base message, the field to fuzz and let's get fuzzy ! \ No newline at end of file +SubGhz Bruteforcer from [Unleashed Firmware](https://github.com/DarkFlippers/unleashed-firmware) + +### Supported Protocols: +- CAME 12bit 303MHz +- CAME 12bit 307MHz +- CAME 12bit 433MHz +- CAME 12bit 868MHz +- NICE 12bit 433MHz +- NICE 12bit 868MHz +- Chamberlain 9bit 300MHz +- Chamberlain 9bit 315MHz +- Chamberlain 9bit 390MHz +- Chamberlain 9bit 433MHz +- Chamberlain 8bit 300MHz +- Chamberlain 8bit 315MHz +- Chamberlain 8bit 390MHz +- Chamberlain 7bit 300MHz +- Chamberlain 7bit 315MHz +- Chamberlain 7bit 390MHz +- Linear 10bit 300MHz +- Linear 10bit 310MHz +- BF Existing dump works for all other static protocols supported by Flipper Zero \ No newline at end of file diff --git a/applications/plugins/subbrute/application.fam b/applications/plugins/subbrute/application.fam index bf9e8ed10..5e9dd9c8d 100644 --- a/applications/plugins/subbrute/application.fam +++ b/applications/plugins/subbrute/application.fam @@ -4,9 +4,9 @@ App( apptype=FlipperAppType.EXTERNAL, entry_point="subbrute_app", cdefines=["APP_SUB_BRUTE"], - requires=["storage", "gui", "dialogs", "subghz"], + requires=["gui","dialogs"], stack_size=2 * 1024, - order=190, + order=11, fap_icon="subbrute_10px.png", fap_category="Tools", ) diff --git a/applications/plugins/subbrute/helpers/subbrute_worker.c b/applications/plugins/subbrute/helpers/subbrute_worker.c index 217e97594..3ec04a9a4 100644 --- a/applications/plugins/subbrute/helpers/subbrute_worker.c +++ b/applications/plugins/subbrute/helpers/subbrute_worker.c @@ -188,8 +188,11 @@ bool subbrute_worker_start(SubBruteWorker* instance) { void subbrute_worker_stop(SubBruteWorker* instance) { furi_assert(instance); - instance->worker_running = false; + if (!instance->worker_running) { + return; + } + instance->worker_running = false; furi_thread_join(instance->thread); furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate); diff --git a/applications/plugins/subbrute/scenes/subbrute_scene_run_attack.c b/applications/plugins/subbrute/scenes/subbrute_scene_run_attack.c index c1207af47..1138b4585 100644 --- a/applications/plugins/subbrute/scenes/subbrute_scene_run_attack.c +++ b/applications/plugins/subbrute/scenes/subbrute_scene_run_attack.c @@ -28,9 +28,8 @@ void subbrute_scene_run_attack_on_exit(void* context) { furi_assert(context); SubBruteState* instance = (SubBruteState*)context; - subbrute_worker_stop(instance->worker); - notification_message(instance->notifications, &sequence_blink_stop); + subbrute_worker_stop(instance->worker); } void subbrute_scene_run_attack_on_enter(void* context) { diff --git a/applications/plugins/subbrute/scenes/subbrute_scene_save_name.c b/applications/plugins/subbrute/scenes/subbrute_scene_save_name.c index bb129e948..b5919ae5a 100644 --- a/applications/plugins/subbrute/scenes/subbrute_scene_save_name.c +++ b/applications/plugins/subbrute/scenes/subbrute_scene_save_name.c @@ -47,14 +47,9 @@ bool subbrute_scene_save_name_on_event(void* context, SceneManagerEvent event) { if(strcmp(instance->text_store, "")) { furi_string_reset(instance->file_path); furi_string_cat_printf( - instance->file_path, - "%s/%s%s", - SUBBRUTE_PATH, - instance->text_store, - SUBBRUTE_FILE_EXT); + instance->file_path, "%s/%s%s", SUBBRUTE_PATH, instance->text_store, SUBBRUTE_FILE_EXT); - if(subbrute_device_save_file( - instance->device, furi_string_get_cstr(instance->file_path))) { + if(subbrute_device_save_file(instance->device, furi_string_get_cstr(instance->file_path))) { scene_manager_next_scene(instance->scene_manager, SubBruteSceneSaveSuccess); success = true; consumed = true; diff --git a/applications/plugins/subbrute/scenes/subbrute_scene_setup_attack.c b/applications/plugins/subbrute/scenes/subbrute_scene_setup_attack.c index 4984b4931..801185e55 100644 --- a/applications/plugins/subbrute/scenes/subbrute_scene_setup_attack.c +++ b/applications/plugins/subbrute/scenes/subbrute_scene_setup_attack.c @@ -27,16 +27,17 @@ void subbrute_scene_setup_attack_on_enter(void* context) { SubBruteState* instance = (SubBruteState*)context; SubBruteAttackView* view = instance->view_attack; + notification_message(instance->notifications, &sequence_reset_vibro); + #ifdef FURI_DEBUG - FURI_LOG_D(TAG, "Enter Attack: %d", instance->device->attack); + FURI_LOG_D(TAG, "Enter Attack: %s", subbrute_protocol_name(instance->device->attack)); #endif subbrute_worker_set_callback( instance->worker, subbrute_scene_setup_attack_device_state_changed, context); - if(subbrute_worker_is_running(instance->worker)) { - instance->device->key_index = subbrute_worker_get_step(instance->worker); subbrute_worker_stop(instance->worker); + instance->device->key_index = subbrute_worker_get_step(instance->worker); } subbrute_attack_view_init_values( @@ -59,6 +60,7 @@ void subbrute_scene_setup_attack_on_exit(void* context) { SubBruteState* instance = (SubBruteState*)context; subbrute_worker_stop(instance->worker); notification_message(instance->notifications, &sequence_blink_stop); + notification_message(instance->notifications, &sequence_reset_vibro); } bool subbrute_scene_setup_attack_on_event(void* context, SceneManagerEvent event) { diff --git a/applications/plugins/subbrute/subbrute_protocols.c b/applications/plugins/subbrute/subbrute_protocols.c index c105d5961..01d41e9c5 100644 --- a/applications/plugins/subbrute/subbrute_protocols.c +++ b/applications/plugins/subbrute/subbrute_protocols.c @@ -102,6 +102,17 @@ const SubBruteProtocol subbrute_protocol_chamberlain_9bit_390 = { .preset = FuriHalSubGhzPresetOok650Async, .file = ChamberlainFileProtocol}; +/** + * Chamberlain 9bit 433MHz + */ +const SubBruteProtocol subbrute_protocol_chamberlain_9bit_433 = { + .frequency = 433920000, + .bits = 9, + .te = 0, + .repeat = 3, + .preset = FuriHalSubGhzPresetOok650Async, + .file = ChamberlainFileProtocol}; + /** * Chamberlain 8bit 300MHz */ @@ -206,6 +217,7 @@ static const char* subbrute_protocol_names[] = { [SubBruteAttackChamberlain9bit300] = "Chamberlain 9bit 300MHz", [SubBruteAttackChamberlain9bit315] = "Chamberlain 9bit 315MHz", [SubBruteAttackChamberlain9bit390] = "Chamberlain 9bit 390MHz", + [SubBruteAttackChamberlain9bit433] = "Chamberlain 9bit 433MHz", [SubBruteAttackChamberlain8bit300] = "Chamberlain 8bit 300MHz", [SubBruteAttackChamberlain8bit315] = "Chamberlain 8bit 315MHz", [SubBruteAttackChamberlain8bit390] = "Chamberlain 8bit 390MHz", @@ -238,6 +250,7 @@ const SubBruteProtocol* subbrute_protocol_registry[] = { [SubBruteAttackChamberlain9bit300] = &subbrute_protocol_chamberlain_9bit_300, [SubBruteAttackChamberlain9bit315] = &subbrute_protocol_chamberlain_9bit_315, [SubBruteAttackChamberlain9bit390] = &subbrute_protocol_chamberlain_9bit_390, + [SubBruteAttackChamberlain9bit433] = &subbrute_protocol_chamberlain_9bit_433, [SubBruteAttackChamberlain8bit300] = &subbrute_protocol_chamberlain_8bit_300, [SubBruteAttackChamberlain8bit315] = &subbrute_protocol_chamberlain_8bit_315, [SubBruteAttackChamberlain8bit390] = &subbrute_protocol_chamberlain_8bit_390, diff --git a/applications/plugins/subbrute/subbrute_protocols.h b/applications/plugins/subbrute/subbrute_protocols.h index fa59fa8dc..708c625bd 100644 --- a/applications/plugins/subbrute/subbrute_protocols.h +++ b/applications/plugins/subbrute/subbrute_protocols.h @@ -34,6 +34,7 @@ typedef enum { SubBruteAttackChamberlain9bit300, SubBruteAttackChamberlain9bit315, SubBruteAttackChamberlain9bit390, + SubBruteAttackChamberlain9bit433, SubBruteAttackChamberlain8bit300, SubBruteAttackChamberlain8bit315, SubBruteAttackChamberlain8bit390, diff --git a/applications/plugins/subbrute/views/subbrute_main_view.c b/applications/plugins/subbrute/views/subbrute_main_view.c index 9d3486797..af911f775 100644 --- a/applications/plugins/subbrute/views/subbrute_main_view.c +++ b/applications/plugins/subbrute/views/subbrute_main_view.c @@ -86,7 +86,7 @@ void subbrute_main_view_draw(Canvas* canvas, SubBruteMainViewModel* model) { canvas_set_font(canvas, FontPrimary); canvas_draw_box(canvas, 0, 0, canvas_width(canvas), STATUS_BAR_Y_SHIFT); canvas_invert_color(canvas); - canvas_draw_str_aligned(canvas, 64, 3, AlignCenter, AlignTop, "Sub-GHz BruteForcer v3"); + canvas_draw_str_aligned(canvas, 64, 3, AlignCenter, AlignTop, "Sub-GHz BruteForcer 3.1"); canvas_invert_color(canvas); if(m->is_select_byte) {