subbrute update

This commit is contained in:
RogueMaster
2022-10-19 00:56:00 -04:00
parent 86100db027
commit 1287e25e3c
11 changed files with 73 additions and 27 deletions

View File

@@ -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.

View File

@@ -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.
* ----------------------------------------------------------------------------
*/

View File

@@ -1,4 +1,24 @@
# FlipFrid # SubGHz Bruteforcer Plugin for Flipper Zero
SubGhz Fuzzer SubGhz Bruteforcer from [Unleashed Firmware](https://github.com/DarkFlippers/unleashed-firmware)
select your base message, the field to fuzz and let's get fuzzy !
### 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

View File

@@ -4,9 +4,9 @@ App(
apptype=FlipperAppType.EXTERNAL, apptype=FlipperAppType.EXTERNAL,
entry_point="subbrute_app", entry_point="subbrute_app",
cdefines=["APP_SUB_BRUTE"], cdefines=["APP_SUB_BRUTE"],
requires=["storage", "gui", "dialogs", "subghz"], requires=["gui","dialogs"],
stack_size=2 * 1024, stack_size=2 * 1024,
order=190, order=11,
fap_icon="subbrute_10px.png", fap_icon="subbrute_10px.png",
fap_category="Tools", fap_category="Tools",
) )

View File

