Fix RFID Fuzzer and iButton Fuzzer Bugs

This commit is contained in:
MX
2023-04-23 01:57:38 +03:00
parent ba0efda2aa
commit a0597a9e6e
7 changed files with 159 additions and 151 deletions

View File

@@ -4,7 +4,7 @@ App(
apptype=FlipperAppType.EXTERNAL, apptype=FlipperAppType.EXTERNAL,
entry_point="flipfrid_start", entry_point="flipfrid_start",
requires=["gui", "storage", "dialogs", "input", "notification"], requires=["gui", "storage", "dialogs", "input", "notification"],
stack_size=1 * 1024, stack_size=2 * 1024,
order=15, order=15,
fap_icon="rfid_10px.png", fap_icon="rfid_10px.png",
fap_category="Tools", fap_category="Tools",

View File

@@ -58,6 +58,16 @@ FlipFridState* flipfrid_alloc() {
flipfrid->proto_name = furi_string_alloc(); flipfrid->proto_name = furi_string_alloc();
flipfrid->data_str = furi_string_alloc(); flipfrid->data_str = furi_string_alloc();
flipfrid->main_menu_items[0] = furi_string_alloc_set("Default Values");
flipfrid->main_menu_items[1] = furi_string_alloc_set("BF Customer ID");
flipfrid->main_menu_items[2] = furi_string_alloc_set("Load File");
flipfrid->main_menu_items[3] = furi_string_alloc_set("Load UIDs from file");
flipfrid->main_menu_proto_items[0] = furi_string_alloc_set("EM4100");
flipfrid->main_menu_proto_items[1] = furi_string_alloc_set("HIDProx");
flipfrid->main_menu_proto_items[2] = furi_string_alloc_set("PAC/Stanley");
flipfrid->main_menu_proto_items[3] = furi_string_alloc_set("H10301");
flipfrid->previous_scene = NoneScene; flipfrid->previous_scene = NoneScene;
flipfrid->current_scene = SceneEntryPoint; flipfrid->current_scene = SceneEntryPoint;
flipfrid->is_running = true; flipfrid->is_running = true;
@@ -100,6 +110,14 @@ void flipfrid_free(FlipFridState* flipfrid) {
furi_string_free(flipfrid->proto_name); furi_string_free(flipfrid->proto_name);
furi_string_free(flipfrid->data_str); furi_string_free(flipfrid->data_str);
for(uint32_t i = 0; i < 4; i++) {
furi_string_free(flipfrid->main_menu_items[i]);
}
for(uint32_t i = 0; i < 4; i++) {
furi_string_free(flipfrid->main_menu_proto_items[i]);
}
free(flipfrid->data); free(flipfrid->data);
free(flipfrid->payload); free(flipfrid->payload);

View File

@@ -75,6 +75,8 @@ typedef struct {
FlipFridProtos proto; FlipFridProtos proto;
FuriString* attack_name; FuriString* attack_name;
FuriString* proto_name; FuriString* proto_name;
FuriString* main_menu_items[4];
FuriString* main_menu_proto_items[4];
DialogsApp* dialogs; DialogsApp* dialogs;
FuriString* notification_msg; FuriString* notification_msg;

View File

@@ -1,8 +1,5 @@
#include "flipfrid_scene_entrypoint.h" #include "flipfrid_scene_entrypoint.h"
FuriString* main_menu_items[4];
FuriString* main_menu_proto_items[4];
void flipfrid_scene_entrypoint_menu_callback( void flipfrid_scene_entrypoint_menu_callback(
FlipFridState* context, FlipFridState* context,
uint32_t index, uint32_t index,
@@ -68,31 +65,14 @@ void flipfrid_scene_entrypoint_on_enter(FlipFridState* context) {
menu_items[i] = furi_string_alloc(); menu_items[i] = furi_string_alloc();
}*/ }*/
main_menu_items[0] = furi_string_alloc_set("Default Values");
main_menu_items[1] = furi_string_alloc_set("BF Customer ID");
main_menu_items[2] = furi_string_alloc_set("Load File");
main_menu_items[3] = furi_string_alloc_set("Load UIDs from file");
context->menu_proto_index = 0; context->menu_proto_index = 0;
/*for(uint32_t i = 0; i < 4; i++) { /*for(uint32_t i = 0; i < 4; i++) {
menu_proto_items[i] = furi_string_alloc(); menu_proto_items[i] = furi_string_alloc();
}*/ }*/
main_menu_proto_items[0] = furi_string_alloc_set("EM4100");
main_menu_proto_items[1] = furi_string_alloc_set("HIDProx");
main_menu_proto_items[2] = furi_string_alloc_set("PAC/Stanley");
main_menu_proto_items[3] = furi_string_alloc_set("H10301");
} }
void flipfrid_scene_entrypoint_on_exit(FlipFridState* context) { void flipfrid_scene_entrypoint_on_exit(FlipFridState* context) {
UNUSED(context); UNUSED(context);
for(uint32_t i = 0; i < 4; i++) {
furi_string_free(main_menu_items[i]);
}
for(uint32_t i = 0; i < 4; i++) {
furi_string_free(main_menu_proto_items[i]);
}
} }
void flipfrid_scene_entrypoint_on_tick(FlipFridState* context) { void flipfrid_scene_entrypoint_on_tick(FlipFridState* context) {
@@ -145,73 +125,77 @@ void flipfrid_scene_entrypoint_on_draw(Canvas* canvas, FlipFridState* context) {
canvas_clear(canvas); canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack); canvas_set_color(canvas, ColorBlack);
if(main_menu_items[context->menu_index] != NULL) { if(context->main_menu_items != NULL) {
if(context->menu_index > FlipFridAttackDefaultValues) { if(context->main_menu_items[context->menu_index] != NULL) {
canvas_set_font(canvas, FontSecondary); if(context->menu_index > FlipFridAttackDefaultValues) {
canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(
canvas,
64,
24,
AlignCenter,
AlignTop,
furi_string_get_cstr(context->main_menu_items[context->menu_index - 1]));
}
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned( canvas_draw_str_aligned(
canvas, canvas,
64, 64,
24, 36,
AlignCenter, AlignCenter,
AlignTop, AlignTop,
furi_string_get_cstr(main_menu_items[context->menu_index - 1])); furi_string_get_cstr(context->main_menu_items[context->menu_index]));
}
canvas_set_font(canvas, FontPrimary); if(context->menu_index < FlipFridAttackLoadFileCustomUids) {
canvas_draw_str_aligned( canvas_set_font(canvas, FontSecondary);
canvas, canvas_draw_str_aligned(
64, canvas,
36, 64,
AlignCenter, 48,
AlignTop, AlignCenter,
furi_string_get_cstr(main_menu_items[context->menu_index])); AlignTop,
furi_string_get_cstr(context->main_menu_items[context->menu_index + 1]));
}
if(context->menu_index < FlipFridAttackLoadFileCustomUids) { if(context->menu_proto_index > EM4100) {
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(
canvas,
64,
-12,
AlignCenter,
AlignTop,
furi_string_get_cstr(
context->main_menu_proto_items[context->menu_proto_index - 1]));
}
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<");
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned( canvas_draw_str_aligned(
canvas, canvas,
64, 64,
48, 4,
AlignCenter, AlignCenter,
AlignTop, AlignTop,
furi_string_get_cstr(main_menu_items[context->menu_index + 1])); furi_string_get_cstr(context->main_menu_proto_items[context->menu_proto_index]));
}
if(context->menu_proto_index > EM4100) { canvas_set_font(canvas, FontPrimary);
canvas_set_font(canvas, FontSecondary); canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
canvas_draw_str_aligned(
canvas,
64,
-12,
AlignCenter,
AlignTop,
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index - 1]));
}
canvas_set_font(canvas, FontPrimary); if(context->menu_proto_index < H10301) {
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<"); canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(
canvas_set_font(canvas, FontPrimary); canvas,
canvas_draw_str_aligned( 64,
canvas, -12,
64, AlignCenter,
4, AlignTop,
AlignCenter, furi_string_get_cstr(
AlignTop, context->main_menu_proto_items[context->menu_proto_index + 1]));
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index])); }
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
if(context->menu_proto_index < H10301) {
canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(
canvas,
64,
-12,
AlignCenter,
AlignTop,
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index + 1]));
} }
} }
} }

