diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 65b64272c..c7f225c7d 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3681,7 +3681,7 @@ static int CmdCryptography(const char *Cmd) { if ((type & 0x02) == 0x02) { // If we will calculate a MAC aes_cmac8(iv, key, dati, dato, datilen); - PrintAndLogEx(INFO, "AES CMAC... " _YELLOW_("%s"), sprint_hex_inrow(dato, datilen)); + PrintAndLogEx(INFO, "AES CMAC... " _YELLOW_("%s"), sprint_hex_inrow(dato, 8)); } else { if (keylen == 32) { aes256_encode(iv, key, dati, dato, datilen); diff --git a/include/mifare.h b/include/mifare.h index 9b2d54090..6658a2e38 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -107,6 +107,7 @@ typedef enum ISO14A_COMMAND { ISO14A_USE_CUSTOM_POLLING = (1 << 13), ISO14A_CRYPTO1MODE = (1 << 14), ISO14A_SET_WAIT_US = (1 << 15), + ISO14A_APPEND_CMAC = (1 << 16), } iso14a_command_t; typedef struct { diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index f0584061c..c1889e037 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -355,6 +355,36 @@ typedef struct { uint8_t keys[]; } PACKED mfulc_keys_t; +typedef struct { + bool turn_off_field; + bool use_schann; + uint8_t keyno; + uint8_t key[16]; +} PACKED mfulaes_keys_t; + +typedef struct { + bool use_schann; + uint8_t block_no; + uint8_t num_of_blocks; + uint8_t keytype; + uint8_t keylen; + uint8_t key[16]; +} PACKED mful_readblock_t; + +typedef struct { + uint8_t bytelen; + uint16_t startidx; +} PACKED mful_readblock_resp_t; + +typedef struct { + bool use_schann; + uint8_t block_no; + uint8_t keytype; + uint8_t keylen; + uint8_t key[16]; + uint8_t data[16]; +} PACKED mful_writeblock_t; + typedef struct { uint8_t status; uint8_t CSN[8];