mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-07-29 09:49:57 +00:00
Normalize FeliCa command constant names
This commit is contained in:
+10
-10
@@ -252,7 +252,7 @@ static uint8_t felica_select_card(felica_card_select_t *card) {
|
||||
// b0 = fc/64 (212kbps)
|
||||
// 0x00 = timeslot
|
||||
// 0x09 0x21 = crc
|
||||
static uint8_t poll[10] = {0xb2, 0x4d, 0x06, FELICA_POLL_REQ, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x21};
|
||||
static uint8_t poll[10] = {0xb2, 0x4d, 0x06, FELICA_POLLING_REQ, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x21};
|
||||
|
||||
|
||||
// We try 10 times, or if answer was received.
|
||||
@@ -264,7 +264,7 @@ static uint8_t felica_select_card(felica_card_select_t *card) {
|
||||
TransmitFor18092_AsReader(poll, sizeof(poll), NULL, 1, 0);
|
||||
|
||||
// polling card, break if success
|
||||
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_POLL_ACK) {
|
||||
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_POLLING_RES) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ static uint8_t felica_select_card(felica_card_select_t *card) {
|
||||
}
|
||||
|
||||
// 2. wrong answer
|
||||
if (FelicaFrame.framebytes[3] != FELICA_POLL_ACK) {
|
||||
if (FelicaFrame.framebytes[3] != FELICA_POLLING_RES) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@@ -345,7 +345,7 @@ static void BuildFliteRdblk(const uint8_t *idm, uint8_t blocknum, const uint16_t
|
||||
|
||||
c++; // set length later
|
||||
|
||||
frameSpace[c++] = FELICA_RDBLK_REQ; // command number
|
||||
frameSpace[c++] = FELICA_READ_WITHOUT_ENCRYPTION_REQ; // command number
|
||||
|
||||
// card IDm, from poll
|
||||
frameSpace[c++] = idm[0];
|
||||
@@ -826,9 +826,9 @@ void felica_sniff(uint32_t samplesToSkip, uint32_t triggersToSkip) {
|
||||
void felica_sim_lite(const uint8_t *uid) {
|
||||
|
||||
// prepare our 3 responses...
|
||||
uint8_t resp_poll0[R_POLL0_LEN] = { 0xb2, 0x4d, 0x12, FELICA_POLL_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0xb3, 0x7f};
|
||||
uint8_t resp_poll1[R_POLL1_LEN] = { 0xb2, 0x4d, 0x14, FELICA_POLL_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0x88, 0xb4, 0xb3, 0x7f};
|
||||
uint8_t resp_readblk[R_READBLK_LEN] = { 0xb2, 0x4d, 0x1d, FELICA_RDBLK_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x04, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0xcb, 0x6e};
|
||||
uint8_t resp_poll0[R_POLL0_LEN] = { 0xb2, 0x4d, 0x12, FELICA_POLLING_RES, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0xb3, 0x7f};
|
||||
uint8_t resp_poll1[R_POLL1_LEN] = { 0xb2, 0x4d, 0x14, FELICA_POLLING_RES, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0x88, 0xb4, 0xb3, 0x7f};
|
||||
uint8_t resp_readblk[R_READBLK_LEN] = { 0xb2, 0x4d, 0x1d, FELICA_READ_WITHOUT_ENCRYPTION_RES, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x04, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0xcb, 0x6e};
|
||||
|
||||
// NFC tag 3/ ISo technically. Many overlapping standards
|
||||
DbpString("Felica Lite-S simulation start");
|
||||
@@ -965,7 +965,7 @@ void felica_sim_lite(const uint8_t *uid) {
|
||||
|
||||
void felica_dump_lite_s(void) {
|
||||
uint8_t ndef[8];
|
||||
uint8_t poll[10] = { 0xb2, 0x4d, 0x06, FELICA_POLL_REQ, 0xff, 0xff, 0x00, 0x00, 0x09, 0x21};
|
||||
uint8_t poll[10] = { 0xb2, 0x4d, 0x06, FELICA_POLLING_REQ, 0xff, 0xff, 0x00, 0x00, 0x09, 0x21};
|
||||
uint16_t liteblks[28] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x90, 0x91, 0x92, 0xa0};
|
||||
|
||||
// setup device.
|
||||
@@ -983,7 +983,7 @@ void felica_dump_lite_s(void) {
|
||||
//TransmitFor18092_AsReader(poll, 10, GetCountSspClk()+512, 1, 0);
|
||||
TransmitFor18092_AsReader(poll, 10, NULL, 1, 0);
|
||||
|
||||
if (WaitForFelicaReply(512) && FelicaFrame.framebytes[3] == FELICA_POLL_ACK) {
|
||||
if (WaitForFelicaReply(512) && FelicaFrame.framebytes[3] == FELICA_POLLING_RES) {
|
||||
// copy 8bytes to ndef.
|
||||
memcpy(ndef, FelicaFrame.framebytes + 4, 8);
|
||||
// for (c=0; c < 8; c++)
|
||||
@@ -997,7 +997,7 @@ void felica_dump_lite_s(void) {
|
||||
|
||||
TransmitFor18092_AsReader(frameSpace, frameSpace[2] + 4, NULL, 1, 0);
|
||||
// read block
|
||||
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_RDBLK_ACK) {
|
||||
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_READ_WITHOUT_ENCRYPTION_RES) {
|
||||
|
||||
dest[cnt++] = liteblks[blknum];
|
||||
|
||||
|
||||
+23
-23
@@ -266,7 +266,7 @@ static void felica_sim_append_idm(uint8_t *resp, uint16_t *pos, const felica_sim
|
||||
}
|
||||
|
||||
static uint16_t felica_sim_rwe_error_response(uint8_t *resp, const felica_sim_system_record_t *system, uint8_t status1, uint8_t status2) {
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_RDBLK_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_READ_WITHOUT_ENCRYPTION_RES);
|
||||
felica_sim_append_idm(resp, &pos, system);
|
||||
resp[pos++] = status1;
|
||||
resp[pos++] = status2;
|
||||
@@ -383,7 +383,7 @@ static uint16_t felica_sim_process_polling(const felica_sim_model_header_t *hdr,
|
||||
(512 + timeslot * 256) + 1;
|
||||
timeslot++;
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_POLL_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_POLLING_RES);
|
||||
memcpy(resp + pos, selected->idm, sizeof(selected->idm));
|
||||
pos += sizeof(selected->idm);
|
||||
memcpy(resp + pos, selected->pmm, sizeof(selected->pmm));
|
||||
@@ -407,7 +407,7 @@ static uint16_t felica_sim_process_request_system_code(const felica_sim_model_he
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQSYSCODE_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SYSTEM_CODE_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = (uint8_t)hdr->system_count;
|
||||
const felica_sim_system_record_t *systems = felica_sim_systems(hdr, model);
|
||||
@@ -431,7 +431,7 @@ static uint16_t felica_sim_process_get_container_id(const felica_sim_model_heade
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ID_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ID_RES);
|
||||
memcpy(resp + pos, system->idm, sizeof(system->idm));
|
||||
pos += sizeof(system->idm);
|
||||
return felica_sim_response_finish(resp, pos);
|
||||
@@ -443,7 +443,7 @@ static uint16_t felica_sim_process_request_response(const uint8_t *req, uint16_t
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQRESP_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_RESPONSE_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = 0x00;
|
||||
return felica_sim_response_finish(resp, pos);
|
||||
@@ -459,7 +459,7 @@ static uint16_t felica_sim_process_reset_mode(const uint8_t *req, uint16_t req_l
|
||||
}
|
||||
|
||||
// If authentication handling is added, reset the tracked card mode to Mode0 here.
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_RESET_MODE_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_RESET_MODE_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = 0x00;
|
||||
resp[pos++] = 0x00;
|
||||
@@ -478,7 +478,7 @@ static uint16_t felica_sim_process_request_specification_version(const felica_si
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SPEC_VERSION_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SPECIFICATION_VERSION_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = 0x00;
|
||||
resp[pos++] = 0x00;
|
||||
@@ -497,7 +497,7 @@ static uint16_t felica_sim_process_get_product_information(const felica_sim_mode
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_GETPLATFORMINFO_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_PRODUCT_INFORMATION_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = 0x00;
|
||||
resp[pos++] = 0x00;
|
||||
@@ -519,7 +519,7 @@ static uint16_t felica_sim_process_get_container_issue_information(const felica_
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ISSUE_INFO_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
memcpy(resp + pos, container_issue_information, hdr->container_issue_information_len);
|
||||
pos += hdr->container_issue_information_len;
|
||||
@@ -539,7 +539,7 @@ static uint16_t felica_sim_process_request_service(const felica_sim_model_header
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQSRV_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SERVICE_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = node_count;
|
||||
for (uint8_t i = 0; i < node_count; i++) {
|
||||
@@ -576,7 +576,7 @@ static uint16_t felica_sim_process_request_service_v2(const felica_sim_model_hea
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQSRV2_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SERVICE_V2_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = 0x00;
|
||||
resp[pos++] = 0x00;
|
||||
@@ -615,7 +615,7 @@ static uint16_t felica_sim_process_search_service_code(const felica_sim_model_he
|
||||
}
|
||||
|
||||
const uint16_t iterator = req[12] | ((uint16_t)req[13] << 8);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_SRCHSYSCODE_ACK);
|
||||
uint16_t pos = felica_sim_response_begin(resp, FELICA_SEARCH_SERVICE_CODE_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
|
||||
const felica_sim_node_record_t *nodes = felica_sim_nodes(hdr, model);
|
||||
@@ -727,7 +727,7 @@ static uint16_t felica_sim_process_read_without_encryption(const felica_sim_mode
|
||||
return 0;
|
||||
}
|
||||
|
||||
pos = felica_sim_response_begin(resp, FELICA_RDBLK_ACK);
|
||||
pos = felica_sim_response_begin(resp, FELICA_READ_WITHOUT_ENCRYPTION_RES);
|
||||
felica_sim_append_idm(resp, &pos, active_system);
|
||||
resp[pos++] = 0x00;
|
||||
resp[pos++] = 0x00;
|
||||
@@ -767,31 +767,31 @@ static uint16_t felica_sim_process_request(const felica_sim_model_header_t *hdr,
|
||||
}
|
||||
|
||||
switch (req_command) {
|
||||
case FELICA_POLL_REQ:
|
||||
case FELICA_POLLING_REQ:
|
||||
return felica_sim_process_polling(hdr, model, req, req_len, active_system_index, resp);
|
||||
case FELICA_ECHO_REQ:
|
||||
return felica_sim_process_echo(req, req_len, resp);
|
||||
case FELICA_GET_CONTAINER_ID_REQ:
|
||||
return felica_sim_process_get_container_id(hdr, model, req, req_len, resp);
|
||||
case FELICA_REQSYSCODE_REQ:
|
||||
case FELICA_REQUEST_SYSTEM_CODE_REQ:
|
||||
return felica_sim_process_request_system_code(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_REQRESP_REQ:
|
||||
case FELICA_REQUEST_RESPONSE_REQ:
|
||||
return felica_sim_process_request_response(req, req_len, active_system, resp);
|
||||
case FELICA_RESET_MODE_REQ:
|
||||
return felica_sim_process_reset_mode(req, req_len, active_system, resp);
|
||||
case FELICA_REQUEST_SPEC_VERSION_REQ:
|
||||
case FELICA_REQUEST_SPECIFICATION_VERSION_REQ:
|
||||
return felica_sim_process_request_specification_version(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_GETPLATFORMINFO_REQ:
|
||||
case FELICA_REQUEST_PRODUCT_INFORMATION_REQ:
|
||||
return felica_sim_process_get_product_information(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_GET_CONTAINER_ISSUE_INFO_REQ:
|
||||
case FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ:
|
||||
return felica_sim_process_get_container_issue_information(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_REQSRV_REQ:
|
||||
case FELICA_REQUEST_SERVICE_REQ:
|
||||
return felica_sim_process_request_service(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_REQSRV2_REQ:
|
||||
case FELICA_REQUEST_SERVICE_V2_REQ:
|
||||
return felica_sim_process_request_service_v2(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_SRCHSYSCODE_REQ:
|
||||
case FELICA_SEARCH_SERVICE_CODE_REQ:
|
||||
return felica_sim_process_search_service_code(hdr, model, req, req_len, active_system, resp);
|
||||
case FELICA_RDBLK_REQ:
|
||||
case FELICA_READ_WITHOUT_ENCRYPTION_REQ:
|
||||
return felica_sim_process_read_without_encryption(hdr, model, req, req_len, active_system, resp);
|
||||
default:
|
||||
return 0;
|
||||
|
||||
+47
-47
@@ -62,7 +62,7 @@
|
||||
#define FELICA_OPTIONAL_CMD_TIMEOUT_MS 250U
|
||||
#define FELICA_OPTIONAL_CMD_RETRIES 3U
|
||||
// Per FeliCa spec, Polling max response at 16 timeslots is ~25ms; keep extra margin.
|
||||
#define FELICA_POLL_TIMEOUT_MS 100U
|
||||
#define FELICA_POLLING_TIMEOUT_MS 100U
|
||||
#define FELICA_SEAC_POLL_TIMEOUT_MS 200U
|
||||
#define FELICA_SEAC_POLL_RETRY_COUNT 5U
|
||||
#define FELICA_SEAC_POLL_FRAME_LEN 5U
|
||||
@@ -76,8 +76,8 @@
|
||||
#define FELICA_SYSTEM_CODE_FELICA_NETWORKS_COMMON_AREA 0xFE00U
|
||||
#define FELICA_DUMP_DEFAULT_NODE_CAPACITY 128U
|
||||
#define FELICA_DUMP_COMMON_AREA_NODE_CAPACITY 256U
|
||||
#define FELICA_POLL_REQUEST_NO_DATA 0x00U
|
||||
#define FELICA_POLL_REQUEST_SYSTEM_CODE 0x01U
|
||||
#define FELICA_POLLING_REQUEST_NO_DATA 0x00U
|
||||
#define FELICA_POLLING_REQUEST_SYSTEM_CODE 0x01U
|
||||
#define FELICA_SYSTEM_LIST_JSON "felica/felica_system_code_list"
|
||||
#define FELICA_IC_CODE_LIST_JSON "felica/felica_ic_code_list"
|
||||
|
||||
@@ -1059,7 +1059,7 @@ static int felica_read_service_block_for_node(uint8_t flags, const uint8_t *idm,
|
||||
const uint16_t datalen = (uint16_t)(1 + 1 + 8 + 1 + 2 + 1 + block_list_element_len);
|
||||
uint8_t data[1 + 1 + 8 + 1 + 2 + 1 + FELICA_SYSTEM_SERVICE_BLOCK_LIST_ELEMENT_MAX_LEN] = {0};
|
||||
data[0] = (uint8_t)datalen;
|
||||
data[1] = FELICA_RDBLK_REQ;
|
||||
data[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
|
||||
memcpy(data + 2, idm, 8);
|
||||
data[10] = 0x01;
|
||||
data[11] = node_code_le & 0xFF;
|
||||
@@ -1250,7 +1250,7 @@ static int felica_request_service_key_versions(uint8_t flags, const uint8_t *idm
|
||||
|
||||
uint8_t data[1 + 1 + 8 + 1 + (FELICA_REQUEST_SERVICE_DISCOVERY_BATCH_SIZE * 2)] = {0};
|
||||
uint16_t datalen = 0;
|
||||
int ret = felica_build_request_service_payload(FELICA_REQSRV_REQ, idm, node_codes_le, node_count,
|
||||
int ret = felica_build_request_service_payload(FELICA_REQUEST_SERVICE_REQ, idm, node_codes_le, node_count,
|
||||
data, sizeof(data), &datalen);
|
||||
if (ret != PM3_SUCCESS) {
|
||||
return ret;
|
||||
@@ -1258,7 +1258,7 @@ static int felica_request_service_key_versions(uint8_t flags, const uint8_t *idm
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, false,
|
||||
FELICA_REQSRV_ACK,
|
||||
FELICA_REQUEST_SERVICE_RES,
|
||||
FELICA_OPTIONAL_CMD_TIMEOUT_MS, retries,
|
||||
0, false, &resp, "request service") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -1305,7 +1305,7 @@ static int felica_request_service_v2_key_versions(uint8_t flags, const uint8_t *
|
||||
|
||||
uint8_t data[1 + 1 + 8 + 1 + (FELICA_REQUEST_SERVICE_DISCOVERY_BATCH_SIZE * 2)] = {0};
|
||||
uint16_t datalen = 0;
|
||||
int ret = felica_build_request_service_payload(FELICA_REQSRV2_REQ, idm, node_codes_le, node_count,
|
||||
int ret = felica_build_request_service_payload(FELICA_REQUEST_SERVICE_V2_REQ, idm, node_codes_le, node_count,
|
||||
data, sizeof(data), &datalen);
|
||||
if (ret != PM3_SUCCESS) {
|
||||
return ret;
|
||||
@@ -1313,7 +1313,7 @@ static int felica_request_service_v2_key_versions(uint8_t flags, const uint8_t *
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, false,
|
||||
FELICA_REQSRV2_ACK,
|
||||
FELICA_REQUEST_SERVICE_V2_RES,
|
||||
FELICA_OPTIONAL_CMD_TIMEOUT_MS, retries,
|
||||
0, false, &resp, "request service v2") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -1618,7 +1618,7 @@ static int send_request_system_code(uint8_t flags, uint16_t datalen, uint8_t *da
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, verbose,
|
||||
FELICA_REQSYSCODE_ACK,
|
||||
FELICA_REQUEST_SYSTEM_CODE_RES,
|
||||
timeout_ms, retries,
|
||||
0, logging, &resp, "request system code") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -1722,14 +1722,14 @@ static int send_polling(uint8_t flags, uint16_t system_code, uint8_t request_cod
|
||||
|
||||
uint8_t polling_request[6] = {0};
|
||||
polling_request[0] = sizeof(polling_request);
|
||||
polling_request[1] = FELICA_POLL_REQ;
|
||||
polling_request[1] = FELICA_POLLING_REQ;
|
||||
felica_system_code_to_bytes(system_code, polling_request + 2);
|
||||
polling_request[4] = request_code;
|
||||
polling_request[5] = 0x00; // one target at a time
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, sizeof(polling_request), polling_request, false,
|
||||
FELICA_POLL_ACK,
|
||||
FELICA_POLLING_RES,
|
||||
timeout_ms, retries,
|
||||
0, logging, &resp, "polling") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -1750,7 +1750,7 @@ static int send_polling(uint8_t flags, uint16_t system_code, uint8_t request_cod
|
||||
}
|
||||
|
||||
if (returned_system_code) {
|
||||
if (request_code == FELICA_POLL_REQUEST_SYSTEM_CODE) {
|
||||
if (request_code == FELICA_POLLING_REQUEST_SYSTEM_CODE) {
|
||||
if (resp.length < (poll_response_min_len + 2U)) {
|
||||
return PM3_ESOFT;
|
||||
}
|
||||
@@ -1776,7 +1776,7 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
|
||||
felica_request_system_code_request_t request_system_code_request;
|
||||
memset(&request_system_code_request, 0, sizeof(request_system_code_request));
|
||||
request_system_code_request.length[0] = sizeof(request_system_code_request);
|
||||
request_system_code_request.command_code[0] = FELICA_REQSYSCODE_REQ;
|
||||
request_system_code_request.command_code[0] = FELICA_REQUEST_SYSTEM_CODE_REQ;
|
||||
memcpy(request_system_code_request.IDm, primary_idm, sizeof(request_system_code_request.IDm));
|
||||
|
||||
for (uint32_t attempt = 0; attempt < FELICA_REQUEST_SYSTEM_CODE_ATTEMPTS; attempt++) {
|
||||
@@ -1804,8 +1804,8 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
|
||||
uint16_t primary_system_code = 0;
|
||||
uint8_t primary_idm_polled[8] = {0};
|
||||
uint8_t primary_pmm_polled[8] = {0};
|
||||
if (send_polling(flags, FELICA_SYSTEM_CODE_WILDCARD, FELICA_POLL_REQUEST_SYSTEM_CODE,
|
||||
FELICA_POLL_TIMEOUT_MS, polling_retries, false,
|
||||
if (send_polling(flags, FELICA_SYSTEM_CODE_WILDCARD, FELICA_POLLING_REQUEST_SYSTEM_CODE,
|
||||
FELICA_POLLING_TIMEOUT_MS, polling_retries, false,
|
||||
primary_idm_polled, primary_pmm_polled, &primary_system_code) == PM3_SUCCESS) {
|
||||
felica_add_unique_discovered_system(discovered_systems->systems, &discovered_systems->count,
|
||||
primary_system_code, primary_idm_polled, primary_pmm_polled);
|
||||
@@ -1815,8 +1815,8 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
|
||||
uint8_t probed_idm[8] = {0};
|
||||
uint8_t probed_pmm[8] = {0};
|
||||
const uint16_t system_code = FELICA_MANUAL_SYSTEM_PROBE_TARGETS[i].system_code;
|
||||
if (send_polling(flags, system_code, FELICA_POLL_REQUEST_NO_DATA,
|
||||
FELICA_POLL_TIMEOUT_MS, polling_retries, false,
|
||||
if (send_polling(flags, system_code, FELICA_POLLING_REQUEST_NO_DATA,
|
||||
FELICA_POLLING_TIMEOUT_MS, polling_retries, false,
|
||||
probed_idm, probed_pmm, NULL) != PM3_SUCCESS) {
|
||||
continue;
|
||||
}
|
||||
@@ -1834,8 +1834,8 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
|
||||
uint8_t resolved_pmm[8] = {0};
|
||||
if (send_polling(flags,
|
||||
discovered_systems->systems[i].system_code,
|
||||
FELICA_POLL_REQUEST_NO_DATA,
|
||||
FELICA_POLL_TIMEOUT_MS,
|
||||
FELICA_POLLING_REQUEST_NO_DATA,
|
||||
FELICA_POLLING_TIMEOUT_MS,
|
||||
polling_retries,
|
||||
false,
|
||||
resolved_idm, resolved_pmm, NULL) != PM3_SUCCESS) {
|
||||
@@ -1987,8 +1987,8 @@ static bool get_seac_response_data(const PacketResponseNG *resp, const uint8_t *
|
||||
|
||||
static int info_seac(void) {
|
||||
static const uint8_t seac_poll_frames[][FELICA_SEAC_POLL_FRAME_LEN] = {
|
||||
// {0x05, FELICA_POLL_REQ, 0x01, 0x01, 0x0F},
|
||||
{0x05, FELICA_POLL_REQ, 0x01, 0x01, 0x01},
|
||||
// {0x05, FELICA_POLLING_REQ, 0x01, 0x01, 0x0F},
|
||||
{0x05, FELICA_POLLING_REQ, 0x01, 0x01, 0x01},
|
||||
};
|
||||
const uint8_t seac_flags = FELICA_CONNECT | FELICA_CLEARTRACE | FELICA_RAW | FELICA_APPEND_CRC | FELICA_NO_SELECT;
|
||||
|
||||
@@ -2105,7 +2105,7 @@ static int send_get_container_id(uint8_t flags, uint16_t datalen, uint8_t *data,
|
||||
(void)verbose;
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, false,
|
||||
FELICA_GET_CONTAINER_ID_ACK,
|
||||
FELICA_GET_CONTAINER_ID_RES,
|
||||
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
|
||||
0, false, &resp, "get container id") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -2131,7 +2131,7 @@ static int send_get_container_property(uint8_t flags, uint16_t datalen, uint8_t
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, false,
|
||||
FELICA_GET_CONTAINER_PROPERTY_ACK,
|
||||
FELICA_GET_CONTAINER_PROPERTY_RES,
|
||||
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
|
||||
0, false, &resp, "get container property") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -2171,7 +2171,7 @@ static int send_get_container_issue_information(uint8_t flags, uint16_t datalen,
|
||||
(void)verbose;
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, false,
|
||||
FELICA_GET_CONTAINER_ISSUE_INFO_ACK,
|
||||
FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES,
|
||||
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
|
||||
0, false, &resp, "get container issue info") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -2197,7 +2197,7 @@ static int send_get_platform_information(uint8_t flags, uint16_t datalen, uint8_
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, false,
|
||||
FELICA_GETPLATFORMINFO_ACK,
|
||||
FELICA_REQUEST_PRODUCT_INFORMATION_RES,
|
||||
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
|
||||
0, false, &resp, "get platform info") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -2249,7 +2249,7 @@ static int send_request_specification_version(uint8_t flags, uint16_t datalen, u
|
||||
|
||||
PacketResponseNG resp;
|
||||
if (send_felica_payload_with_retries(flags, datalen, data, verbose,
|
||||
FELICA_REQUEST_SPEC_VERSION_ACK,
|
||||
FELICA_REQUEST_SPECIFICATION_VERSION_RES,
|
||||
timeout_ms, retries,
|
||||
0, logging, &resp, "request specification version") != PM3_SUCCESS) {
|
||||
return PM3_ERFTRANS;
|
||||
@@ -2370,7 +2370,7 @@ static int info_felica(bool verbose) {
|
||||
felica_get_platform_info_request_t platform_info_request;
|
||||
memset(&platform_info_request, 0, sizeof(platform_info_request));
|
||||
platform_info_request.length[0] = sizeof(platform_info_request);
|
||||
platform_info_request.command_code[0] = FELICA_GETPLATFORMINFO_REQ;
|
||||
platform_info_request.command_code[0] = FELICA_REQUEST_PRODUCT_INFORMATION_REQ;
|
||||
memcpy(platform_info_request.IDm, card.IDm, sizeof(platform_info_request.IDm));
|
||||
|
||||
felica_status_flags_t platform_status_flags;
|
||||
@@ -2388,7 +2388,7 @@ static int info_felica(bool verbose) {
|
||||
felica_request_specification_version_request_t request_specification_version_request;
|
||||
memset(&request_specification_version_request, 0, sizeof(request_specification_version_request));
|
||||
request_specification_version_request.length[0] = sizeof(request_specification_version_request);
|
||||
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPEC_VERSION_REQ;
|
||||
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPECIFICATION_VERSION_REQ;
|
||||
memcpy(request_specification_version_request.IDm, card.IDm, sizeof(request_specification_version_request.IDm));
|
||||
|
||||
felica_request_specification_version_info_t specification_version_info;
|
||||
@@ -2416,7 +2416,7 @@ static int info_felica(bool verbose) {
|
||||
felica_get_container_issue_info_request_t container_issue_info_request;
|
||||
memset(&container_issue_info_request, 0, sizeof(container_issue_info_request));
|
||||
container_issue_info_request.length[0] = sizeof(container_issue_info_request);
|
||||
container_issue_info_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFO_REQ;
|
||||
container_issue_info_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ;
|
||||
memcpy(container_issue_info_request.IDm, card.IDm, sizeof(container_issue_info_request.IDm));
|
||||
|
||||
felica_get_container_issue_info_response_t container_issue_info_response;
|
||||
@@ -2854,7 +2854,7 @@ static int felica_presence_check_idm(const uint8_t *idm) {
|
||||
|
||||
uint8_t data[16] = {0};
|
||||
data[0] = sizeof(data);
|
||||
data[1] = FELICA_RDBLK_REQ;
|
||||
data[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
|
||||
memcpy(data + 2, idm, 8);
|
||||
data[10] = 0x01;
|
||||
data[11] = FELICA_PRESENCE_SERVICE_CODE_LE & 0xFF;
|
||||
@@ -2866,7 +2866,7 @@ static int felica_presence_check_idm(const uint8_t *idm) {
|
||||
PacketResponseNG resp;
|
||||
const uint8_t flags = FELICA_CONNECT | FELICA_CLEARTRACE | FELICA_NO_SELECT | FELICA_APPEND_CRC | FELICA_RAW;
|
||||
const int ret = send_felica_payload_with_retries(flags, sizeof(data), data, false,
|
||||
FELICA_RDBLK_ACK,
|
||||
FELICA_READ_WITHOUT_ENCRYPTION_RES,
|
||||
FELICA_DEFAULT_TIMEOUT_MS, FELICA_TARGET_PRESENCE_ATTEMPTS - 1U,
|
||||
0, false,
|
||||
&resp, "presence check");
|
||||
@@ -2962,7 +2962,7 @@ static int send_request_code_list(uint8_t flags, uint16_t datalen, uint8_t *data
|
||||
uint32_t timeout_ms, uint32_t retries, uint32_t backoff_ms,
|
||||
bool logging, PacketResponseNG *resp) {
|
||||
return send_felica_payload_with_retries(flags, datalen, data, verbose,
|
||||
FELICA_GET_NODE_LIST_ACK,
|
||||
FELICA_REQUEST_CODE_LIST_RES,
|
||||
timeout_ms, retries, backoff_ms,
|
||||
logging, resp, "request code list");
|
||||
}
|
||||
@@ -3116,7 +3116,7 @@ static bool felica_discover_nodes_with_request_code_list(uint8_t *flags,
|
||||
|
||||
uint8_t data[14] = {0};
|
||||
data[0] = sizeof(data);
|
||||
data[1] = FELICA_GET_NODE_LIST_REQ;
|
||||
data[1] = FELICA_REQUEST_CODE_LIST_REQ;
|
||||
memcpy(data + 2, idm, 8);
|
||||
data[10] = 0x00;
|
||||
data[11] = 0x00;
|
||||
@@ -3253,7 +3253,7 @@ static bool felica_discover_nodes_with_search_service_code(uint8_t *flags,
|
||||
|
||||
uint8_t data[12] = {0};
|
||||
data[0] = sizeof(data);
|
||||
data[1] = FELICA_SRCHSYSCODE_REQ;
|
||||
data[1] = FELICA_SEARCH_SERVICE_CODE_REQ;
|
||||
memcpy(data + 2, idm, 8);
|
||||
|
||||
bool supported = false;
|
||||
@@ -3329,7 +3329,7 @@ static bool felica_request_service_send_probe_batch(uint8_t *flags,
|
||||
|
||||
uint8_t data[1 + 1 + 8 + 1 + (FELICA_REQUEST_SERVICE_DISCOVERY_BATCH_SIZE * 2)] = {0};
|
||||
uint16_t datalen = 0;
|
||||
if (felica_build_request_service_payload(FELICA_REQSRV_REQ, idm, node_codes_le, node_count,
|
||||
if (felica_build_request_service_payload(FELICA_REQUEST_SERVICE_REQ, idm, node_codes_le, node_count,
|
||||
data, sizeof(data), &datalen) != PM3_SUCCESS) {
|
||||
return false;
|
||||
}
|
||||
@@ -3338,7 +3338,7 @@ static bool felica_request_service_send_probe_batch(uint8_t *flags,
|
||||
const bool logging = (supported != NULL) && (*supported);
|
||||
const uint32_t backoff_ms = logging ? FELICA_DISCOVERY_RETRY_BACKOFF_MS : 0;
|
||||
if (send_felica_payload_with_retries(*flags, datalen, data, false,
|
||||
FELICA_REQSRV_ACK,
|
||||
FELICA_REQUEST_SERVICE_RES,
|
||||
FELICA_DEFAULT_TIMEOUT_MS, retry_count,
|
||||
backoff_ms, logging, &resp, "request service") != PM3_SUCCESS) {
|
||||
return false;
|
||||
@@ -3476,7 +3476,7 @@ static bool felica_discover_nodes_with_read_without_encryption_ex(uint8_t *flags
|
||||
int *stop_status) {
|
||||
uint8_t data[16] = {0};
|
||||
data[0] = sizeof(data);
|
||||
data[1] = FELICA_RDBLK_REQ;
|
||||
data[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
|
||||
memcpy(data + 2, idm, 8);
|
||||
data[10] = 0x01;
|
||||
data[13] = 0x01;
|
||||
@@ -4225,7 +4225,7 @@ static void felica_dump_collect_metadata(const uint8_t *idm, felica_dump_metadat
|
||||
felica_request_specification_version_request_t spec_request;
|
||||
memset(&spec_request, 0, sizeof(spec_request));
|
||||
spec_request.length[0] = sizeof(spec_request);
|
||||
spec_request.command_code[0] = FELICA_REQUEST_SPEC_VERSION_REQ;
|
||||
spec_request.command_code[0] = FELICA_REQUEST_SPECIFICATION_VERSION_REQ;
|
||||
memcpy(spec_request.IDm, idm, sizeof(spec_request.IDm));
|
||||
|
||||
felica_request_specification_version_info_t spec_info;
|
||||
@@ -4243,7 +4243,7 @@ static void felica_dump_collect_metadata(const uint8_t *idm, felica_dump_metadat
|
||||
felica_get_platform_info_request_t product_request;
|
||||
memset(&product_request, 0, sizeof(product_request));
|
||||
product_request.length[0] = sizeof(product_request);
|
||||
product_request.command_code[0] = FELICA_GETPLATFORMINFO_REQ;
|
||||
product_request.command_code[0] = FELICA_REQUEST_PRODUCT_INFORMATION_REQ;
|
||||
memcpy(product_request.IDm, idm, sizeof(product_request.IDm));
|
||||
|
||||
felica_status_flags_t product_status_flags;
|
||||
@@ -4260,7 +4260,7 @@ static void felica_dump_collect_metadata(const uint8_t *idm, felica_dump_metadat
|
||||
felica_get_container_issue_info_request_t container_issue_request;
|
||||
memset(&container_issue_request, 0, sizeof(container_issue_request));
|
||||
container_issue_request.length[0] = sizeof(container_issue_request);
|
||||
container_issue_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFO_REQ;
|
||||
container_issue_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ;
|
||||
memcpy(container_issue_request.IDm, idm, sizeof(container_issue_request.IDm));
|
||||
|
||||
felica_get_container_issue_info_response_t container_issue_response;
|
||||
@@ -4367,8 +4367,8 @@ static int felica_dump_collect_key_versions(felica_dump_system_t *system, uint32
|
||||
}
|
||||
|
||||
uint8_t flags = FELICA_NO_DISCONNECT | FELICA_APPEND_CRC | FELICA_RAW;
|
||||
int ret = send_polling(flags, system->system_code, FELICA_POLL_REQUEST_NO_DATA,
|
||||
FELICA_POLL_TIMEOUT_MS, retry_count, false,
|
||||
int ret = send_polling(flags, system->system_code, FELICA_POLLING_REQUEST_NO_DATA,
|
||||
FELICA_POLLING_TIMEOUT_MS, retry_count, false,
|
||||
system->idm, system->pmm, NULL);
|
||||
if (ret != PM3_SUCCESS) {
|
||||
PrintAndLogEx(WARNING, "Unable to poll system " _YELLOW_("%04X") " for key versions.", system->system_code);
|
||||
@@ -4503,8 +4503,8 @@ static int felica_dump_single_system(const felica_discovered_system_t *system,
|
||||
uint8_t flags = FELICA_NO_DISCONNECT | FELICA_APPEND_CRC | FELICA_RAW;
|
||||
uint8_t idm[8] = {0};
|
||||
uint8_t pmm[8] = {0};
|
||||
if (send_polling(flags, system->system_code, FELICA_POLL_REQUEST_NO_DATA,
|
||||
FELICA_POLL_TIMEOUT_MS, retry_count, false,
|
||||
if (send_polling(flags, system->system_code, FELICA_POLLING_REQUEST_NO_DATA,
|
||||
FELICA_POLLING_TIMEOUT_MS, retry_count, false,
|
||||
idm, pmm, NULL) != PM3_SUCCESS) {
|
||||
PrintAndLogEx(FAILED, "Unable to poll system " _YELLOW_("%04X") ".", system->system_code);
|
||||
return PM3_ERFTRANS;
|
||||
@@ -4522,7 +4522,7 @@ static int felica_dump_single_system(const felica_discovered_system_t *system,
|
||||
dump_ctx.retry_count = retry_count;
|
||||
dump_ctx.block_datalen = 16;
|
||||
dump_ctx.block_frame[0] = dump_ctx.block_datalen;
|
||||
dump_ctx.block_frame[1] = FELICA_RDBLK_REQ;
|
||||
dump_ctx.block_frame[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
|
||||
memcpy(dump_ctx.block_frame + 2, idm, sizeof(idm));
|
||||
dump_ctx.block_frame[10] = 0x01;
|
||||
dump_ctx.block_frame[13] = 0x01;
|
||||
@@ -5380,7 +5380,7 @@ static int CmdHFFelicaRequestSpecificationVersion(const char *Cmd) {
|
||||
felica_request_specification_version_request_t request_specification_version_request;
|
||||
memset(&request_specification_version_request, 0, sizeof(request_specification_version_request));
|
||||
request_specification_version_request.length[0] = sizeof(request_specification_version_request);
|
||||
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPEC_VERSION_REQ;
|
||||
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPECIFICATION_VERSION_REQ;
|
||||
|
||||
if (rlen) {
|
||||
memcpy(request_specification_version_request.reserved, reserved, sizeof(reserved));
|
||||
@@ -5545,7 +5545,7 @@ static int CmdHFFelicaRequestSystemCode(const char *Cmd) {
|
||||
felica_request_system_code_request_t request_system_code_request;
|
||||
memset(&request_system_code_request, 0, sizeof(request_system_code_request));
|
||||
request_system_code_request.length[0] = sizeof(request_system_code_request);
|
||||
request_system_code_request.command_code[0] = FELICA_REQSYSCODE_REQ;
|
||||
request_system_code_request.command_code[0] = FELICA_REQUEST_SYSTEM_CODE_REQ;
|
||||
|
||||
res = felica_ensure_target_present(idm, (size_t)ilen, FELICA_IDM_RESOLVE_STANDALONE, request_system_code_request.IDm);
|
||||
if (res != PM3_SUCCESS) {
|
||||
|
||||
+131
-131
@@ -2456,7 +2456,7 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
|
||||
}
|
||||
|
||||
switch (cmd_code) {
|
||||
case FELICA_POLL_REQ: {
|
||||
case FELICA_POLLING_REQ: {
|
||||
// Polling request code is byte 6 of the trace frame.
|
||||
if (cmdsize > 6) {
|
||||
if (cmd[6] == 0x01) {
|
||||
@@ -2471,182 +2471,182 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
|
||||
snprintf(exp, size, "POLLING");
|
||||
break;
|
||||
}
|
||||
case FELICA_POLL_ACK:
|
||||
snprintf(exp, size, "POLLING ACK");
|
||||
case FELICA_POLLING_RES:
|
||||
snprintf(exp, size, "POLLING RES");
|
||||
break;
|
||||
case FELICA_REQSRV_REQ:
|
||||
case FELICA_REQUEST_SERVICE_REQ:
|
||||
snprintf(exp, size, "REQUEST SERVICE");
|
||||
break;
|
||||
case FELICA_REQSRV_ACK:
|
||||
snprintf(exp, size, "REQUEST SERVICE ACK");
|
||||
case FELICA_REQUEST_SERVICE_RES:
|
||||
snprintf(exp, size, "REQUEST SERVICE RES");
|
||||
break;
|
||||
case FELICA_REQRESP_REQ:
|
||||
case FELICA_REQUEST_RESPONSE_REQ:
|
||||
snprintf(exp, size, "REQUEST RESPONSE");
|
||||
break;
|
||||
case FELICA_REQRESP_ACK:
|
||||
snprintf(exp, size, "REQUEST RESPONSE ACK");
|
||||
case FELICA_REQUEST_RESPONSE_RES:
|
||||
snprintf(exp, size, "REQUEST RESPONSE RES");
|
||||
break;
|
||||
case FELICA_RDBLK_REQ:
|
||||
case FELICA_READ_WITHOUT_ENCRYPTION_REQ:
|
||||
snprintf(exp, size, "READ WITHOUT ENCRYPTION");
|
||||
break;
|
||||
case FELICA_RDBLK_ACK:
|
||||
snprintf(exp, size, "READ WITHOUT ENCRYPTION ACK");
|
||||
case FELICA_READ_WITHOUT_ENCRYPTION_RES:
|
||||
snprintf(exp, size, "READ WITHOUT ENCRYPTION RES");
|
||||
break;
|
||||
case FELICA_WRTBLK_REQ:
|
||||
case FELICA_WRITE_WITHOUT_ENCRYPTION_REQ:
|
||||
snprintf(exp, size, "WRITE WITHOUT ENCRYPTION");
|
||||
break;
|
||||
case FELICA_WRTBLK_ACK:
|
||||
snprintf(exp, size, "WRITE WITHOUT ENCRYPTION ACK");
|
||||
case FELICA_WRITE_WITHOUT_ENCRYPTION_RES:
|
||||
snprintf(exp, size, "WRITE WITHOUT ENCRYPTION RES");
|
||||
break;
|
||||
case FELICA_SRCHSYSCODE_REQ:
|
||||
case FELICA_SEARCH_SERVICE_CODE_REQ:
|
||||
snprintf(exp, size, "SEARCH SERVICE CODE");
|
||||
break;
|
||||
case FELICA_SRCHSYSCODE_ACK:
|
||||
snprintf(exp, size, "SEARCH SERVICE CODE ACK");
|
||||
case FELICA_SEARCH_SERVICE_CODE_RES:
|
||||
snprintf(exp, size, "SEARCH SERVICE CODE RES");
|
||||
break;
|
||||
case FELICA_REQSYSCODE_REQ:
|
||||
case FELICA_REQUEST_SYSTEM_CODE_REQ:
|
||||
snprintf(exp, size, "REQUEST SYSTEM CODE");
|
||||
break;
|
||||
case FELICA_REQSYSCODE_ACK:
|
||||
snprintf(exp, size, "REQUEST SYSTEM CODE ACK");
|
||||
case FELICA_REQUEST_SYSTEM_CODE_RES:
|
||||
snprintf(exp, size, "REQUEST SYSTEM CODE RES");
|
||||
break;
|
||||
case FELICA_REQBLKINFO_REQ:
|
||||
case FELICA_REQUEST_BLOCK_INFORMATION_REQ:
|
||||
snprintf(exp, size, "REQUEST BLOCK INFORMATION");
|
||||
break;
|
||||
case FELICA_REQBLKINFO_ACK:
|
||||
snprintf(exp, size, "REQUEST BLOCK INFORMATION ACK");
|
||||
case FELICA_REQUEST_BLOCK_INFORMATION_RES:
|
||||
snprintf(exp, size, "REQUEST BLOCK INFORMATION RES");
|
||||
break;
|
||||
case FELICA_AUTH1_REQ:
|
||||
snprintf(exp, size, "AUTH 1");
|
||||
case FELICA_AUTHENTICATION1_REQ:
|
||||
snprintf(exp, size, "AUTHENTICATION1");
|
||||
break;
|
||||
case FELICA_AUTH1_ACK:
|
||||
snprintf(exp, size, "AUTH 1 ACK");
|
||||
case FELICA_AUTHENTICATION1_RES:
|
||||
snprintf(exp, size, "AUTHENTICATION1 RES");
|
||||
break;
|
||||
case FELICA_AUTH2_REQ:
|
||||
snprintf(exp, size, "AUTH 2");
|
||||
case FELICA_AUTHENTICATION2_REQ:
|
||||
snprintf(exp, size, "AUTHENTICATION2");
|
||||
break;
|
||||
case FELICA_AUTH2_ACK:
|
||||
snprintf(exp, size, "AUTH 2 ACK");
|
||||
case FELICA_AUTHENTICATION2_RES:
|
||||
snprintf(exp, size, "AUTHENTICATION2 RES");
|
||||
break;
|
||||
case FELICA_RDSEC_REQ:
|
||||
case FELICA_READ_SECURE_REQ:
|
||||
snprintf(exp, size, "READ");
|
||||
break;
|
||||
case FELICA_RDSEC_ACK:
|
||||
snprintf(exp, size, "READ ACK");
|
||||
case FELICA_READ_SECURE_RES:
|
||||
snprintf(exp, size, "READ RES");
|
||||
break;
|
||||
case FELICA_WRTSEC_REQ:
|
||||
case FELICA_WRITE_SECURE_REQ:
|
||||
snprintf(exp, size, "WRITE");
|
||||
break;
|
||||
case FELICA_WRTSEC_ACK:
|
||||
snprintf(exp, size, "WRITE ACK");
|
||||
case FELICA_WRITE_SECURE_RES:
|
||||
snprintf(exp, size, "WRITE RES");
|
||||
break;
|
||||
case FELICA_GET_NODE_LIST_REQ:
|
||||
case FELICA_REQUEST_CODE_LIST_REQ:
|
||||
snprintf(exp, size, "REQUEST CODE LIST");
|
||||
break;
|
||||
case FELICA_GET_NODE_LIST_ACK:
|
||||
snprintf(exp, size, "REQUEST CODE LIST ACK");
|
||||
case FELICA_REQUEST_CODE_LIST_RES:
|
||||
snprintf(exp, size, "REQUEST CODE LIST RES");
|
||||
break;
|
||||
case FELICA_REQBLKINFO_EX_REQ:
|
||||
case FELICA_REQUEST_BLOCK_INFORMATION_EX_REQ:
|
||||
snprintf(exp, size, "REQUEST BLOCK INFORMATION EX");
|
||||
break;
|
||||
case FELICA_REQBLKINFO_EX_ACK:
|
||||
snprintf(exp, size, "REQUEST BLOCK INFORMATION EX ACK");
|
||||
case FELICA_REQUEST_BLOCK_INFORMATION_EX_RES:
|
||||
snprintf(exp, size, "REQUEST BLOCK INFORMATION EX RES");
|
||||
break;
|
||||
case FELICA_SET_PARAMETER_REQ:
|
||||
snprintf(exp, size, "SET PARAMETER");
|
||||
break;
|
||||
case FELICA_SET_PARAMETER_ACK:
|
||||
snprintf(exp, size, "SET PARAMETER ACK");
|
||||
case FELICA_SET_PARAMETER_RES:
|
||||
snprintf(exp, size, "SET PARAMETER RES");
|
||||
break;
|
||||
case FELICA_GET_CONTAINER_ISSUE_INFO_REQ:
|
||||
snprintf(exp, size, "GET CONTAINER ISSUE INFO");
|
||||
case FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ:
|
||||
snprintf(exp, size, "GET CONTAINER ISSUE INFORMATION");
|
||||
break;
|
||||
case FELICA_GET_CONTAINER_ISSUE_INFO_ACK:
|
||||
snprintf(exp, size, "GET CONTAINER ISSUE INFO ACK");
|
||||
case FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES:
|
||||
snprintf(exp, size, "GET CONTAINER ISSUE INFORMATION RES");
|
||||
break;
|
||||
case FELICA_GET_AREA_INFO_REQ:
|
||||
snprintf(exp, size, "GET AREA INFO");
|
||||
case FELICA_GET_AREA_INFORMATION_REQ:
|
||||
snprintf(exp, size, "GET AREA INFORMATION");
|
||||
break;
|
||||
case FELICA_GET_AREA_INFO_ACK:
|
||||
snprintf(exp, size, "GET AREA INFO ACK");
|
||||
case FELICA_GET_AREA_INFORMATION_RES:
|
||||
snprintf(exp, size, "GET AREA INFORMATION RES");
|
||||
break;
|
||||
case FELICA_GET_NODE_PROPERTY_REQ:
|
||||
snprintf(exp, size, "GET NODE PROPERTY");
|
||||
break;
|
||||
case FELICA_GET_NODE_PROPERTY_ACK:
|
||||
snprintf(exp, size, "GET NODE PROPERTY ACK");
|
||||
case FELICA_GET_NODE_PROPERTY_RES:
|
||||
snprintf(exp, size, "GET NODE PROPERTY RES");
|
||||
break;
|
||||
case FELICA_GET_CONTAINER_PROPERTY_REQ:
|
||||
snprintf(exp, size, "GET CONTAINER PROPERTY");
|
||||
break;
|
||||
case FELICA_GET_CONTAINER_PROPERTY_ACK:
|
||||
snprintf(exp, size, "GET CONTAINER PROPERTY ACK");
|
||||
case FELICA_GET_CONTAINER_PROPERTY_RES:
|
||||
snprintf(exp, size, "GET CONTAINER PROPERTY RES");
|
||||
break;
|
||||
case FELICA_REQSRV2_REQ:
|
||||
case FELICA_REQUEST_SERVICE_V2_REQ:
|
||||
snprintf(exp, size, "REQUEST SERVICE v2");
|
||||
break;
|
||||
case FELICA_REQSRV2_ACK:
|
||||
snprintf(exp, size, "REQUEST SERVICE v2 ACK");
|
||||
case FELICA_REQUEST_SERVICE_V2_RES:
|
||||
snprintf(exp, size, "REQUEST SERVICE v2 RES");
|
||||
break;
|
||||
case FELICA_INTERNAL_AUTH_READ_REQ:
|
||||
case FELICA_INTERNAL_AUTHENTICATE_AND_READ_REQ:
|
||||
snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ");
|
||||
break;
|
||||
case FELICA_INTERNAL_AUTH_READ_ACK:
|
||||
snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ ACK");
|
||||
case FELICA_INTERNAL_AUTHENTICATE_AND_READ_RES:
|
||||
snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ RES");
|
||||
break;
|
||||
case FELICA_EXTERNAL_AUTH_WRITE_REQ:
|
||||
case FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_REQ:
|
||||
snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE");
|
||||
break;
|
||||
case FELICA_EXTERNAL_AUTH_WRITE_ACK:
|
||||
snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE ACK");
|
||||
case FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_RES:
|
||||
snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE RES");
|
||||
break;
|
||||
case FELICA_GETSTATUS_REQ:
|
||||
snprintf(exp, size, "GET STATUS");
|
||||
case FELICA_GET_SYSTEM_STATUS_REQ:
|
||||
snprintf(exp, size, "GET SYSTEM STATUS");
|
||||
break;
|
||||
case FELICA_GETSTATUS_ACK:
|
||||
snprintf(exp, size, "GET STATUS ACK");
|
||||
case FELICA_GET_SYSTEM_STATUS_RES:
|
||||
snprintf(exp, size, "GET SYSTEM STATUS RES");
|
||||
break;
|
||||
case FELICA_GETPLATFORMINFO_REQ:
|
||||
snprintf(exp, size, "GET PLATFORM INFO");
|
||||
case FELICA_REQUEST_PRODUCT_INFORMATION_REQ:
|
||||
snprintf(exp, size, "REQUEST PRODUCT INFORMATION");
|
||||
break;
|
||||
case FELICA_GETPLATFORMINFO_ACK:
|
||||
snprintf(exp, size, "GET PLATFORM INFO ACK");
|
||||
case FELICA_REQUEST_PRODUCT_INFORMATION_RES:
|
||||
snprintf(exp, size, "REQUEST PRODUCT INFORMATION RES");
|
||||
break;
|
||||
case FELICA_REQUEST_SPEC_VERSION_REQ:
|
||||
snprintf(exp, size, "REQUEST SPEC VERSION");
|
||||
case FELICA_REQUEST_SPECIFICATION_VERSION_REQ:
|
||||
snprintf(exp, size, "REQUEST SPECIFICATION VERSION");
|
||||
break;
|
||||
case FELICA_REQUEST_SPEC_VERSION_ACK:
|
||||
snprintf(exp, size, "REQUEST SPEC VERSION ACK");
|
||||
case FELICA_REQUEST_SPECIFICATION_VERSION_RES:
|
||||
snprintf(exp, size, "REQUEST SPECIFICATION VERSION RES");
|
||||
break;
|
||||
case FELICA_RESET_MODE_REQ:
|
||||
snprintf(exp, size, "RESET MODE");
|
||||
break;
|
||||
case FELICA_RESET_MODE_ACK:
|
||||
snprintf(exp, size, "RESET MODE ACK");
|
||||
case FELICA_RESET_MODE_RES:
|
||||
snprintf(exp, size, "RESET MODE RES");
|
||||
break;
|
||||
case FELICA_AUTH1V2_REQ:
|
||||
snprintf(exp, size, "AUTH 1 v2");
|
||||
case FELICA_AUTHENTICATION1_V2_REQ:
|
||||
snprintf(exp, size, "AUTHENTICATION1 v2");
|
||||
break;
|
||||
case FELICA_AUTH1V2_ACK:
|
||||
snprintf(exp, size, "AUTH 1 v2 ACK");
|
||||
case FELICA_AUTHENTICATION1_V2_RES:
|
||||
snprintf(exp, size, "AUTHENTICATION1 v2 RES");
|
||||
break;
|
||||
case FELICA_AUTH2V2_REQ:
|
||||
snprintf(exp, size, "AUTH 2 v2");
|
||||
case FELICA_AUTHENTICATION2_V2_REQ:
|
||||
snprintf(exp, size, "AUTHENTICATION2 v2");
|
||||
break;
|
||||
case FELICA_AUTH2V2_ACK:
|
||||
snprintf(exp, size, "AUTH 2 v2 ACK");
|
||||
case FELICA_AUTHENTICATION2_V2_RES:
|
||||
snprintf(exp, size, "AUTHENTICATION2 v2 RES");
|
||||
break;
|
||||
case FELICA_RDSECV2_REQ:
|
||||
case FELICA_READ_SECURE_V2_REQ:
|
||||
snprintf(exp, size, "READ v2");
|
||||
break;
|
||||
case FELICA_RDSECV2_ACK:
|
||||
snprintf(exp, size, "READ v2 ACK");
|
||||
case FELICA_READ_SECURE_V2_RES:
|
||||
snprintf(exp, size, "READ v2 RES");
|
||||
break;
|
||||
case FELICA_WRTSECV2_REQ:
|
||||
case FELICA_WRITE_SECURE_V2_REQ:
|
||||
snprintf(exp, size, "WRITE v2");
|
||||
break;
|
||||
case FELICA_WRTSECV2_ACK:
|
||||
snprintf(exp, size, "WRITE v2 ACK");
|
||||
case FELICA_WRITE_SECURE_V2_RES:
|
||||
snprintf(exp, size, "WRITE v2 RES");
|
||||
break;
|
||||
case FELICA_NFC_DEP_ATR_REQ:
|
||||
snprintf(exp, size, "NFC-DEP ATR REQ");
|
||||
@@ -2696,95 +2696,95 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
|
||||
case FELICA_WUP_RES:
|
||||
snprintf(exp, size, "WUP RES");
|
||||
break;
|
||||
case FELICA_UPDATE_RNDID_REQ:
|
||||
case FELICA_UPDATE_RANDOM_ID_REQ:
|
||||
snprintf(exp, size, "UPDATE RANDOM ID");
|
||||
break;
|
||||
case FELICA_UPDATE_RNDID_ACK:
|
||||
snprintf(exp, size, "UPDATE RANDOM ID ACK");
|
||||
case FELICA_UPDATE_RANDOM_ID_RES:
|
||||
snprintf(exp, size, "UPDATE RANDOM ID RES");
|
||||
break;
|
||||
case FELICA_REGISTER_AREA_V2_REQ:
|
||||
snprintf(exp, size, "REGISTER AREA V2");
|
||||
snprintf(exp, size, "REGISTER AREA v2");
|
||||
break;
|
||||
case FELICA_REGISTER_AREA_V2_ACK:
|
||||
snprintf(exp, size, "REGISTER AREA V2 ACK");
|
||||
case FELICA_REGISTER_AREA_V2_RES:
|
||||
snprintf(exp, size, "REGISTER AREA v2 RES");
|
||||
break;
|
||||
case FELICA_REGISTER_SERVICE_V2_REQ:
|
||||
snprintf(exp, size, "REGISTER SERVICE V2");
|
||||
snprintf(exp, size, "REGISTER SERVICE v2");
|
||||
break;
|
||||
case FELICA_REGISTER_SERVICE_V2_ACK:
|
||||
snprintf(exp, size, "REGISTER SERVICE V2 ACK");
|
||||
case FELICA_REGISTER_SERVICE_V2_RES:
|
||||
snprintf(exp, size, "REGISTER SERVICE v2 RES");
|
||||
break;
|
||||
case FELICA_REGISTER_ISSUE_ID_EX_V2_REQ:
|
||||
snprintf(exp, size, "REGISTER ISSUE ID EX V2");
|
||||
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");
|
||||
case FELICA_REGISTER_ISSUE_ID_EX_V2_RES:
|
||||
snprintf(exp, size, "REGISTER ISSUE ID EX v2 RES");
|
||||
break;
|
||||
case FELICA_SEPARATE_SYSTEM_V2_REQ:
|
||||
snprintf(exp, size, "SEPARATE SYSTEM V2");
|
||||
snprintf(exp, size, "SEPARATE SYSTEM v2");
|
||||
break;
|
||||
case FELICA_SEPARATE_SYSTEM_V2_ACK:
|
||||
snprintf(exp, size, "SEPARATE SYSTEM V2 ACK");
|
||||
case FELICA_SEPARATE_SYSTEM_V2_RES:
|
||||
snprintf(exp, size, "SEPARATE SYSTEM v2 RES");
|
||||
break;
|
||||
case FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ:
|
||||
snprintf(exp, size, "CHANGE SYSTEM BLOCK V2");
|
||||
snprintf(exp, size, "CHANGE SYSTEM BLOCK v2");
|
||||
break;
|
||||
case FELICA_CHANGE_SYSTEM_BLOCK_V2_ACK:
|
||||
snprintf(exp, size, "CHANGE SYSTEM BLOCK V2 ACK");
|
||||
case FELICA_CHANGE_SYSTEM_BLOCK_V2_RES:
|
||||
snprintf(exp, size, "CHANGE SYSTEM BLOCK v2 RES");
|
||||
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");
|
||||
case FELICA_GET_CONTAINER_ID_RES:
|
||||
snprintf(exp, size, "GET CONTAINER ID RES");
|
||||
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");
|
||||
case FELICA_SET_NODE_PROPERTY_RES:
|
||||
snprintf(exp, size, "SET NODE PROPERTY RES");
|
||||
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");
|
||||
case FELICA_REGISTER_ISSUE_ID_RES:
|
||||
snprintf(exp, size, "REGISTER ISSUE ID RES");
|
||||
break;
|
||||
case FELICA_REGISTER_AREA_REQ:
|
||||
snprintf(exp, size, "REGISTER AREA");
|
||||
break;
|
||||
case FELICA_REGISTER_AREA_ACK:
|
||||
snprintf(exp, size, "REGISTER AREA ACK");
|
||||
case FELICA_REGISTER_AREA_RES:
|
||||
snprintf(exp, size, "REGISTER AREA RES");
|
||||
break;
|
||||
case FELICA_REGISTER_SERVICE_REQ:
|
||||
snprintf(exp, size, "REGISTER SERVICE");
|
||||
break;
|
||||
case FELICA_REGISTER_SERVICE_ACK:
|
||||
snprintf(exp, size, "REGISTER SERVICE ACK");
|
||||
case FELICA_REGISTER_SERVICE_RES:
|
||||
snprintf(exp, size, "REGISTER SERVICE RES");
|
||||
break;
|
||||
case FELICA_SEPARATE_SYSTEM_REQ:
|
||||
snprintf(exp, size, "SEPARATE SYSTEM");
|
||||
break;
|
||||
case FELICA_SEPARATE_SYSTEM_ACK:
|
||||
snprintf(exp, size, "SEPARATE SYSTEM ACK");
|
||||
case FELICA_SEPARATE_SYSTEM_RES:
|
||||
snprintf(exp, size, "SEPARATE SYSTEM RES");
|
||||
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");
|
||||
case FELICA_CHANGE_SYSTEM_BLOCK_RES:
|
||||
snprintf(exp, size, "CHANGE SYSTEM BLOCK RES");
|
||||
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");
|
||||
case FELICA_REGISTER_MANUFACTURE_ID_RES:
|
||||
snprintf(exp, size, "REGISTER MANUFACTURE ID RES");
|
||||
break;
|
||||
case FELICA_SELF_DIAGNOSIS_REQ:
|
||||
snprintf(exp, size, "SELF DIAGNOSIS");
|
||||
break;
|
||||
case FELICA_SELF_DIAGNOSIS_ACK:
|
||||
snprintf(exp, size, "SELF DIAGNOSIS ACK");
|
||||
case FELICA_SELF_DIAGNOSIS_RES:
|
||||
snprintf(exp, size, "SELF DIAGNOSIS RES");
|
||||
break;
|
||||
case FELICA_CHANGE_ACTIVE_INTERFACE_REQ:
|
||||
snprintf(exp, size, "CHANGE ACTIVE INTERFACE");
|
||||
|
||||
+140
-139
@@ -898,173 +898,174 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
||||
|
||||
|
||||
// FeliCa protocol
|
||||
#define FELICA_POLL_REQ 0x00
|
||||
#define FELICA_POLL_ACK 0x01
|
||||
#define FELICA_POLLING_REQ 0x00
|
||||
#define FELICA_POLLING_RES 0x01
|
||||
|
||||
#define FELICA_REQSRV_REQ 0x02
|
||||
#define FELICA_REQSRV_ACK 0x03
|
||||
#define FELICA_REQUEST_SERVICE_REQ 0x02
|
||||
#define FELICA_REQUEST_SERVICE_RES 0x03
|
||||
|
||||
#define FELICA_REQRESP_REQ 0x04
|
||||
#define FELICA_REQRESP_ACK 0x05
|
||||
#define FELICA_REQUEST_RESPONSE_REQ 0x04
|
||||
#define FELICA_REQUEST_RESPONSE_RES 0x05
|
||||
|
||||
#define FELICA_RDBLK_REQ 0x06
|
||||
#define FELICA_RDBLK_ACK 0x07
|
||||
#define FELICA_READ_WITHOUT_ENCRYPTION_REQ 0x06
|
||||
#define FELICA_READ_WITHOUT_ENCRYPTION_RES 0x07
|
||||
|
||||
#define FELICA_WRTBLK_REQ 0x08
|
||||
#define FELICA_WRTBLK_ACK 0x09
|
||||
#define FELICA_WRITE_WITHOUT_ENCRYPTION_REQ 0x08
|
||||
#define FELICA_WRITE_WITHOUT_ENCRYPTION_RES 0x09
|
||||
|
||||
#define FELICA_SRCHSYSCODE_REQ 0x0a
|
||||
#define FELICA_SRCHSYSCODE_ACK 0x0b
|
||||
#define FELICA_SEARCH_SERVICE_CODE_REQ 0x0a
|
||||
#define FELICA_SEARCH_SERVICE_CODE_RES 0x0b
|
||||
|
||||
#define FELICA_REQSYSCODE_REQ 0x0c
|
||||
#define FELICA_REQSYSCODE_ACK 0x0d
|
||||
#define FELICA_REQUEST_SYSTEM_CODE_REQ 0x0c
|
||||
#define FELICA_REQUEST_SYSTEM_CODE_RES 0x0d
|
||||
|
||||
#define FELICA_REQBLKINFO_REQ 0x0e
|
||||
#define FELICA_REQBLKINFO_ACK 0x0f
|
||||
#define FELICA_REQUEST_BLOCK_INFORMATION_REQ 0x0e
|
||||
#define FELICA_REQUEST_BLOCK_INFORMATION_RES 0x0f
|
||||
|
||||
#define FELICA_AUTH1_REQ 0x10
|
||||
#define FELICA_AUTH1_ACK 0x11
|
||||
#define FELICA_AUTHENTICATION1_REQ 0x10
|
||||
#define FELICA_AUTHENTICATION1_RES 0x11
|
||||
|
||||
#define FELICA_AUTH2_REQ 0x12
|
||||
#define FELICA_AUTH2_ACK 0x13
|
||||
#define FELICA_AUTHENTICATION2_REQ 0x12
|
||||
#define FELICA_AUTHENTICATION2_RES 0x13
|
||||
|
||||
#define FELICA_RDSEC_REQ 0x14
|
||||
#define FELICA_RDSEC_ACK 0x15
|
||||
#define FELICA_READ_SECURE_REQ 0x14
|
||||
#define FELICA_READ_SECURE_RES 0x15
|
||||
|
||||
#define FELICA_WRTSEC_REQ 0x16
|
||||
#define FELICA_WRTSEC_ACK 0x17
|
||||
#define FELICA_WRITE_SECURE_REQ 0x16
|
||||
#define FELICA_WRITE_SECURE_RES 0x17
|
||||
|
||||
#define FELICA_GET_NODE_LIST_REQ 0x1a
|
||||
#define FELICA_GET_NODE_LIST_ACK 0x1b
|
||||
#define FELICA_REQUEST_CODE_LIST_REQ 0x1a
|
||||
#define FELICA_REQUEST_CODE_LIST_RES 0x1b
|
||||
|
||||
#define FELICA_REQBLKINFO_EX_REQ 0x1e
|
||||
#define FELICA_REQBLKINFO_EX_ACK 0x1f
|
||||
#define FELICA_REQUEST_BLOCK_INFORMATION_EX_REQ 0x1e
|
||||
#define FELICA_REQUEST_BLOCK_INFORMATION_EX_RES 0x1f
|
||||
|
||||
#define FELICA_SET_PARAMETER_REQ 0x20
|
||||
#define FELICA_SET_PARAMETER_ACK 0x21
|
||||
#define FELICA_SET_PARAMETER_REQ 0x20
|
||||
#define FELICA_SET_PARAMETER_RES 0x21
|
||||
|
||||
#define FELICA_GET_CONTAINER_ISSUE_INFO_REQ 0x22
|
||||
#define FELICA_GET_CONTAINER_ISSUE_INFO_ACK 0x23
|
||||
#define FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ 0x22
|
||||
#define FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES 0x23
|
||||
|
||||
#define FELICA_GET_AREA_INFO_REQ 0x24
|
||||
#define FELICA_GET_AREA_INFO_ACK 0x25
|
||||
#define FELICA_GET_AREA_INFORMATION_REQ 0x24
|
||||
#define FELICA_GET_AREA_INFORMATION_RES 0x25
|
||||
|
||||
#define FELICA_GET_NODE_PROPERTY_REQ 0x28
|
||||
#define FELICA_GET_NODE_PROPERTY_ACK 0x29
|
||||
#define FELICA_GET_NODE_PROPERTY_REQ 0x28
|
||||
#define FELICA_GET_NODE_PROPERTY_RES 0x29
|
||||
|
||||
#define FELICA_GET_CONTAINER_PROPERTY_REQ 0x2e
|
||||
#define FELICA_GET_CONTAINER_PROPERTY_ACK 0x2f
|
||||
#define FELICA_GET_CONTAINER_PROPERTY_REQ 0x2e
|
||||
#define FELICA_GET_CONTAINER_PROPERTY_RES 0x2f
|
||||
|
||||
#define FELICA_REQSRV2_REQ 0x32
|
||||
#define FELICA_REQSRV2_ACK 0x33
|
||||
#define FELICA_REQUEST_SERVICE_V2_REQ 0x32
|
||||
#define FELICA_REQUEST_SERVICE_V2_RES 0x33
|
||||
|
||||
#define FELICA_INTERNAL_AUTH_READ_REQ 0x34
|
||||
#define FELICA_INTERNAL_AUTH_READ_ACK 0x35
|
||||
#define FELICA_INTERNAL_AUTHENTICATE_AND_READ_REQ 0x34
|
||||
#define FELICA_INTERNAL_AUTHENTICATE_AND_READ_RES 0x35
|
||||
|
||||
#define FELICA_EXTERNAL_AUTH_WRITE_REQ 0x36
|
||||
#define FELICA_EXTERNAL_AUTH_WRITE_ACK 0x37
|
||||
#define FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_REQ 0x36
|
||||
#define FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_RES 0x37
|
||||
|
||||
#define FELICA_GETSTATUS_REQ 0x38
|
||||
#define FELICA_GETSTATUS_ACK 0x39
|
||||
#define FELICA_GET_SYSTEM_STATUS_REQ 0x38
|
||||
#define FELICA_GET_SYSTEM_STATUS_RES 0x39
|
||||
|
||||
#define FELICA_GETPLATFORMINFO_REQ 0x3a
|
||||
#define FELICA_GETPLATFORMINFO_ACK 0x3b
|
||||
#define FELICA_REQUEST_PRODUCT_INFORMATION_REQ 0x3a
|
||||
#define FELICA_REQUEST_PRODUCT_INFORMATION_RES 0x3b
|
||||
|
||||
#define FELICA_REQUEST_SPEC_VERSION_REQ 0x3c
|
||||
#define FELICA_REQUEST_SPEC_VERSION_ACK 0x3d
|
||||
#define FELICA_REQUEST_SPECIFICATION_VERSION_REQ 0x3c
|
||||
#define FELICA_REQUEST_SPECIFICATION_VERSION_RES 0x3d
|
||||
|
||||
#define FELICA_RESET_MODE_REQ 0x3e
|
||||
#define FELICA_RESET_MODE_ACK 0x3f
|
||||
#define FELICA_RESET_MODE_REQ 0x3e
|
||||
#define FELICA_RESET_MODE_RES 0x3f
|
||||
|
||||
#define FELICA_AUTH1V2_REQ 0x40
|
||||
#define FELICA_AUTH1V2_ACK 0x41
|
||||
#define FELICA_AUTHENTICATION1_V2_REQ 0x40
|
||||
#define FELICA_AUTHENTICATION1_V2_RES 0x41
|
||||
|
||||
#define FELICA_AUTH2V2_REQ 0x42
|
||||
#define FELICA_AUTH2V2_ACK 0x43
|
||||
#define FELICA_AUTHENTICATION2_V2_REQ 0x42
|
||||
#define FELICA_AUTHENTICATION2_V2_RES 0x43
|
||||
|
||||
#define FELICA_RDSECV2_REQ 0x44
|
||||
#define FELICA_RDSECV2_ACK 0x45
|
||||
#define FELICA_WRTSECV2_REQ 0x46
|
||||
#define FELICA_WRTSECV2_ACK 0x47
|
||||
#define FELICA_READ_SECURE_V2_REQ 0x44
|
||||
#define FELICA_READ_SECURE_V2_RES 0x45
|
||||
|
||||
#define FELICA_UPDATE_RNDID_REQ 0x4C
|
||||
#define FELICA_UPDATE_RNDID_ACK 0x4D
|
||||
#define FELICA_WRITE_SECURE_V2_REQ 0x46
|
||||
#define FELICA_WRITE_SECURE_V2_RES 0x47
|
||||
|
||||
#define FELICA_REGISTER_AREA_V2_REQ 0x52
|
||||
#define FELICA_REGISTER_AREA_V2_ACK 0x53
|
||||
#define FELICA_UPDATE_RANDOM_ID_REQ 0x4C
|
||||
#define FELICA_UPDATE_RANDOM_ID_RES 0x4D
|
||||
|
||||
#define FELICA_REGISTER_SERVICE_V2_REQ 0x54
|
||||
#define FELICA_REGISTER_SERVICE_V2_ACK 0x55
|
||||
#define FELICA_REGISTER_AREA_V2_REQ 0x52
|
||||
#define FELICA_REGISTER_AREA_V2_RES 0x53
|
||||
|
||||
#define FELICA_REGISTER_ISSUE_ID_EX_V2_REQ 0x56
|
||||
#define FELICA_REGISTER_ISSUE_ID_EX_V2_ACK 0x57
|
||||
#define FELICA_REGISTER_SERVICE_V2_REQ 0x54
|
||||
#define FELICA_REGISTER_SERVICE_V2_RES 0x55
|
||||
|
||||
#define FELICA_SEPARATE_SYSTEM_V2_REQ 0x58
|
||||
#define FELICA_SEPARATE_SYSTEM_V2_ACK 0x59
|
||||
#define FELICA_REGISTER_ISSUE_ID_EX_V2_REQ 0x56
|
||||
#define FELICA_REGISTER_ISSUE_ID_EX_V2_RES 0x57
|
||||
|
||||
#define FELICA_SEPARATE_SYSTEM_V2_REQ 0x58
|
||||
#define FELICA_SEPARATE_SYSTEM_V2_RES 0x59
|
||||
|
||||
// Also called COMMIT_REGISTRATION in some sources.
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ 0x5E
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_ACK 0x5F
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ 0x5E
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_RES 0x5F
|
||||
|
||||
#define FELICA_GET_CONTAINER_ID_REQ 0x70
|
||||
#define FELICA_GET_CONTAINER_ID_ACK 0x71
|
||||
#define FELICA_GET_CONTAINER_ID_REQ 0x70
|
||||
#define FELICA_GET_CONTAINER_ID_RES 0x71
|
||||
|
||||
#define FELICA_SET_NODE_PROPERTY_REQ 0x78
|
||||
#define FELICA_SET_NODE_PROPERTY_ACK 0x79
|
||||
#define FELICA_SET_NODE_PROPERTY_REQ 0x78
|
||||
#define FELICA_SET_NODE_PROPERTY_RES 0x79
|
||||
|
||||
#define FELICA_REGISTER_ISSUE_ID_REQ 0x80
|
||||
#define FELICA_REGISTER_ISSUE_ID_ACK 0x81
|
||||
#define FELICA_REGISTER_ISSUE_ID_REQ 0x80
|
||||
#define FELICA_REGISTER_ISSUE_ID_RES 0x81
|
||||
|
||||
#define FELICA_REGISTER_AREA_REQ 0x82
|
||||
#define FELICA_REGISTER_AREA_ACK 0x83
|
||||
#define FELICA_REGISTER_AREA_REQ 0x82
|
||||
#define FELICA_REGISTER_AREA_RES 0x83
|
||||
|
||||
#define FELICA_REGISTER_SERVICE_REQ 0x84
|
||||
#define FELICA_REGISTER_SERVICE_ACK 0x85
|
||||
#define FELICA_REGISTER_SERVICE_REQ 0x84
|
||||
#define FELICA_REGISTER_SERVICE_RES 0x85
|
||||
|
||||
#define FELICA_SEPARATE_SYSTEM_REQ 0x88
|
||||
#define FELICA_SEPARATE_SYSTEM_ACK 0x89
|
||||
#define FELICA_SEPARATE_SYSTEM_REQ 0x88
|
||||
#define FELICA_SEPARATE_SYSTEM_RES 0x89
|
||||
|
||||
// Also called COMMIT_REGISTRATION in some sources.
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_REQ 0x8E
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_ACK 0x8F
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_REQ 0x8E
|
||||
#define FELICA_CHANGE_SYSTEM_BLOCK_RES 0x8F
|
||||
|
||||
#define FELICA_REGISTER_MANUFACTURE_ID_REQ 0x90
|
||||
#define FELICA_REGISTER_MANUFACTURE_ID_ACK 0x91
|
||||
#define FELICA_REGISTER_MANUFACTURE_ID_REQ 0x90
|
||||
#define FELICA_REGISTER_MANUFACTURE_ID_RES 0x91
|
||||
|
||||
#define FELICA_SELF_DIAGNOSIS_REQ 0x92
|
||||
#define FELICA_SELF_DIAGNOSIS_ACK 0x93
|
||||
#define FELICA_SELF_DIAGNOSIS_REQ 0x92
|
||||
#define FELICA_SELF_DIAGNOSIS_RES 0x93
|
||||
|
||||
// FeliCa interface commands for mobile devices
|
||||
#define FELICA_CHANGE_ACTIVE_INTERFACE_REQ 0xA4
|
||||
#define FELICA_CHANGE_ACTIVE_INTERFACE_RES 0xA5
|
||||
#define FELICA_CHANGE_ACTIVE_INTERFACE_REQ 0xA4
|
||||
#define FELICA_CHANGE_ACTIVE_INTERFACE_RES 0xA5
|
||||
|
||||
#define FELICA_RESET_INTERFACE_REQ 0xA8
|
||||
#define FELICA_RESET_INTERFACE_RES 0xA9
|
||||
#define FELICA_RESET_INTERFACE_REQ 0xA8
|
||||
#define FELICA_RESET_INTERFACE_RES 0xA9
|
||||
|
||||
// FeliCa Ad-hoc Link Protocol (FALP) commands
|
||||
#define FELICA_PROPOSE_ADHOC_REQ 0xAA
|
||||
#define FELICA_PROPOSE_ADHOC_RES 0xAB
|
||||
#define FELICA_PROPOSE_ADHOC_REQ 0xAA
|
||||
#define FELICA_PROPOSE_ADHOC_RES 0xAB
|
||||
|
||||
#define FELICA_START_ADHOC_MODE_REQ 0xAC
|
||||
#define FELICA_START_ADHOC_MODE_RES 0xAD
|
||||
#define FELICA_START_ADHOC_MODE_REQ 0xAC
|
||||
#define FELICA_START_ADHOC_MODE_RES 0xAD
|
||||
|
||||
// FALP tunnel command; does not have a corresponding response code
|
||||
#define FELICA_FALP_TERMINATE_ADHOC 0xAE
|
||||
#define FELICA_FALP_TERMINATE_ADHOC 0xAE
|
||||
|
||||
#define FELICA_PUSH_REQ 0xB0
|
||||
#define FELICA_PUSH_RES 0xB1
|
||||
#define FELICA_PUSH_REQ 0xB0
|
||||
#define FELICA_PUSH_RES 0xB1
|
||||
|
||||
// FALP tunnel command; does not have a corresponding response code
|
||||
#define FELICA_FALP_TRANSMIT_DATA 0xBC
|
||||
#define FELICA_FALP_TRANSMIT_DATA 0xBC
|
||||
|
||||
// Command codes >= 0xC0 consist of two bytes; the second byte is the function code.
|
||||
// Payload data, including the IDM, if present, is hence shifted by one byte to the right.
|
||||
|
||||
// DCK encapsulation commands mentioned in the CCC specification
|
||||
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA 0xC200
|
||||
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA_CHAINED 0xC201
|
||||
#define FELICA_DCK_ENCAPSULATION_RW_ACK 0xC210
|
||||
#define FELICA_DCK_ENCAPSULATION_NACK 0xC220
|
||||
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA 0xC200
|
||||
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA_CHAINED 0xC201
|
||||
#define FELICA_DCK_ENCAPSULATION_RW_ACK 0xC210
|
||||
#define FELICA_DCK_ENCAPSULATION_NACK 0xC220
|
||||
|
||||
// DCK encapsulation responses mentioned in the CCC specification
|
||||
#define FELICA_DCK_ENCAPSULATION_RAPDU_DATA_RES 0xC300
|
||||
@@ -1074,56 +1075,56 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
||||
#define FELICA_DCK_ENCAPSULATION_NACK_RES 0xC320
|
||||
|
||||
// FeliCa internal RF commands used on the wired interface
|
||||
#define FELICA_SET_PRIVACY_FLAG_REQ 0xCC01
|
||||
#define FELICA_SET_PRIVACY_FLAG_RES 0xCD01
|
||||
#define FELICA_SET_PRIVACY_FLAG_REQ 0xCC01
|
||||
#define FELICA_SET_PRIVACY_FLAG_RES 0xCD01
|
||||
|
||||
#define FELICA_REQUEST_MASKED_CODE_LIST_REQ 0xCC02
|
||||
#define FELICA_REQUEST_MASKED_CODE_LIST_RES 0xCD02
|
||||
#define FELICA_REQUEST_MASKED_CODE_LIST_REQ 0xCC02
|
||||
#define FELICA_REQUEST_MASKED_CODE_LIST_RES 0xCD02
|
||||
|
||||
// Legacy mobile FeliCa client commands
|
||||
#define FELICA_TURN_OFF_RF_POWER_CMD 0xCC12
|
||||
#define FELICA_TURN_OFF_RF_POWER_RES 0xCD12
|
||||
#define FELICA_TURN_OFF_RF_POWER_CMD 0xCC12
|
||||
#define FELICA_TURN_OFF_RF_POWER_RES 0xCD12
|
||||
|
||||
#define FELICA_SET_BAUD_RATE_CMD 0xCC13
|
||||
#define FELICA_SET_BAUD_RATE_RES 0xCD13
|
||||
#define FELICA_SET_BAUD_RATE_CMD 0xCC13
|
||||
#define FELICA_SET_BAUD_RATE_RES 0xCD13
|
||||
|
||||
// NFC-DEP PDUs over NFC-F: the first byte specifies the direction and the second the PDU type.
|
||||
// Unlike other extended commands, both the command code and function code is incremented on response.
|
||||
#define FELICA_NFC_DEP_ATR_REQ 0xD400
|
||||
#define FELICA_NFC_DEP_ATR_RES 0xD501
|
||||
#define FELICA_NFC_DEP_PSL_REQ 0xD404
|
||||
#define FELICA_NFC_DEP_PSL_RES 0xD505
|
||||
#define FELICA_NFC_DEP_DEP_REQ 0xD406
|
||||
#define FELICA_NFC_DEP_DEP_RES 0xD507
|
||||
#define FELICA_NFC_DEP_DSL_REQ 0xD408
|
||||
#define FELICA_NFC_DEP_DSL_RES 0xD509
|
||||
#define FELICA_NFC_DEP_RLS_REQ 0xD40A
|
||||
#define FELICA_NFC_DEP_RLS_RES 0xD50B
|
||||
#define FELICA_NFC_DEP_ATR_REQ 0xD400
|
||||
#define FELICA_NFC_DEP_ATR_RES 0xD501
|
||||
#define FELICA_NFC_DEP_PSL_REQ 0xD404
|
||||
#define FELICA_NFC_DEP_PSL_RES 0xD505
|
||||
#define FELICA_NFC_DEP_DEP_REQ 0xD406
|
||||
#define FELICA_NFC_DEP_DEP_RES 0xD507
|
||||
#define FELICA_NFC_DEP_DSL_REQ 0xD408
|
||||
#define FELICA_NFC_DEP_DSL_RES 0xD509
|
||||
#define FELICA_NFC_DEP_RLS_REQ 0xD40A
|
||||
#define FELICA_NFC_DEP_RLS_RES 0xD50B
|
||||
|
||||
// These commands are defined by JIS X 6319-4 but have not been observed on any real targets.
|
||||
#define FELICA_ATTR_REQ 0xD600
|
||||
#define FELICA_ATTR_RES 0xD701
|
||||
#define FELICA_HLT_REQ 0xD602
|
||||
#define FELICA_HLT_RES 0xD703
|
||||
#define FELICA_WUP_REQ 0xD604
|
||||
#define FELICA_WUP_RES 0xD705
|
||||
#define FELICA_ATTR_REQ 0xD600
|
||||
#define FELICA_ATTR_RES 0xD701
|
||||
#define FELICA_HLT_REQ 0xD602
|
||||
#define FELICA_HLT_RES 0xD703
|
||||
#define FELICA_WUP_REQ 0xD604
|
||||
#define FELICA_WUP_RES 0xD705
|
||||
|
||||
// Unlike most two-byte commands, works on all FeliCa targets; response code matches the command code
|
||||
#define FELICA_ECHO_REQ 0xF000
|
||||
#define FELICA_ECHO_REQ 0xF000
|
||||
|
||||
// Legacy mobile FeliCa client RF chip register commands
|
||||
#define FELICA_SET_RF_CHIP_REGISTER_CMD 0xF803
|
||||
#define FELICA_SET_RF_CHIP_REGISTER_RES 0xF903
|
||||
#define FELICA_SET_RF_CHIP_REGISTER_CMD 0xF803
|
||||
#define FELICA_SET_RF_CHIP_REGISTER_RES 0xF903
|
||||
|
||||
#define FELICA_GET_RF_CHIP_REGISTER_CMD 0xF804
|
||||
#define FELICA_GET_RF_CHIP_REGISTER_RES 0xF904
|
||||
#define FELICA_GET_RF_CHIP_REGISTER_CMD 0xF804
|
||||
#define FELICA_GET_RF_CHIP_REGISTER_RES 0xF904
|
||||
|
||||
// Other FeliCa constants
|
||||
#define SYSTEMCODE_WILDCARD 0xffff // ANY
|
||||
#define SYSTEMCODE_OSAIFU_KEITAI 0xfe0f // Osaifu-Keitai
|
||||
#define SYSTEMCODE_WILDCARD 0xffff // ANY
|
||||
#define SYSTEMCODE_OSAIFU_KEITAI 0xfe0f // Osaifu-Keitai
|
||||
|
||||
#define SERVICE_FELICA_LITE_READONLY 0x0b00 // FeliCa Lite RO
|
||||
#define SERVICE_FELICA_LITE_READWRITE 0x0900 // FeliCa Lite RW
|
||||
#define SERVICE_FELICA_LITE_READONLY 0x0b00 // FeliCa Lite RO
|
||||
#define SERVICE_FELICA_LITE_READWRITE 0x0900 // FeliCa Lite RW
|
||||
|
||||
// Calypso protocol
|
||||
#define CALYPSO_GET_RESPONSE 0xC0
|
||||
|
||||
Reference in New Issue
Block a user