CHG: and now that I do actually check on bitlenght, I can get a better annotation yet again. Looking at it raises a question, acknowledge is 0x19 or 0x39, they just don't match up with tagtype identification of 0x0D, 0x1D, 0x39. I'll need to look at a 1024 tags response in a trace with a valid reader.

This commit is contained in:
iceman1001 2016-09-26 12:58:11 +02:00
parent 06c185d020
commit 7c91c8bf24
2 changed files with 23 additions and 13 deletions
client
common

@ -370,19 +370,20 @@ void annotateIso14443b(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize) {
// 1 = read
// 0 = write
// Quite simpel tag
void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
uint8_t bitsend = cmd[0];
void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
uint8_t bitsend = cmd[0];
switch (bitsend){
case 7:
snprintf(exp, size, "IV 0x%02X", cmd[1]);
break;
case 6: {
if ( cmd[1] == LEGIC_HSK_22 )
snprintf(exp, size, "MIM22");
if ( cmd[1] == LEGIC_HSK_256 )
snprintf(exp, size, "MIN256/1024");
switch ( cmd[1] ) {
case LEGIC_MIM_22: snprintf(exp, size, "MIM22"); break;
case LEGIC_MIM_256: snprintf(exp, size, "MIM256"); break;
case LEGIC_MIM_1024: snprintf(exp, size, "MIM1024"); break;
case LEGIC_ACK_22: snprintf(exp, size, "ACK 22"); break;
case LEGIC_ACK_256: snprintf(exp, size, "ACK 256/1024"); break;
}
break;
}
case 9:
@ -681,14 +682,20 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
}
}
if (data_len == 0 )
if (data_len == 0 ) {
sprintf(line[0],"<empty trace - possible error>");
return tracepos;
}
//--- Draw the CRC column
// Draw the CRC column
char *crc = (crcStatus == 0 ? "!crc" : (crcStatus == 1 ? " ok " : " "));
EndOfTransmissionTimestamp = timestamp + duration;
// Always annotate LEGIC read/tag
if ( protocol == LEGIC )
annotateLegic(explanation,sizeof(explanation),frame,data_len);
if (!isResponse) {
switch(protocol) {
case ICLASS: annotateIclass(explanation,sizeof(explanation),frame,data_len); break;
@ -697,7 +704,7 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
case ISO_14443B: annotateIso14443b(explanation,sizeof(explanation),frame,data_len); break;
case TOPAZ: annotateTopaz(explanation,sizeof(explanation),frame,data_len); break;
case ISO_7816_4: annotateIso7816(explanation,sizeof(explanation),frame,data_len); break;
case LEGIC: annotateLegic(explanation,sizeof(explanation),frame,data_len); break;
default: break;
}
}

@ -326,8 +326,11 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
#define MFDES_AUTHENTICATION_FRAME 0xAF
// LEGIC Commands
#define LEGIC_HSK_22 0x19
#define LEGIC_HSK_256 0x39
#define LEGIC_MIM_22 0x0D
#define LEGIC_MIM_256 0x1D
#define LEGIC_MIM_1024 0x3D
#define LEGIC_ACK_22 0x19
#define LEGIC_ACK_256 0x39
#define LEGIC_READ 0x01
#define LEGIC_WRITE 0x00