From e619ddc071e882bb9de75d2e0905c4eda2b11516 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 3 Sep 2016 12:20:12 +0200 Subject: [PATCH] FIX: Better legic annotation, show which byte was targeted during read and write commands. --- client/cmdhf.c | 29 +++++++++++++++++++---------- common/protocols.h | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/client/cmdhf.c b/client/cmdhf.c index 025a83d4..1aa656ee 100644 --- a/client/cmdhf.c +++ b/client/cmdhf.c @@ -371,13 +371,21 @@ void annotateIso14443b(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize) { // 0 = write // Quite simpel tag void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){ - switch(cmd[0]) { - case LEGIC_HSK :snprintf(exp, size, "HANDSHAKE");break; - case LEGIC_READ :snprintf(exp, size, "READ");break; - case LEGIC_WRITE :snprintf(exp, size, "WRITE");break; - default :snprintf(exp,size,"?"); break; - } + + if ( cmdsize > 1) { + switch(cmd[0]) { + case LEGIC_READ :snprintf(exp, size, "READ Byte(%d)", cmd[1]);break; + case LEGIC_WRITE :snprintf(exp, size, "WRITE Byte(%d)", cmd[1]);break; + default :snprintf(exp, size, "?"); break; + } + } else { + switch(cmd[0]) { + case LEGIC_HSK :snprintf(exp, size, "END Handshake");break; + default :snprintf(exp, size, "?"); break; + } + } } + /** * @brief iso14443A_CRC_check Checks CRC in command or response * @param isResponse @@ -491,6 +499,9 @@ uint8_t iclass_CRC_check(bool isResponse, uint8_t* data, uint8_t len) uint8_t legic_CRC_check(bool isResponse, uint8_t* data, uint8_t len){ if (len > 2) return 2; + + uint8_t calccrc = CRC8Legic(data, len); + return 0; // crc_init(&legic_crc, 4, 0x19 >> 1, 0x5, 0); // crc_clear(&legic_crc); @@ -654,17 +665,15 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui } } - if(data_len == 0 ) + if (data_len == 0 ) sprintf(line[0],""); - //--- Draw the CRC column char *crc = (crcStatus == 0 ? "!crc" : (crcStatus == 1 ? " ok " : " ")); EndOfTransmissionTimestamp = timestamp + duration; - if(!isResponse) - { + if (!isResponse) { switch(protocol) { case ICLASS: annotateIclass(explanation,sizeof(explanation),frame,data_len); break; case ISO_14443A: annotateIso14443a(explanation,sizeof(explanation),frame,data_len); break; diff --git a/common/protocols.h b/common/protocols.h index 0182ceb5..37d12525 100644 --- a/common/protocols.h +++ b/common/protocols.h @@ -326,7 +326,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MFDES_AUTHENTICATION_FRAME 0xAF // LEGIC Commands -#define LEGIC_HSK 0xFF +#define LEGIC_HSK 0x39 #define LEGIC_READ 0x01 #define LEGIC_WRITE 0x00 -- 2.39.2