From 12bf5cc0f6281c6afa65e49fad719cdb19d261fb Mon Sep 17 00:00:00 2001 From: Benjamin DELPY Date: Thu, 30 Apr 2026 22:50:26 +0200 Subject: [PATCH 1/3] Update originality.c to add ICODE 3 in ICODE public key description Signed-off-by: Benjamin DELPY --- client/src/crypto/originality.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/crypto/originality.c b/client/src/crypto/originality.c index b9776363d..2bbd252c9 100644 --- a/client/src/crypto/originality.c +++ b/client/src/crypto/originality.c @@ -131,7 +131,7 @@ const ecdsa_publickey_ng_t manufacturer_public_keys[] = { }, { - PK_15, MBEDTLS_ECP_DP_SECP128R1, 33, "NXP ICODE DNA, ICODE SLIX2", + PK_15, MBEDTLS_ECP_DP_SECP128R1, 33, "NXP ICODE DNA, ICODE 3, ICODE SLIX2", "048878A2A2D3EEC336B4F261A082BD71F9BE11C4E2E896648B32EFA59CEA6E59F0" }, { From c84170328c4fb5105e38b09ae32b2df5efe4ac3a Mon Sep 17 00:00:00 2001 From: Benjamin DELPY Date: Thu, 30 Apr 2026 22:52:16 +0200 Subject: [PATCH 2/3] Update cmdhf15.c to add ICODE DNA & ICODE 3 to UID mapping Signed-off-by: Benjamin DELPY --- client/src/cmdhf15.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 38225bdf3..0597e6899 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -143,6 +143,8 @@ static const productName_t uidmapping[] = { { 0xE004010000000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC SL2 ICS20/ICS21 " AEND "( " _CYAN_("SLI") " )" }, { 0xE004011000000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC SL2 ICS2002/ICS2102 " AEND "( " _CYAN_("SLIX") " )" }, { 0xE004010800000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); IC SL2 ICS2602 " AEND "( " _CYAN_("SLIX2") " )" }, + { 0xE004011800000000LL, 0xFFFFFF1800000000LL, "NXP (Philips); ICODE DNA"}, + { 0xE004012000000000LL, 0xFFFFFF7800000000LL, "NXP (Philips); ICODE 3"}, { 0xE004020000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); IC SL2 ICS53/ICS54 " AEND "( " _CYAN_("SLI-S") " )" }, { 0xE004021000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); ICS5302/ICS5402 " AEND "( " _CYAN_("SLIX-S") " )" }, { 0xE004030000000000LL, 0xFFFFFF1000000000LL, "NXP (Philips); IC SL2 ICS50/ICS51 " AEND "( " _CYAN_("SLI-L") " )" }, From d21e87eafe21450b13ead48d2a4574ae62c1a537 Mon Sep 17 00:00:00 2001 From: Benjamin DELPY Date: Thu, 30 Apr 2026 22:56:38 +0200 Subject: [PATCH 3/3] Update cmdhf15.c tu support ICODE DNA & ICODE 3 in `hf 15 info` command including asking for signature Signed-off-by: Benjamin DELPY --- client/src/cmdhf15.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 0597e6899..8550f7026 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1099,17 +1099,36 @@ static int CmdHF15Info(const char *Cmd) { // Check if SLIX2 and attempt to get NXP System Information PrintAndLogEx(DEBUG, "Byte 6 :: %02x Byte 7 :: %02x Byte 8 :: %02x", d[6], d[7], d[8]); - // SLIX2 uses xxx0 1xxx format on d[6] of UID - uint8_t nxp_version = d[6] & 0x18; - PrintAndLogEx(DEBUG, "NXP Version: %02x", nxp_version); if (d[8] == 0x04) { // NXP + + // from: SL2S6002_SDS + // Bit 37 Bit 36 ICODE Type + // ------------------------- + // 0 0 ICODE SLI + // 1 0 ICODE SLIX + // 0 1 ICODE SLIX2 + // 1 1 ICODE DNA + + // SLIX2 uses xxx0 1xxx format on d[6] of UID + uint8_t nxp_version = d[6] & 0x18; + PrintAndLogEx(DEBUG, "NXP Version: %02x", nxp_version); + + // from: SL2S3103 + // Bit 39 Bit 38 Bit 37 Bit 36 ICODE Type + // -------------------------------------- + // 0 1 0 0 ICODE 3 + // --> it can be mismached with a ICODE SLI, but lets assume Bit 39 & Bit 38 at 0 when ICODE SLI*/DNA... + if (d[7] == 0x01 && nxp_version == 0x08) { PrintAndLogEx(DEBUG, "SLIX2 Detected, getting NXP System Info"); return NxpSysInfo(uid); - } else if (d[7] == 0x01 && nxp_version == 0x18) { // If it is an NTAG 5 - PrintAndLogEx(DEBUG, "NTAG 5 Detected, getting NXP System Info"); + } else if (d[7] == 0x01 && nxp_version == 0x18) { // If it is an NTAG 5 / ICODE DNA + PrintAndLogEx(DEBUG, "NTAG 5 / ICODE DNA Detected, getting NXP System Info"); + return NxpSysInfo(uid); + } else if (d[7] == 0x01 && ((d[6] & 0x78) == 0x20)) { // If it is an NTAG ICODE 3 + PrintAndLogEx(DEBUG, "ICODE 3 Detected, getting NXP System Info"); return NxpSysInfo(uid); } else if ((d[7] == 0x01 || d[7] == 0x02 || d[7] == 0x03)) { // If SLI, SLIX, SLIX-l, or SLIX-S check EAS status PrintAndLogEx(DEBUG, "SLI, SLIX, SLIX-L, or SLIX-S Detected checking EAS status");