}
break;
}
- case ICLASS_CMD_SELECT: snprintf(exp,size, "SELECT"); break;
- case ICLASS_CMD_PAGESEL: snprintf(exp,size, "PAGESEL(%d)", cmd[1]); break;
- case ICLASS_CMD_READCHECK_KC:snprintf(exp,size, "READCHECK[Kc](%d)", cmd[1]); break;
- case ICLASS_CMD_READCHECK_KD:snprintf(exp,size, "READCHECK[Kd](%d)", cmd[1]); break;
- case ICLASS_CMD_CHECK: snprintf(exp,size, "CHECK"); break;
- case ICLASS_CMD_DETECT: snprintf(exp,size, "DETECT"); break;
- case ICLASS_CMD_HALT: snprintf(exp,size, "HALT"); break;
- case ICLASS_CMD_UPDATE: snprintf(exp,size, "UPDATE(%d)",cmd[1]); break;
- case ICLASS_CMD_ACT: snprintf(exp,size, "ACT"); break;
- case ICLASS_CMD_READ4: snprintf(exp,size, "READ4(%d)",cmd[1]); break;
- default: snprintf(exp,size, "?"); break;
+ case ICLASS_CMD_SELECT: snprintf(exp,size, "SELECT"); break;
+ case ICLASS_CMD_PAGESEL: snprintf(exp,size, "PAGESEL(%d)", cmd[1]); break;
+ case ICLASS_CMD_READCHECK_KC: snprintf(exp,size, "READCHECK[Kc](%d)", cmd[1]); break;
+ case ICLASS_CMD_READCHECK_KD: snprintf(exp,size, "READCHECK[Kd](%d)", cmd[1]); break;
+ case ICLASS_CMD_CHECK_KC:
+ case ICLASS_CMD_CHECK_KD: snprintf(exp,size, "CHECK"); break;
+ case ICLASS_CMD_DETECT: snprintf(exp,size, "DETECT"); break;
+ case ICLASS_CMD_HALT: snprintf(exp,size, "HALT"); break;
+ case ICLASS_CMD_UPDATE: snprintf(exp,size, "UPDATE(%d)",cmd[1]); break;
+ case ICLASS_CMD_ACT: snprintf(exp,size, "ACT"); break;
+ case ICLASS_CMD_READ4: snprintf(exp,size, "READ4(%d)",cmd[1]); break;
+ default: snprintf(exp,size, "?"); break;
}
return;
}
else {
int pos = 1;
switch (cmd[0] & 0x0c) {
- case 0x08: // CID following
+ case 0x08: // CID following
case 0x04: // NAD following
pos = 2;
break;
// adjust for different time scales
if (protocol == ICLASS || protocol == ISO_15693) {
- first_timestamp *= 32;
- timestamp *= 32;
duration *= 32;
}
-
+
//Check the CRC status
uint8_t crcStatus = 2;
if (protocol == ISO_14443A || protocol == PROTO_MIFARE) {
if (duration < 128 * (9 * data_len)) {
line[(data_len-1)/16][((data_len-1)%16) * 4 + 3] = '\'';
- }
+ }
}
-
+
if (data_len == 0) {
- sprintf(line[0]," <empty trace - possible error>");
+ if (protocol == ICLASS && duration == 2048) {
+ sprintf(line[0], " <SOF>");
+ } else {
+ sprintf(line[0], " <empty trace - possible error>");
+ }
}
//--- Draw the CRC column
(j == num_lines-1) ? explanation : "");
}
}
-
+
if (DecodeMifareData(frame, data_len, parityBytes, isResponse, mfData, &mfDataLen)) {
memset(explanation, 0x00, sizeof(explanation));
if (!isResponse) {
if (showWaitCycles && !isResponse && next_record_is_response(tracepos, trace)) {
uint32_t next_timestamp = *((uint32_t *)(trace + tracepos));
- // adjust for different time scales
- if (protocol == ICLASS || protocol == ISO_15693) {
- next_timestamp *= 32;
- }
PrintAndLog(" %10d | %10d | %s | fdt (Frame Delay Time): %d",
(EndOfTransmissionTimestamp - first_timestamp),