| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #include "../mifare_fuzzer_i.h"
- #include "../mifare_fuzzer_custom_events.h"
- enum SubmenuIndex {
- SubmenuIndexClassic1k,
- SubmenuIndexClassic4k,
- SubmenuIndexUltralight,
- SubmenuIndexFile,
- };
- /// @brief mifare_fuzzer_scene_start_submenu_callback()
- /// @param context
- /// @param index
- void mifare_fuzzer_scene_start_submenu_callback(void* context, uint32_t index) {
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_submenu_callback() :: index = %ld", index);
- MifareFuzzerApp* app = context;
- uint8_t custom_event = 255;
- switch(index) {
- case SubmenuIndexClassic1k:
- custom_event = MifareFuzzerEventClassic1k;
- break;
- case SubmenuIndexClassic4k:
- custom_event = MifareFuzzerEventClassic4k;
- break;
- case SubmenuIndexUltralight:
- custom_event = MifareFuzzerEventUltralight;
- break;
- case SubmenuIndexFile:
- custom_event = MifareFuzzerEventFile;
- break;
- default:
- return;
- }
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_submenu_callback() :: custom_event = %d", custom_event);
- view_dispatcher_send_custom_event(app->view_dispatcher, custom_event);
- }
- /// @brief mifare_fuzzer_scene_start_on_enter()
- /// @param context
- void mifare_fuzzer_scene_start_on_enter(void* context) {
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_on_enter()");
- MifareFuzzerApp* app = context;
- Submenu* submenu_card = app->submenu_card;
- submenu_set_header(submenu_card, "Mifare Fuzzer (card)");
- submenu_add_item(
- submenu_card,
- "Classic 1k",
- SubmenuIndexClassic1k,
- mifare_fuzzer_scene_start_submenu_callback,
- app);
- submenu_add_item(
- submenu_card,
- "Classic 4k",
- SubmenuIndexClassic4k,
- mifare_fuzzer_scene_start_submenu_callback,
- app);
- submenu_add_item(
- submenu_card,
- "Ultralight",
- SubmenuIndexUltralight,
- mifare_fuzzer_scene_start_submenu_callback,
- app);
- submenu_add_item(
- submenu_card,
- "From file",
- SubmenuIndexFile,
- mifare_fuzzer_scene_start_submenu_callback,
- app);
- // set selected menu
- submenu_set_selected_item(
- submenu_card, scene_manager_get_scene_state(app->scene_manager, MifareFuzzerSceneStart));
- view_dispatcher_switch_to_view(app->view_dispatcher, MifareFuzzerViewSelectCard);
- }
- /// @brief mifare_fuzzer_scene_start_on_event()
- /// @param context
- /// @param event
- /// @return
- /// @param context
- /// @param event
- /// @return
- bool mifare_fuzzer_scene_start_on_event(void* context, SceneManagerEvent event) {
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_on_event()");
- MifareFuzzerApp* app = context;
- bool consumed = false;
- if(event.type == SceneManagerEventTypeCustom) {
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_on_event() :: event.event = %ld", event.event);
- app->card_file_path = NULL;
- if(event.event == MifareFuzzerEventClassic1k) {
- // save selected item
- scene_manager_set_scene_state(
- app->scene_manager, MifareFuzzerSceneStart, SubmenuIndexClassic1k);
- // set emulator card
- app->card = MifareCardClassic1k;
- mifare_fuzzer_emulator_set_card(app->emulator_view, app->card, NULL);
- // open next scene
- scene_manager_next_scene(app->scene_manager, MifareFuzzerSceneAttack);
- consumed = true;
- } else if(event.event == MifareFuzzerEventClassic4k) {
- // save selected item
- scene_manager_set_scene_state(
- app->scene_manager, MifareFuzzerSceneStart, SubmenuIndexClassic4k);
- // set emulator card
- app->card = MifareCardClassic4k;
- mifare_fuzzer_emulator_set_card(app->emulator_view, app->card, NULL);
- // open next scene
- scene_manager_next_scene(app->scene_manager, MifareFuzzerSceneAttack);
- consumed = true;
- } else if(event.event == MifareFuzzerEventUltralight) {
- // save selected item
- scene_manager_set_scene_state(
- app->scene_manager, MifareFuzzerSceneStart, SubmenuIndexUltralight);
- // set emulator card
- app->card = MifareCardUltralight;
- mifare_fuzzer_emulator_set_card(app->emulator_view, app->card, NULL);
- // open next scene
- scene_manager_next_scene(app->scene_manager, MifareFuzzerSceneAttack);
- consumed = true;
- } else if(event.event == MifareFuzzerEventFile) {
- // save selected item
- scene_manager_set_scene_state(
- app->scene_manager, MifareFuzzerSceneStart, SubmenuIndexFile);
- // Don't set emulator card (yet), read file instead
- DialogsFileBrowserOptions browser_options;
- FuriString* initial_path = furi_string_alloc_set("/ext/nfc");
- dialog_file_browser_set_basic_options(
- &browser_options, MIFARE_FUZZER_CARD_FILE_EXT, NULL);
- browser_options.hide_ext = false;
- app->card_file_path = furi_string_alloc();
- bool wasFileSelected = dialog_file_browser_show(
- app->dialogs, app->card_file_path, initial_path, &browser_options);
- furi_string_free(initial_path);
- if(wasFileSelected) {
- // open next scene
- scene_manager_next_scene(app->scene_manager, MifareFuzzerSceneAttack);
- consumed = true;
- }
- }
- } else if(event.type == SceneManagerEventTypeTick) {
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_on_event() :: SceneManagerEventTypeTick");
- //consumed = true;
- }
- return consumed;
- }
- /// @brief mifare_fuzzer_scene_start_on_exit()
- /// @param context
- void mifare_fuzzer_scene_start_on_exit(void* context) {
- //FURI_LOG_D(TAG, "mifare_fuzzer_scene_start_on_exit()");
- MifareFuzzerApp* app = context;
- submenu_reset(app->submenu_card);
- }
|