From 603e1bd978f0f7f2c620296bc89681ce8104a387 Mon Sep 17 00:00:00 2001 From: noproto Date: Mon, 18 Aug 2025 03:16:36 -0400 Subject: [PATCH] Now reading an UL-C card gives the success tone only if the key is found --- .../protocol_support/mf_ultralight/mf_ultralight.c | 6 +++++- .../nfc/scenes/nfc_scene_mf_ultralight_c_dict_attack.c | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/applications/main/nfc/helpers/protocol_support/mf_ultralight/mf_ultralight.c b/applications/main/nfc/helpers/protocol_support/mf_ultralight/mf_ultralight.c index 656034f7a..915c8799b 100644 --- a/applications/main/nfc/helpers/protocol_support/mf_ultralight/mf_ultralight.c +++ b/applications/main/nfc/helpers/protocol_support/mf_ultralight/mf_ultralight.c @@ -188,7 +188,11 @@ bool nfc_scene_read_on_event_mf_ultralight(NfcApp* instance, SceneManagerEvent e // Start dict attack for MFUL C cards only if no specific auth was attempted scene_manager_next_scene(instance->scene_manager, NfcSceneMfUltralightCDictAttack); } else { - notification_message(instance->notifications, &sequence_success); + if(data->pages_read == data->pages_total) { + notification_message(instance->notifications, &sequence_success); + } else { + notification_message(instance->notifications, &sequence_semi_success); + } scene_manager_next_scene(instance->scene_manager, NfcSceneReadSuccess); dolphin_deed(DolphinDeedNfcReadSuccess); } diff --git a/applications/main/nfc/scenes/nfc_scene_mf_ultralight_c_dict_attack.c b/applications/main/nfc/scenes/nfc_scene_mf_ultralight_c_dict_attack.c index f0b2e5de6..cf31e0f2d 100644 --- a/applications/main/nfc/scenes/nfc_scene_mf_ultralight_c_dict_attack.c +++ b/applications/main/nfc/scenes/nfc_scene_mf_ultralight_c_dict_attack.c @@ -156,7 +156,12 @@ bool nfc_scene_mf_ultralight_c_dict_attack_on_event(void* context, SceneManagerE consumed = true; } } else { - notification_message(instance->notifications, &sequence_success); + // TODO: Could check if card is fully read here like MFC dict attack, but found key means fully read + if(instance->mf_ultralight_c_dict_context.auth_success) { + notification_message(instance->notifications, &sequence_success); + } else { + notification_message(instance->notifications, &sequence_semi_success); + } scene_manager_next_scene(instance->scene_manager, NfcSceneReadSuccess); dolphin_deed(DolphinDeedNfcReadSuccess); consumed = true; @@ -184,7 +189,7 @@ bool nfc_scene_mf_ultralight_c_dict_attack_on_event(void* context, SceneManagerE } else { nfc_poller_stop(instance->poller); nfc_poller_free(instance->poller); - notification_message(instance->notifications, &sequence_success); + notification_message(instance->notifications, &sequence_semi_success); scene_manager_next_scene(instance->scene_manager, NfcSceneReadSuccess); dolphin_deed(DolphinDeedNfcReadSuccess); }