View File

@@ -58,6 +58,14 @@ iBtnFuzzerState* ibtnfuzzer_alloc() {
ibtnfuzzer->proto_name = furi_string_alloc(); ibtnfuzzer->proto_name = furi_string_alloc();
ibtnfuzzer->data_str = furi_string_alloc(); ibtnfuzzer->data_str = furi_string_alloc();
ibtnfuzzer->main_menu_items[0] = furi_string_alloc_set("Default Values");
ibtnfuzzer->main_menu_items[1] = furi_string_alloc_set("Load File");
ibtnfuzzer->main_menu_items[2] = furi_string_alloc_set("Load UIDs from file");
ibtnfuzzer->main_menu_proto_items[0] = furi_string_alloc_set("DS1990");
ibtnfuzzer->main_menu_proto_items[1] = furi_string_alloc_set("Metakom");
ibtnfuzzer->main_menu_proto_items[2] = furi_string_alloc_set("Cyfral");
ibtnfuzzer->previous_scene = NoneScene; ibtnfuzzer->previous_scene = NoneScene;
ibtnfuzzer->current_scene = SceneEntryPoint; ibtnfuzzer->current_scene = SceneEntryPoint;
ibtnfuzzer->is_running = true; ibtnfuzzer->is_running = true;
@@ -104,6 +112,14 @@ void ibtnfuzzer_free(iBtnFuzzerState* ibtnfuzzer) {
furi_string_free(ibtnfuzzer->proto_name); furi_string_free(ibtnfuzzer->proto_name);
furi_string_free(ibtnfuzzer->data_str); furi_string_free(ibtnfuzzer->data_str);
for(uint32_t i = 0; i < 3; i++) {
furi_string_free(ibtnfuzzer->main_menu_items[i]);
}
for(uint32_t i = 0; i < 3; i++) {
furi_string_free(ibtnfuzzer->main_menu_proto_items[i]);
}
free(ibtnfuzzer->data); free(ibtnfuzzer->data);
free(ibtnfuzzer->payload); free(ibtnfuzzer->payload);

View File

@@ -73,6 +73,8 @@ typedef struct {
iBtnFuzzerProtos proto; iBtnFuzzerProtos proto;
FuriString* attack_name; FuriString* attack_name;
FuriString* proto_name; FuriString* proto_name;
FuriString* main_menu_items[3];
FuriString* main_menu_proto_items[3];
DialogsApp* dialogs; DialogsApp* dialogs;
FuriString* notification_msg; FuriString* notification_msg;

View File

@@ -1,8 +1,5 @@
#include "ibtnfuzzer_scene_entrypoint.h" #include "ibtnfuzzer_scene_entrypoint.h"
FuriString* main_menu_items[3];
FuriString* main_menu_proto_items[3];
void ibtnfuzzer_scene_entrypoint_menu_callback( void ibtnfuzzer_scene_entrypoint_menu_callback(
iBtnFuzzerState* context, iBtnFuzzerState* context,
uint32_t index, uint32_t index,
@@ -61,30 +58,14 @@ void ibtnfuzzer_scene_entrypoint_on_enter(iBtnFuzzerState* context) {
menu_items[i] = furi_string_alloc(); menu_items[i] = furi_string_alloc();
}*/ }*/
main_menu_items[0] = furi_string_alloc_set("Default Values");
main_menu_items[1] = furi_string_alloc_set("Load File");
main_menu_items[2] = furi_string_alloc_set("Load UIDs from file");
context->menu_proto_index = 0; context->menu_proto_index = 0;
/*for(uint32_t i = 0; i < 4; i++) { /*for(uint32_t i = 0; i < 4; i++) {
menu_proto_items[i] = furi_string_alloc(); menu_proto_items[i] = furi_string_alloc();
}*/ }*/
main_menu_proto_items[0] = furi_string_alloc_set("DS1990");
main_menu_proto_items[1] = furi_string_alloc_set("Metakom");
main_menu_proto_items[2] = furi_string_alloc_set("Cyfral");
} }
void ibtnfuzzer_scene_entrypoint_on_exit(iBtnFuzzerState* context) { void ibtnfuzzer_scene_entrypoint_on_exit(iBtnFuzzerState* context) {
context->enter_rerun = false; context->enter_rerun = false;
for(uint32_t i = 0; i < 3; i++) {
furi_string_free(main_menu_items[i]);
}
for(uint32_t i = 0; i < 3; i++) {
furi_string_free(main_menu_proto_items[i]);
}
} }
void ibtnfuzzer_scene_entrypoint_on_tick(iBtnFuzzerState* context) { void ibtnfuzzer_scene_entrypoint_on_tick(iBtnFuzzerState* context) {
@@ -142,74 +123,79 @@ void ibtnfuzzer_scene_entrypoint_on_draw(Canvas* canvas, iBtnFuzzerState* contex
canvas_clear(canvas); canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack); canvas_set_color(canvas, ColorBlack);
if(main_menu_items[context->menu_index] != NULL) { if(context->main_menu_items != NULL) {
if(context->menu_index > iBtnFuzzerAttackDefaultValues) { if(context->main_menu_items[context->menu_index] != NULL) {
canvas_set_font(canvas, FontSecondary); if(context->menu_index > iBtnFuzzerAttackDefaultValues) {
canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(
canvas,
64,
24,
AlignCenter,
AlignTop,
furi_string_get_cstr(context->main_menu_items[context->menu_index - 1]));
}
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned( canvas_draw_str_aligned(
canvas, canvas,
64, 64,
24, 36,
AlignCenter, AlignCenter,
AlignTop, AlignTop,
furi_string_get_cstr(main_menu_items[context->menu_index - 1])); furi_string_get_cstr(context->main_menu_items[context->menu_index]));
}
canvas_set_font(canvas, FontPrimary); if(context->menu_index < iBtnFuzzerAttackLoadFileCustomUids) {
canvas_draw_str_aligned( canvas_set_font(canvas, FontSecondary);
canvas, canvas_draw_str_aligned(
64, canvas,
36, 64,
AlignCenter, 48,
AlignTop, AlignCenter,
furi_string_get_cstr(main_menu_items[context->menu_index])); AlignTop,
furi_string_get_cstr(context->main_menu_items[context->menu_index + 1]));
}
if(context->menu_index < iBtnFuzzerAttackLoadFileCustomUids) { if(context->menu_proto_index > DS1990) {
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned( canvas_draw_str_aligned(
canvas, canvas,
64, 64,
48, -12,
AlignCenter, AlignCenter,
AlignTop, AlignTop,
furi_string_get_cstr(main_menu_items[context->menu_index + 1])); furi_string_get_cstr(
} context->main_menu_proto_items[context->menu_proto_index - 1]));
}
if(context->menu_proto_index > DS1990) { canvas_set_font(canvas, FontPrimary);
canvas_set_font(canvas, FontSecondary); canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<");
canvas_draw_str_aligned(
canvas,
64,
-12,
AlignCenter,
AlignTop,
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index - 1]));
}
canvas_set_font(canvas, FontPrimary); canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned(canvas, 27, 4, AlignCenter, AlignTop, "<"); if(context->main_menu_proto_items[context->menu_proto_index] != NULL) {
canvas_draw_str_aligned(
canvas,
64,
4,
AlignCenter,
AlignTop,
furi_string_get_cstr(
context->main_menu_proto_items[context->menu_proto_index]));
}
canvas_set_font(canvas, FontPrimary);
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
canvas_set_font(canvas, FontPrimary); if(context->menu_proto_index < Cyfral) {
if(main_menu_proto_items[context->menu_proto_index] != NULL) { canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned( canvas_draw_str_aligned(
canvas, canvas,
64, 64,
4, -12,
AlignCenter, AlignCenter,
AlignTop, AlignTop,
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index])); furi_string_get_cstr(
} context->main_menu_proto_items[context->menu_proto_index + 1]));
canvas_set_font(canvas, FontPrimary); }
canvas_draw_str_aligned(canvas, 101, 4, AlignCenter, AlignTop, ">");
if(context->menu_proto_index < Cyfral) {
canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(
canvas,
64,
-12,
AlignCenter,
AlignTop,
furi_string_get_cstr(main_menu_proto_items[context->menu_proto_index + 1]));
} }
} }
} }