From b415ee086d26045f90dfa32ecd422a7640f188f6 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 19 Jul 2021 19:54:51 +0300 Subject: [PATCH] remove double padding --- client/src/cmdhfmfdes.c | 2 +- client/src/mifare/desfirecore.c | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 6b429cd47..8c59ff80f 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -4997,7 +4997,7 @@ static int CmdHF14ADesChangeKey(const char *Cmd) { } DesfireSetCommMode(&dctx, DCMEncryptedPlain); - res = DesfireChangeKey(&dctx, (appid == 0x000000), newkeynum, newkeytype, newkeyver, newkey, oldkeytype, oldkey, true); + res = DesfireChangeKey(&dctx, (appid == 0x000000) && (newkeynum == 0) && (dctx.keyNum == 0), newkeynum, newkeytype, newkeyver, newkey, oldkeytype, oldkey, true); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Change key " _GREEN_("ok") " "); } else { diff --git a/client/src/mifare/desfirecore.c b/client/src/mifare/desfirecore.c index 476728505..47046095c 100644 --- a/client/src/mifare/desfirecore.c +++ b/client/src/mifare/desfirecore.c @@ -1163,15 +1163,14 @@ int DesfireChangeKey(DesfireContext *dctx, bool change_master_key, uint8_t newke } } - // get padded data length - size_t rlen = padded_data_length(cdatalen, desfire_get_key_block_length(newkeytype)); - // send command uint8_t resp[257] = {0}; size_t resplen = 0; - int res = DesfireChangeKeyCmd(dctx, &pckcdata[1], rlen + 1, resp, &resplen); + int res = DesfireChangeKeyCmd(dctx, &pckcdata[1], cdatalen, resp, &resplen); // check response + if (res == 0 && resplen > 0) + res = -20; // clear auth if (newkeynum == dctx->keyNum)