mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-14 10:48:35 -07:00
subbrute update
This commit is contained in:
21
applications/plugins/subbrute/LICENSE
Normal file
21
applications/plugins/subbrute/LICENSE
Normal 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.
|
||||||
@@ -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.
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
@@ -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
|
||||||
@@ -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",
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ typedef enum {
|
|||||||
SubBruteAttackChamberlain9bit300,
|
SubBruteAttackChamberlain9bit300,
|
||||||
SubBruteAttackChamberlain9bit315,
|
SubBruteAttackChamberlain9bit315,
|
||||||
SubBruteAttackChamberlain9bit390,
|
SubBruteAttackChamberlain9bit390,
|
||||||
|
SubBruteAttackChamberlain9bit433,
|
||||||
SubBruteAttackChamberlain8bit300,
|
SubBruteAttackChamberlain8bit300,
|
||||||
SubBruteAttackChamberlain8bit315,
|
SubBruteAttackChamberlain8bit315,
|
||||||
SubBruteAttackChamberlain8bit390,
|
SubBruteAttackChamberlain8bit390,
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user