From 866f4b6313af854b892921807744efc927005185 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 10 Sep 2020 20:40:12 +0200 Subject: [PATCH] hf 14a info - ntag21x identification --- armsrc/mifarecmd.c | 14 +++++++++++++- client/src/mifare/mifarehost.c | 3 +++ include/protocols.h | 11 ++++++----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index c1f3299b9..cbba1f9c6 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2242,6 +2242,7 @@ void MifareCIdent(void) { uint8_t rec[1] = {0x00}; uint8_t recpar[1] = {0x00}; uint8_t rats[4] = { ISO14443A_CMD_RATS, 0x80, 0x31, 0x73 }; + uint8_t rdbl[4] = { ISO14443A_CMD_READBLOCK, 0xF0, 0x8D, 0x5f}; uint8_t *par = BigBuf_malloc(MAX_PARITY_SIZE); uint8_t *buf = BigBuf_malloc(PM3_CMD_DATA_SIZE); uint8_t *uid = BigBuf_malloc(10); @@ -2319,7 +2320,18 @@ void MifareCIdent(void) { goto OUT; } - + // magic ntag test + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + SpinDelay(40); + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + res = iso14443a_select_card(uid, NULL, &cuid, true, 0, true); + if (res == 2) { + ReaderTransmit(rdbl, sizeof(rdbl), NULL); + res = ReaderReceive(buf, par); + if (res == 18) { + isGen = MAGIC_NTAG21X; + } + } }; OUT: diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 8a567fb26..821eaaf85 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1187,6 +1187,9 @@ int detect_classic_magic(void) { case MAGIC_SUPER: PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("super card")); break; + case MAGIC_NTAG21X: + PrintAndLogEx(SUCCESS, "Magic capabilities : " _GREEN_("NTAG21x")); + break; default: break; } diff --git a/include/protocols.h b/include/protocols.h index 324d4b2fc..e043b6418 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -215,11 +215,12 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MAGIC_SINGLE (MAGIC_WUPC | MAGIC_HALT | MAGIC_INIT | MAGIC_OFF) //0x1E // by CMD_HF_MIFARE_CIDENT -#define MAGIC_GEN_1A 1 -#define MAGIC_GEN_1B 2 -#define MAGIC_GEN_2 4 -#define MAGIC_GEN_UNFUSED 5 -#define MAGIC_SUPER 6 +#define MAGIC_GEN_1A 1 +#define MAGIC_GEN_1B 2 +#define MAGIC_GEN_2 4 +#define MAGIC_GEN_UNFUSED 5 +#define MAGIC_SUPER 6 +#define MAGIC_NTAG21X 7 /** 06 00 = INITIATE 0E xx = SELECT ID (xx = Chip-ID)