From 8b67f6077536b1a633e69e1cc5c67fd04e7344f6 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Wed, 22 Jul 2026 17:12:26 +0300 Subject: [PATCH] Add annotation of secure channel commands for FeliCa --- client/src/cmdhflist.c | 84 ++++++++++++++++++++++++++++++++++++++++++ include/protocols.h | 42 +++++++++++++++++++++ 2 files changed, 126 insertions(+) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 624e6cb18..35c4438d1 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -2594,6 +2594,12 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case FELICA_INTERNAL_AUTH_READ_ACK: snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ ACK"); break; + case FELICA_EXTERNAL_AUTH_WRITE_REQ: + snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE"); + break; + case FELICA_EXTERNAL_AUTH_WRITE_ACK: + snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE ACK"); + break; case FELICA_GETSTATUS_REQ: snprintf(exp, size, "GET STATUS"); break; @@ -2648,12 +2654,90 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case FELICA_UPDATE_RNDID_ACK: snprintf(exp, size, "UPDATE RANDOM ID ACK"); break; + case FELICA_REGISTER_AREA_V2_REQ: + snprintf(exp, size, "REGISTER AREA V2"); + break; + case FELICA_REGISTER_AREA_V2_ACK: + snprintf(exp, size, "REGISTER AREA V2 ACK"); + break; + case FELICA_REGISTER_SERVICE_V2_REQ: + snprintf(exp, size, "REGISTER SERVICE V2"); + break; + case FELICA_REGISTER_SERVICE_V2_ACK: + snprintf(exp, size, "REGISTER SERVICE V2 ACK"); + break; + case FELICA_REGISTER_ISSUE_ID_EX_V2_REQ: + snprintf(exp, size, "REGISTER ISSUE ID EX V2"); + break; + case FELICA_REGISTER_ISSUE_ID_EX_V2_ACK: + snprintf(exp, size, "REGISTER ISSUE ID EX V2 ACK"); + break; + case FELICA_SEPARATE_SYSTEM_V2_REQ: + snprintf(exp, size, "SEPARATE SYSTEM V2"); + break; + case FELICA_SEPARATE_SYSTEM_V2_ACK: + snprintf(exp, size, "SEPARATE SYSTEM V2 ACK"); + break; + case FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ: + snprintf(exp, size, "CHANGE SYSTEM BLOCK V2"); + break; + case FELICA_CHANGE_SYSTEM_BLOCK_V2_ACK: + snprintf(exp, size, "CHANGE SYSTEM BLOCK V2 ACK"); + break; case FELICA_GET_CONTAINER_ID_REQ: snprintf(exp, size, "GET CONTAINER ID"); break; case FELICA_GET_CONTAINER_ID_ACK: snprintf(exp, size, "GET CONTAINER ID ACK"); break; + case FELICA_SET_NODE_PROPERTY_REQ: + snprintf(exp, size, "SET NODE PROPERTY"); + break; + case FELICA_SET_NODE_PROPERTY_ACK: + snprintf(exp, size, "SET NODE PROPERTY ACK"); + break; + case FELICA_REGISTER_ISSUE_ID_REQ: + snprintf(exp, size, "REGISTER ISSUE ID"); + break; + case FELICA_REGISTER_ISSUE_ID_ACK: + snprintf(exp, size, "REGISTER ISSUE ID ACK"); + break; + case FELICA_REGISTER_AREA_REQ: + snprintf(exp, size, "REGISTER AREA"); + break; + case FELICA_REGISTER_AREA_ACK: + snprintf(exp, size, "REGISTER AREA ACK"); + break; + case FELICA_REGISTER_SERVICE_REQ: + snprintf(exp, size, "REGISTER SERVICE"); + break; + case FELICA_REGISTER_SERVICE_ACK: + snprintf(exp, size, "REGISTER SERVICE ACK"); + break; + case FELICA_SEPARATE_SYSTEM_REQ: + snprintf(exp, size, "SEPARATE SYSTEM"); + break; + case FELICA_SEPARATE_SYSTEM_ACK: + snprintf(exp, size, "SEPARATE SYSTEM ACK"); + break; + case FELICA_CHANGE_SYSTEM_BLOCK_REQ: + snprintf(exp, size, "CHANGE SYSTEM BLOCK"); + break; + case FELICA_CHANGE_SYSTEM_BLOCK_ACK: + snprintf(exp, size, "CHANGE SYSTEM BLOCK ACK"); + break; + case FELICA_REGISTER_MANUFACTURE_ID_REQ: + snprintf(exp, size, "REGISTER MANUFACTURE ID"); + break; + case FELICA_REGISTER_MANUFACTURE_ID_ACK: + snprintf(exp, size, "REGISTER MANUFACTURE ID ACK"); + break; + case FELICA_SELF_DIAGNOSIS_REQ: + snprintf(exp, size, "SELF DIAGNOSIS"); + break; + case FELICA_SELF_DIAGNOSIS_ACK: + snprintf(exp, size, "SELF DIAGNOSIS ACK"); + break; case FELICA_ECHO_REQ: snprintf(exp, size, "ECHO"); break; diff --git a/include/protocols.h b/include/protocols.h index d70176434..2e1d8095d 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -961,6 +961,9 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define FELICA_INTERNAL_AUTH_READ_REQ 0x34 #define FELICA_INTERNAL_AUTH_READ_ACK 0x35 +#define FELICA_EXTERNAL_AUTH_WRITE_REQ 0x36 +#define FELICA_EXTERNAL_AUTH_WRITE_ACK 0x37 + #define FELICA_GETSTATUS_REQ 0x38 #define FELICA_GETSTATUS_ACK 0x39 @@ -987,9 +990,48 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define FELICA_UPDATE_RNDID_REQ 0x4C #define FELICA_UPDATE_RNDID_ACK 0x4D +#define FELICA_REGISTER_AREA_V2_REQ 0x52 +#define FELICA_REGISTER_AREA_V2_ACK 0x53 + +#define FELICA_REGISTER_SERVICE_V2_REQ 0x54 +#define FELICA_REGISTER_SERVICE_V2_ACK 0x55 + +#define FELICA_REGISTER_ISSUE_ID_EX_V2_REQ 0x56 +#define FELICA_REGISTER_ISSUE_ID_EX_V2_ACK 0x57 + +#define FELICA_SEPARATE_SYSTEM_V2_REQ 0x58 +#define FELICA_SEPARATE_SYSTEM_V2_ACK 0x59 + +#define FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ 0x5E +#define FELICA_CHANGE_SYSTEM_BLOCK_V2_ACK 0x5F + #define FELICA_GET_CONTAINER_ID_REQ 0x70 #define FELICA_GET_CONTAINER_ID_ACK 0x71 +#define FELICA_SET_NODE_PROPERTY_REQ 0x78 +#define FELICA_SET_NODE_PROPERTY_ACK 0x79 + +#define FELICA_REGISTER_ISSUE_ID_REQ 0x80 +#define FELICA_REGISTER_ISSUE_ID_ACK 0x81 + +#define FELICA_REGISTER_AREA_REQ 0x82 +#define FELICA_REGISTER_AREA_ACK 0x83 + +#define FELICA_REGISTER_SERVICE_REQ 0x84 +#define FELICA_REGISTER_SERVICE_ACK 0x85 + +#define FELICA_SEPARATE_SYSTEM_REQ 0x88 +#define FELICA_SEPARATE_SYSTEM_ACK 0x89 + +#define FELICA_CHANGE_SYSTEM_BLOCK_REQ 0x8E +#define FELICA_CHANGE_SYSTEM_BLOCK_ACK 0x8F + +#define FELICA_REGISTER_MANUFACTURE_ID_REQ 0x90 +#define FELICA_REGISTER_MANUFACTURE_ID_ACK 0x91 + +#define FELICA_SELF_DIAGNOSIS_REQ 0x92 +#define FELICA_SELF_DIAGNOSIS_ACK 0x93 + // Echo is a two-byte command (F000). #define FELICA_ECHO_REQ 0xF000