2022-09-01 15:03:18 +00:00
|
|
|
#include "flipfrid_scene_entrypoint.h"
|
|
|
|
|
|
|
|
string_t menu_items[4];
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_menu_callback(FlipFridState* context, uint32_t index) {
|
|
|
|
FURI_LOG_D(TAG, "MENU: %d", index);
|
|
|
|
switch(index) {
|
|
|
|
case FlipFridAttackDefaultValues:
|
|
|
|
context->attack = FlipFridAttackDefaultValues;
|
|
|
|
context->current_scene = SceneAttack;
|
|
|
|
string_set_str(context->attack_name, "Default Values");
|
|
|
|
break;
|
|
|
|
case FlipFridAttackBfCustomerId:
|
|
|
|
context->attack = FlipFridAttackBfCustomerId;
|
|
|
|
context->current_scene = SceneAttack;
|
|
|
|
string_set_str(context->attack_name, "Bad Customer ID");
|
|
|
|
break;
|
|
|
|
case FlipFridAttackLoadFile:
|
|
|
|
context->attack = FlipFridAttackLoadFile;
|
|
|
|
context->current_scene = SceneSelectFile;
|
|
|
|
string_set_str(context->attack_name, "Load File");
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_enter(FlipFridState* context) {
|
|
|
|
context->menu_index = 0;
|
2022-09-03 20:10:07 +00:00
|
|
|
for(uint32_t i = 0; i < 3; i++) {
|
2022-09-01 15:03:18 +00:00
|
|
|
string_init(menu_items[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
string_set(menu_items[0], "Default Values");
|
|
|
|
string_set(menu_items[1], "BF Customer ID");
|
|
|
|
string_set(menu_items[2], "Load File");
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_exit(FlipFridState* context) {
|
|
|
|
UNUSED(context);
|
2022-09-03 20:10:07 +00:00
|
|
|
for(uint32_t i = 0; i < 3; i++) {
|
2022-09-01 15:03:18 +00:00
|
|
|
string_clear(menu_items[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_tick(FlipFridState* context) {
|
|
|
|
UNUSED(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_event(FlipFridEvent event, FlipFridState* context) {
|
|
|
|
if(event.evt_type == EventTypeKey) {
|
|
|
|
if(event.input_type == InputTypeShort) {
|
|
|
|
switch(event.key) {
|
|
|
|
case InputKeyDown:
|
|
|
|
if(context->menu_index < FlipFridAttackLoadFile) {
|
|
|
|
context->menu_index++;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case InputKeyUp:
|
|
|
|
if(context->menu_index > FlipFridAttackDefaultValues) {
|
|
|
|
context->menu_index--;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case InputKeyLeft:
|
|
|
|
case InputKeyRight:
|
2022-09-03 20:10:07 +00:00
|
|
|
break;
|
2022-09-01 15:03:18 +00:00
|
|
|
case InputKeyOk:
|
|
|
|
flipfrid_scene_entrypoint_menu_callback(context, context->menu_index);
|
|
|
|
break;
|
|
|
|
case InputKeyBack:
|
|
|
|
context->is_running = false;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void flipfrid_scene_entrypoint_on_draw(Canvas* canvas, FlipFridState* context) {
|
|
|
|
canvas_clear(canvas);
|
|
|
|
canvas_set_color(canvas, ColorBlack);
|
|
|
|
|
|
|
|
// Title
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
|
|
canvas_draw_str_aligned(canvas, 64, 6, AlignCenter, AlignTop, "RFID Fuzzer");
|
|
|
|
|
|
|
|
if(context->menu_index > FlipFridAttackDefaultValues) {
|
|
|
|
canvas_set_font(canvas, FontSecondary);
|
2022-09-03 20:10:07 +00:00
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
24,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_items[context->menu_index - 1]));
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
2022-09-03 20:10:07 +00:00
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas, 64, 36, AlignCenter, AlignTop, string_get_cstr(menu_items[context->menu_index]));
|
2022-09-01 15:03:18 +00:00
|
|
|
|
|
|
|
if(context->menu_index < FlipFridAttackLoadFile) {
|
|
|
|
canvas_set_font(canvas, FontSecondary);
|
2022-09-03 20:10:07 +00:00
|
|
|
canvas_draw_str_aligned(
|
|
|
|
canvas,
|
|
|
|
64,
|
|
|
|
48,
|
|
|
|
AlignCenter,
|
|
|
|
AlignTop,
|
|
|
|
string_get_cstr(menu_items[context->menu_index + 1]));
|
2022-09-01 15:03:18 +00:00
|
|
|
}
|
|
|
|
}
|