From a9c10c872ed1b92b38893cc76c2691dd041b9e74 Mon Sep 17 00:00:00 2001 From: Piotr Rzeszut Date: Fri, 15 Nov 2024 13:13:48 +0100 Subject: [PATCH] Changed max sector for AUTH to be executed only once and result cached in local variable --- armsrc/mifaresim.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index 69b577236..aa93e8770 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -478,6 +478,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *uid, uint16_t uint8_t cardWRBL = 0; uint8_t cardAUTHSC = 0; + uint8_t cardMaxSEC = MifareMaxSector(flags); uint8_t cardAUTHKEY = AUTHKEYNONE; // no authentication uint32_t cardRr = 0; uint32_t ans = 0; @@ -784,7 +785,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *uid, uint16_t if (g_dbglevel >= DBG_EXTENDED) Dbprintf("[MFEMUL_WORK] KEY %c: %012" PRIx64, (cardAUTHKEY == 0) ? 'A' : 'B', emlGetKey(cardAUTHSC, cardAUTHKEY)); // sector out of range - do not respond - if (cardAUTHSC >= MifareMaxSector(flags)) { + if (cardAUTHSC >= cardMaxSEC) { cardAUTHKEY = AUTHKEYNONE; // not authenticated cardSTATE_TO_IDLE(); if (g_dbglevel >= DBG_EXTENDED) Dbprintf("[MFEMUL_WORK] Out of range sector %d(0x%02x)", cardAUTHSC, cardAUTHSC);