Skip to content

Commit 71bdf7c

Browse files
committed
1.2.4 - Leaks...
1 parent f525e97 commit 71bdf7c

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

mifare_nested_i.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include <lib/nfc/nfc_device.h>
2020
#include "mifare_nested_icons.h"
2121

22-
#define NESTED_VERSION_APP "1.2.3"
22+
#define NESTED_VERSION_APP "1.2.4"
2323
#define NESTED_GITHUB_LINK "https://github.com/AloneLiberty/FlipperNested"
2424
#define NESTED_RECOVER_KEYS_GITHUB_LINK "https://github.com/AloneLiberty/FlipperNestedRecovery"
2525
#define NESTED_NONCE_FORMAT_VERSION "3"

mifare_nested_worker.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ uint32_t mifare_nested_worker_predict_delay(
315315
uint32_t nt1, nt2, i = 0, previous = 0, prng_delay = 0, zero_prng_value = 65565, repeat = 0;
316316

317317
if(tries > 10) {
318+
free(crypto);
318319
return 2; // Too many tries, fallback to hardnested
319320
}
320321

@@ -324,6 +325,7 @@ uint32_t mifare_nested_worker_predict_delay(
324325
// First, we find RPNG rounds per 1000 us
325326
for(uint32_t rtr = 0; rtr < 25; rtr++) {
326327
if(mifare_nested_worker->state != MifareNestedWorkerStateCollecting) {
328+
free(crypto);
327329
return 1;
328330
}
329331

@@ -363,6 +365,7 @@ uint32_t mifare_nested_worker_predict_delay(
363365

364366
// Let's hope...
365367
if(i > 810 && i < 840) {
368+
free(crypto);
366369
return rtr * 1000;
367370
}
368371
}
@@ -373,6 +376,7 @@ uint32_t mifare_nested_worker_predict_delay(
373376
// Mifare Classic (weak) RPNG repeats every 65565 PRNG cycles
374377

375378
if(zero_prng_value == 65565) {
379+
free(crypto);
376380
// PRNG isn't pretictable
377381
return 1;
378382
}
@@ -384,6 +388,7 @@ uint32_t mifare_nested_worker_predict_delay(
384388
for(uint32_t rtr = cycles_to_reset - 1; rtr < cycles_to_reset + limit; rtr++) {
385389
for(uint32_t rtz = 0; rtz < 100; rtz++) {
386390
if(mifare_nested_worker->state != MifareNestedWorkerStateCollecting) {
391+
free(crypto);
387392
return 1;
388393
}
389394

@@ -441,11 +446,13 @@ uint32_t mifare_nested_worker_predict_delay(
441446
previous = i;
442447

443448
if(i > 810 && i < 840) {
449+
free(crypto);
444450
FURI_LOG_I(TAG, "Found delay: %lu us", delay);
445451
return delay;
446452
} else if(i > 840 && i < 40000) {
447453
FURI_LOG_D(TAG, "Trying again: timing lost");
448454
tries++;
455+
free(crypto);
449456
return mifare_nested_worker_predict_delay(
450457
tx_rx, blockNo, keyType, ui64Key, tries, mifare_nested_worker);
451458
}
@@ -455,10 +462,13 @@ uint32_t mifare_nested_worker_predict_delay(
455462
if(i > 1000 && i < 65000) {
456463
FURI_LOG_D(TAG, "Trying again: wrong predicted timing");
457464
tries++;
465+
free(crypto);
458466
return mifare_nested_worker_predict_delay(
459467
tx_rx, blockNo, keyType, ui64Key, tries, mifare_nested_worker);
460468
}
461469

470+
free(crypto);
471+
462472
return 1;
463473
}
464474

0 commit comments

Comments
 (0)