@@ -188,8 +188,11 @@ bool subbrute_worker_start(SubBruteWorker* instance) {
void subbrute_worker_stop(SubBruteWorker* instance) { void subbrute_worker_stop(SubBruteWorker* instance) {
furi_assert(instance); furi_assert(instance);
instance->worker_running = false; if (!instance->worker_running) {
return;
}
instance->worker_running = false;
furi_thread_join(instance->thread); furi_thread_join(instance->thread);
furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate); furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate);

View File

@@ -28,9 +28,8 @@ void subbrute_scene_run_attack_on_exit(void* context) {
furi_assert(context); furi_assert(context);
SubBruteState* instance = (SubBruteState*)context; SubBruteState* instance = (SubBruteState*)context;
subbrute_worker_stop(instance->worker);
notification_message(instance->notifications, &sequence_blink_stop); notification_message(instance->notifications, &sequence_blink_stop);
subbrute_worker_stop(instance->worker);
} }
void subbrute_scene_run_attack_on_enter(void* context) { void subbrute_scene_run_attack_on_enter(void* context) {

View File

@@ -47,14 +47,9 @@ bool subbrute_scene_save_name_on_event(void* context, SceneManagerEvent event) {
if(strcmp(instance->text_store, "")) { if(strcmp(instance->text_store, "")) {
furi_string_reset(instance->file_path); furi_string_reset(instance->file_path);
furi_string_cat_printf( furi_string_cat_printf(
instance->file_path, instance->file_path, "%s/%s%s", SUBBRUTE_PATH, instance->text_store, SUBBRUTE_FILE_EXT);
"%s/%s%s",
SUBBRUTE_PATH,
instance->text_store,
SUBBRUTE_FILE_EXT);
if(subbrute_device_save_file( if(subbrute_device_save_file(instance->device, furi_string_get_cstr(instance->file_path))) {
instance->device, furi_string_get_cstr(instance->file_path))) {
scene_manager_next_scene(instance->scene_manager, SubBruteSceneSaveSuccess); scene_manager_next_scene(instance->scene_manager, SubBruteSceneSaveSuccess);
success = true; success = true;
consumed = true; consumed = true;

View File

@@ -27,16 +27,17 @@ void subbrute_scene_setup_attack_on_enter(void* context) {
SubBruteState* instance = (SubBruteState*)context; SubBruteState* instance = (SubBruteState*)context;
SubBruteAttackView* view = instance->view_attack; SubBruteAttackView* view = instance->view_attack;
notification_message(instance->notifications, &sequence_reset_vibro);
#ifdef FURI_DEBUG #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 #endif
subbrute_worker_set_callback( subbrute_worker_set_callback(
instance->worker, subbrute_scene_setup_attack_device_state_changed, context); instance->worker, subbrute_scene_setup_attack_device_state_changed, context);
if(subbrute_worker_is_running(instance->worker)) { if(subbrute_worker_is_running(instance->worker)) {
instance->device->key_index = subbrute_worker_get_step(instance->worker);
subbrute_worker_stop(instance->worker); subbrute_worker_stop(instance->worker);
instance->device->key_index = subbrute_worker_get_step(instance->worker);
} }
subbrute_attack_view_init_values( subbrute_attack_view_init_values(
@@ -59,6 +60,7 @@ void subbrute_scene_setup_attack_on_exit(void* context) {
SubBruteState* instance = (SubBruteState*)context; SubBruteState* instance = (SubBruteState*)context;
subbrute_worker_stop(instance->worker); subbrute_worker_stop(instance->worker);
notification_message(instance->notifications, &sequence_blink_stop); 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) { bool subbrute_scene_setup_attack_on_event(void* context, SceneManagerEvent event) {

View File

@@ -102,6 +102,17 @@ const SubBruteProtocol subbrute_protocol_chamberlain_9bit_390 = {
.preset = FuriHalSubGhzPresetOok650Async, .preset = FuriHalSubGhzPresetOok650Async,
.file = ChamberlainFileProtocol}; .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 * Chamberlain 8bit 300MHz
*/ */
@@ -206,6 +217,7 @@ static const char* subbrute_protocol_names[] = {
[SubBruteAttackChamberlain9bit300] = "Chamberlain 9bit 300MHz", [SubBruteAttackChamberlain9bit300] = "Chamberlain 9bit 300MHz",
[SubBruteAttackChamberlain9bit315] = "Chamberlain 9bit 315MHz", [SubBruteAttackChamberlain9bit315] = "Chamberlain 9bit 315MHz",
[SubBruteAttackChamberlain9bit390] = "Chamberlain 9bit 390MHz", [SubBruteAttackChamberlain9bit390] = "Chamberlain 9bit 390MHz",
[SubBruteAttackChamberlain9bit433] = "Chamberlain 9bit 433MHz",
[SubBruteAttackChamberlain8bit300] = "Chamberlain 8bit 300MHz", [SubBruteAttackChamberlain8bit300] = "Chamberlain 8bit 300MHz",
[SubBruteAttackChamberlain8bit315] = "Chamberlain 8bit 315MHz", [SubBruteAttackChamberlain8bit315] = "Chamberlain 8bit 315MHz",
[SubBruteAttackChamberlain8bit390] = "Chamberlain 8bit 390MHz", [SubBruteAttackChamberlain8bit390] = "Chamberlain 8bit 390MHz",
@@ -238,6 +250,7 @@ const SubBruteProtocol* subbrute_protocol_registry[] = {
[SubBruteAttackChamberlain9bit300] = &subbrute_protocol_chamberlain_9bit_300, [SubBruteAttackChamberlain9bit300] = &subbrute_protocol_chamberlain_9bit_300,
[SubBruteAttackChamberlain9bit315] = &subbrute_protocol_chamberlain_9bit_315, [SubBruteAttackChamberlain9bit315] = &subbrute_protocol_chamberlain_9bit_315,
[SubBruteAttackChamberlain9bit390] = &subbrute_protocol_chamberlain_9bit_390, [SubBruteAttackChamberlain9bit390] = &subbrute_protocol_chamberlain_9bit_390,
[SubBruteAttackChamberlain9bit433] = &subbrute_protocol_chamberlain_9bit_433,
[SubBruteAttackChamberlain8bit300] = &subbrute_protocol_chamberlain_8bit_300, [SubBruteAttackChamberlain8bit300] = &subbrute_protocol_chamberlain_8bit_300,
[SubBruteAttackChamberlain8bit315] = &subbrute_protocol_chamberlain_8bit_315, [SubBruteAttackChamberlain8bit315] = &subbrute_protocol_chamberlain_8bit_315,
[SubBruteAttackChamberlain8bit390] = &subbrute_protocol_chamberlain_8bit_390, [SubBruteAttackChamberlain8bit390] = &subbrute_protocol_chamberlain_8bit_390,

View File

@@ -34,6 +34,7 @@ typedef enum {
SubBruteAttackChamberlain9bit300, SubBruteAttackChamberlain9bit300,
SubBruteAttackChamberlain9bit315, SubBruteAttackChamberlain9bit315,
SubBruteAttackChamberlain9bit390, SubBruteAttackChamberlain9bit390,
SubBruteAttackChamberlain9bit433,
SubBruteAttackChamberlain8bit300, SubBruteAttackChamberlain8bit300,
SubBruteAttackChamberlain8bit315, SubBruteAttackChamberlain8bit315,
SubBruteAttackChamberlain8bit390, SubBruteAttackChamberlain8bit390,

View File

@@ -86,7 +86,7 @@ void subbrute_main_view_draw(Canvas* canvas, SubBruteMainViewModel* model) {
canvas_set_font(canvas, FontPrimary); canvas_set_font(canvas, FontPrimary);
canvas_draw_box(canvas, 0, 0, canvas_width(canvas), STATUS_BAR_Y_SHIFT); canvas_draw_box(canvas, 0, 0, canvas_width(canvas), STATUS_BAR_Y_SHIFT);
canvas_invert_color(canvas); 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); canvas_invert_color(canvas);
if(m->is_select_byte) { if(m->is_select_byte) {