Mark TODOs for next PR

This commit is contained in:
noproto 2024-10-29 14:07:16 -04:00
parent 6dbb46a81d
commit 2282587c15
2 changed files with 15 additions and 15 deletions

View File

@ -5,8 +5,8 @@
#define TAG "NfcMfClassicDictAttack" #define TAG "NfcMfClassicDictAttack"
// TODO: Fix lag when leaving the dictionary attack view after Hardnested // TODO FL-3926: Fix lag when leaving the dictionary attack view after Hardnested
// TODO: Re-enters backdoor detection between user and system dictionary if no backdoor is found // TODO FL-3926: Re-enters backdoor detection between user and system dictionary if no backdoor is found
typedef enum { typedef enum {
DictAttackStateCUIDDictInProgress, DictAttackStateCUIDDictInProgress,

View File

@ -6,11 +6,11 @@
#define TAG "MfClassicPoller" #define TAG "MfClassicPoller"
// TODO: Buffer writes for Hardnested, set state to Log when finished and sum property matches // TODO FL-3926: Buffer writes for Hardnested, set state to Log when finished and sum property matches
// TODO: Store target key in CUID dictionary // TODO FL-3926: Store target key in CUID dictionary
// TODO: Dead code for malloc returning NULL? // TODO FL-3926: Dead code for malloc returning NULL?
// TODO: Auth1 static encrypted exists (rare) // TODO FL-3926: Auth1 static encrypted exists (rare)
// TODO: Use keys found by NFC plugins, cached keys // TODO FL-3926: Use keys found by NFC plugins, cached keys
#define MF_CLASSIC_MAX_BUFF_SIZE (64) #define MF_CLASSIC_MAX_BUFF_SIZE (64)
@ -606,7 +606,7 @@ NfcCommand mf_classic_poller_handler_analyze_backdoor(MfClassicPoller* instance)
} }
NfcCommand mf_classic_poller_handler_backdoor_read_sector(MfClassicPoller* instance) { NfcCommand mf_classic_poller_handler_backdoor_read_sector(MfClassicPoller* instance) {
// TODO: Reauth not needed // TODO FL-3926: Reauth not needed
NfcCommand command = NfcCommandContinue; NfcCommand command = NfcCommandContinue;
MfClassicPollerDictAttackContext* dict_attack_ctx = &instance->mode_ctx.dict_attack_ctx; MfClassicPollerDictAttackContext* dict_attack_ctx = &instance->mode_ctx.dict_attack_ctx;
MfClassicError error = MfClassicErrorNone; MfClassicError error = MfClassicErrorNone;
@ -1328,8 +1328,8 @@ static inline bool is_byte_found(uint8_t* found, uint8_t byte) {
} }
NfcCommand mf_classic_poller_handler_nested_collect_nt_enc(MfClassicPoller* instance) { NfcCommand mf_classic_poller_handler_nested_collect_nt_enc(MfClassicPoller* instance) {
// TODO: Handle when nonce is not collected (retry counter? Do not increment nested_target_key) // TODO FL-3926: Handle when nonce is not collected (retry counter? Do not increment nested_target_key)
// TODO: Look into using MfClassicNt more // TODO FL-3926: Look into using MfClassicNt more
NfcCommand command = NfcCommandContinue; NfcCommand command = NfcCommandContinue;
MfClassicPollerDictAttackContext* dict_attack_ctx = &instance->mode_ctx.dict_attack_ctx; MfClassicPollerDictAttackContext* dict_attack_ctx = &instance->mode_ctx.dict_attack_ctx;
@ -1563,8 +1563,8 @@ static MfClassicKey* search_dicts_for_nonce_key(
} }
NfcCommand mf_classic_poller_handler_nested_dict_attack(MfClassicPoller* instance) { NfcCommand mf_classic_poller_handler_nested_dict_attack(MfClassicPoller* instance) {
// TODO: Handle when nonce is not collected (retry counter? Do not increment nested_target_key) // TODO FL-3926: Handle when nonce is not collected (retry counter? Do not increment nested_target_key)
// TODO: Look into using MfClassicNt more // TODO FL-3926: Look into using MfClassicNt more
NfcCommand command = NfcCommandContinue; NfcCommand command = NfcCommandContinue;
MfClassicPollerDictAttackContext* dict_attack_ctx = &instance->mode_ctx.dict_attack_ctx; MfClassicPollerDictAttackContext* dict_attack_ctx = &instance->mode_ctx.dict_attack_ctx;
@ -1722,7 +1722,7 @@ NfcCommand mf_classic_poller_handler_nested_log(MfClassicPoller* instance) {
bool params_write_success = true; bool params_write_success = true;
for(size_t i = 0; i < nonce_pair_count; i++) { for(size_t i = 0; i < nonce_pair_count; i++) {
MfClassicNestedNonce* nonce = &dict_attack_ctx->nested_nonce.nonces[i]; MfClassicNestedNonce* nonce = &dict_attack_ctx->nested_nonce.nonces[i];
// TODO: Avoid repeating logic here // TODO FL-3926: Avoid repeating logic here
uint8_t nonce_sector = nonce->key_idx / (weak_prng ? 4 : 2); uint8_t nonce_sector = nonce->key_idx / (weak_prng ? 4 : 2);
MfClassicKeyType nonce_key_type = MfClassicKeyType nonce_key_type =
(nonce->key_idx % (weak_prng ? 4 : 2) < (weak_prng ? 2 : 1)) ? MfClassicKeyTypeA : (nonce->key_idx % (weak_prng ? 4 : 2) < (weak_prng ? 2 : 1)) ? MfClassicKeyTypeA :
@ -1857,7 +1857,7 @@ NfcCommand mf_classic_poller_handler_nested_controller(MfClassicPoller* instance
} else if(dict_attack_ctx->prng_type == MfClassicPrngTypeNoTag) { } else if(dict_attack_ctx->prng_type == MfClassicPrngTypeNoTag) {
FURI_LOG_E(TAG, "No tag detected"); FURI_LOG_E(TAG, "No tag detected");
// Free nonce array // Free nonce array
// TODO: Consider using .count here // TODO FL-3926: Consider using .count here
if(dict_attack_ctx->nested_nonce.nonces) { if(dict_attack_ctx->nested_nonce.nonces) {
free(dict_attack_ctx->nested_nonce.nonces); free(dict_attack_ctx->nested_nonce.nonces);
dict_attack_ctx->nested_nonce.nonces = NULL; dict_attack_ctx->nested_nonce.nonces = NULL;
@ -1868,7 +1868,7 @@ NfcCommand mf_classic_poller_handler_nested_controller(MfClassicPoller* instance
} }
if(dict_attack_ctx->nested_nonce.nonces) { if(dict_attack_ctx->nested_nonce.nonces) {
// Free nonce array // Free nonce array
// TODO: Consider using .count here // TODO FL-3926: Consider using .count here
free(dict_attack_ctx->nested_nonce.nonces); free(dict_attack_ctx->nested_nonce.nonces);
dict_attack_ctx->nested_nonce.nonces = NULL; dict_attack_ctx->nested_nonce.nonces = NULL;
dict_attack_ctx->nested_nonce.count = 0; dict_attack_ctx->nested_nonce.count = 0;