mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-12-20 09:43:23 +00:00
198 lines
No EOL
6.6 KiB
C
198 lines
No EOL
6.6 KiB
C
#include "subbrute_scene_entrypoint.h"
|
|
#include "../subbrute_utils.h"
|
|
|
|
string_t subbrute_menu_items[9];
|
|
|
|
void subbrute_scene_entrypoint_menu_callback(SubBruteState* context, uint32_t index) {
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
string_set_str(context->protocol, "RAW");
|
|
context->repeat = 5;
|
|
context->te = 0;
|
|
context->attack = index;
|
|
switch(index) {
|
|
case SubBruteAttackLoadFile:
|
|
context->current_scene = SceneSelectFile;
|
|
break;
|
|
case SubBruteAttackCAME12bit433:
|
|
context->frequency = 433920000;
|
|
context->bit = 12;
|
|
string_set_str(context->protocol, "CAME");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackCAME12bit868:
|
|
context->frequency = 868350000;
|
|
context->bit = 12;
|
|
string_set_str(context->protocol, "CAME");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackChamberlain9bit315:
|
|
context->frequency = 315000000;
|
|
context->bit = 9;
|
|
string_set_str(context->protocol, "Cham_Code");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackChamberlain9bit390:
|
|
context->frequency = 390000000;
|
|
context->bit = 9;
|
|
string_set_str(context->protocol, "Cham_Code");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackLinear10bit300:
|
|
context->frequency = 300000000;
|
|
context->bit = 10;
|
|
string_set_str(context->protocol, "Linear");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackLinear10bit310:
|
|
context->frequency = 310000000;
|
|
context->bit = 10;
|
|
string_set_str(context->protocol, "Linear");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackNICE12bit433:
|
|
context->frequency = 433920000;
|
|
context->bit = 12;
|
|
string_set_str(context->protocol, "Nice FLO");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
case SubBruteAttackNICE12bit868:
|
|
context->frequency = 868350000;
|
|
context->bit = 12;
|
|
string_set_str(context->protocol, "Nice FLO");
|
|
string_set_str(context->preset, "FuriHalSubGhzPresetOok650Async");
|
|
if(!subbrute_is_frequency_allowed(context)) {
|
|
return;
|
|
}
|
|
context->current_scene = SceneAttack;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void subbrute_scene_entrypoint_on_enter(SubBruteState* context) {
|
|
// Clear the previous payload
|
|
context->menu_index = 0;
|
|
for(uint32_t i = 0; i < 9; i++) {
|
|
string_init(subbrute_menu_items[i]);
|
|
}
|
|
|
|
string_set(subbrute_menu_items[0], "BF existing dump");
|
|
string_set(subbrute_menu_items[1], "CAME 12bit 433mhz");
|
|
string_set(subbrute_menu_items[2], "CAME 12bit 868mhz");
|
|
string_set(subbrute_menu_items[3], "Chamberlain 9bit 315mhz");
|
|
string_set(subbrute_menu_items[4], "Chamberlain 9bit 390mhz");
|
|
string_set(subbrute_menu_items[5], "Linear 10bit 300mhz");
|
|
string_set(subbrute_menu_items[6], "Linear 10bit 310mhz");
|
|
string_set(subbrute_menu_items[7], "NICE 12bit 433mhz");
|
|
string_set(subbrute_menu_items[8], "NICE 12bit 868mhz");
|
|
}
|
|
|
|
void subbrute_scene_entrypoint_on_exit(SubBruteState* context) {
|
|
UNUSED(context);
|
|
for(uint32_t i = 0; i < 9; i++) {
|
|
string_clear(subbrute_menu_items[i]);
|
|
}
|
|
}
|
|
|
|
void subbrute_scene_entrypoint_on_tick(SubBruteState* context) {
|
|
UNUSED(context);
|
|
}
|
|
|
|
void subbrute_scene_entrypoint_on_event(SubBruteEvent event, SubBruteState* context) {
|
|
if(event.evt_type == EventTypeKey) {
|
|
if(event.input_type == InputTypeShort) {
|
|
switch(event.key) {
|
|
case InputKeyDown:
|
|
if(context->menu_index < SubBruteAttackNICE12bit868) {
|
|
context->menu_index++;
|
|
}
|
|
break;
|
|
case InputKeyUp:
|
|
if(context->menu_index > SubBruteAttackLoadFile) {
|
|
context->menu_index--;
|
|
}
|
|
break;
|
|
case InputKeyLeft:
|
|
case InputKeyRight:
|
|
break;
|
|
case InputKeyOk:
|
|
subbrute_scene_entrypoint_menu_callback(context, context->menu_index);
|
|
break;
|
|
case InputKeyBack:
|
|
context->is_running = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void subbrute_scene_entrypoint_on_draw(Canvas* canvas, SubBruteState* context) {
|
|
canvas_clear(canvas);
|
|
canvas_set_color(canvas, ColorBlack);
|
|
|
|
// Title
|
|
canvas_set_font(canvas, FontPrimary);
|
|
canvas_draw_str_aligned(canvas, 64, 6, AlignCenter, AlignTop, "SubGhz Fuzzer");
|
|
|
|
if(context->menu_index > SubBruteAttackLoadFile) {
|
|
canvas_set_font(canvas, FontSecondary);
|
|
canvas_draw_str_aligned(
|
|
canvas,
|
|
64,
|
|
24,
|
|
AlignCenter,
|
|
AlignTop,
|
|
string_get_cstr(subbrute_menu_items[context->menu_index - 1]));
|
|
}
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
canvas_draw_str_aligned(
|
|
canvas,
|
|
64,
|
|
36,
|
|
AlignCenter,
|
|
AlignTop,
|
|
string_get_cstr(subbrute_menu_items[context->menu_index]));
|
|
|
|
if(context->menu_index < SubBruteAttackNICE12bit868) {
|
|
canvas_set_font(canvas, FontSecondary);
|
|
canvas_draw_str_aligned(
|
|
canvas,
|
|
64,
|
|
48,
|
|
AlignCenter,
|
|
AlignTop,
|
|
string_get_cstr(subbrute_menu_items[context->menu_index + 1]));
|
|
}
|
|
} |