From a78c6a77212685aeb80501fd128f5efe76fd72f2 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sat, 21 Aug 2021 16:57:48 +0300 Subject: [PATCH] print transaction counter --- client/src/cmdhfmfdes.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index a1e1cdd47..a74647184 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -4658,8 +4658,8 @@ static int DesfileReadFileAndPrint(DesfireContext *dctx, uint8_t fnum, int filet // MF2DLHX0.pdf, 10.3.2.1 Transaction MAC Counter, page 41 uint32_t actTMC = MemLeToUint2byte(&resp[0]); uint32_t sessTMC = MemLeToUint2byte(&resp[2]); - PrintAndLogEx(SUCCESS, "Session tr counter : %d (0x%08x)", sessTMC, sessTMC); - PrintAndLogEx(SUCCESS, "Actual tr counter : %d (0x%08x)", actTMC, actTMC); + PrintAndLogEx(SUCCESS, "Session tr counter : %d (0x%04x)", sessTMC, sessTMC); + PrintAndLogEx(SUCCESS, "Actual tr counter : %d (0x%04x)", actTMC, actTMC); } PrintAndLogEx(SUCCESS, "Transaction MAC : %s", sprint_hex(&resp[4], 8)); } @@ -5166,7 +5166,16 @@ static int CmdHF14ADesWriteData(const char *Cmd) { PrintAndLogEx(INFO, _GREEN_("Commit result:")); uint32_t cnt = MemLeToUint4byte(&resp[0]); transactionCounter = cnt; - PrintAndLogEx(SUCCESS, "Transaction counter: %d (0x%08x)", cnt, cnt); + if (dctx.secureChannel != DACLRP) { + PrintAndLogEx(SUCCESS, "Transaction counter: %d (0x%08x)", cnt, cnt); + } else { + // For composing TMC the two subparts are concatenated as follows: actTMC || sesTMC. Both subparts are represented LSB first. + // MF2DLHX0.pdf, 10.3.2.1 Transaction MAC Counter, page 41 + uint32_t actTMC = MemLeToUint2byte(&resp[0]); + uint32_t sessTMC = MemLeToUint2byte(&resp[2]); + PrintAndLogEx(SUCCESS, "Session tr counter : %d (0x%04x)", sessTMC, sessTMC); + PrintAndLogEx(SUCCESS, "Actual tr counter : %d (0x%04x)", actTMC, actTMC); + } PrintAndLogEx(SUCCESS, "Transaction MAC : %s", sprint_hex(&resp[4], 8)); } }