From a43d8ea9e05b872ba2b3a5db946bae7c6dc99ef5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 24 Jun 2023 22:01:10 +0200 Subject: [PATCH] adapted viewing MFC dump files to also colorize ACL + GPB bytes --- CHANGELOG.md | 1 + client/src/cmdhfmf.c | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63c3e2ac6..1af068e19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change viewing MFC dump files - it now colors ACL + GPB bytes (@iceman1001) - Added `hf mf supercard --furui` - now supports key recovery from Furui detection card. Thanks foxushka! (@iceman1001) - Added `hf topaz dump --ns` - now supports nosave param (@iceman1001) - Changed `hf topaz rdbl` - unified output (@iceman1001) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 765c515e4..fcf898a42 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -251,7 +251,27 @@ static void mf_print_block(uint8_t blockno, uint8_t *d, bool verbose) { if (blockno == 0) { PrintAndLogEx(INFO, "%s| %3d | " _RED_("%s"), secstr, blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); } else if (mfIsSectorTrailer(blockno)) { - PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s"), secstr, blockno, sprint_hex_ascii(d, MFBLOCK_SIZE)); + + char keya[26] = {0}; + hex_to_buffer((uint8_t *)keya, d, MIFARE_KEY_SIZE, sizeof(keya) - 1, 0, 1, true); + + char acl[20] = {0}; + hex_to_buffer((uint8_t *)acl, d + MIFARE_KEY_SIZE, 4, sizeof(acl) - 1, 0, 1, true); + + char keyb[26] = {0}; + hex_to_buffer((uint8_t *)keyb, d + 10, MIFARE_KEY_SIZE, sizeof(keyb) - 1, 0, 1, true); + + char ascii[24] = {0}; + ascii_to_buffer((uint8_t *)ascii, d, MFBLOCK_SIZE, sizeof(ascii) - 1, 1); + + PrintAndLogEx(INFO, "%s| %3d | " _YELLOW_("%s") _MAGENTA_("%s") _YELLOW_("%s") "| " _YELLOW_("%s"), + secstr, + blockno, + keya, + acl, + keyb, + ascii + ); } else { int32_t value = 0; if (verbose && mfc_value(d, &value)) {