From 945bbe6311f2929ccbda94905783623e2da9e8bc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 4 Apr 2020 07:03:30 +0200 Subject: [PATCH] fix: using the right sized param, helps.. --- client/cmdhflegic.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/cmdhflegic.c b/client/cmdhflegic.c index 1eb29b57f..4976fe4a6 100644 --- a/client/cmdhflegic.c +++ b/client/cmdhflegic.c @@ -170,22 +170,26 @@ static int usage_legic_wipe(void) { return PM3_SUCCESS; } -static bool legic_xor(uint8_t *data, uint8_t cardsize) { - bool ret = true; +static bool legic_xor(uint8_t *data, uint16_t cardsize) { + + if (cardsize <= 22) { + PrintAndLogEx(INFO, "No obsfuscation such small dump"); + return false; + } + uint8_t crc = data[4]; uint32_t calc_crc = CRC8Legic(data, 4); if (crc != calc_crc) { PrintAndLogEx(INFO, "Crc mismatch, obsfuscation not possible"); - ret = false; - } else if (cardsize <= 22) { - PrintAndLogEx(INFO, "No obsfuscation such small dump"); - } else { - for(uint16_t i = 22; i < cardsize - 22; i++) { - data[i] ^= crc; - } - PrintAndLogEx(SUCCESS, "Obsfuscation done"); + return false; + } + + + for(uint16_t i = 22; i < cardsize - 22; i++) { + data[i] ^= crc; } - return ret; + PrintAndLogEx(SUCCESS, "Obsfuscation done"); + return true; } /*