From 12ea3f087ce16c8e56f7ca928eb4974f3576bbd4 Mon Sep 17 00:00:00 2001 From: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> Date: Sun, 19 Apr 2026 22:34:45 +0300 Subject: [PATCH] Bodge: fix mfpreadsector Looks like either I, or someone else, has never thought about encrypted mode enforcement in mfpreadsector. Now during readouts data is decrypted on the fly. Checked on real tag. Signed-off-by: team-orangeBlue <63470411+team-orangeBlue@users.noreply.github.com> --- client/src/mifare/mifare4.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index ea7986441..1faa3a82a 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -21,6 +21,7 @@ #include "commonutil.h" // ARRAYLEN #include "comms.h" // DropField #include "cmdhf14a.h" +#include "cmdhfmfp.h" // mfp_data_crypt #include "ui.h" #include "crypto/libpcrypto.h" @@ -532,6 +533,9 @@ int mfpReadSector(uint8_t sectorNo, uint8_t keyType, uint8_t *key, uint8_t *data DropField(); return 6; } + + // Encrypted mode is always used. Doing an if to check will waste instructions + mfp_data_crypt(&_session, &data[1], &data[1], true); memcpy(&dataout[(n - firstBlockNo) * 16], &data[1], 16);