mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 05:43:48 -07:00
thinfilm trace
This commit is contained in:
parent
87b4eda2f2
commit
3bc5f7688d
2 changed files with 34 additions and 15 deletions
|
@ -26,13 +26,14 @@ static int usage_trace_list() {
|
||||||
PrintAndLogEx(NORMAL, "Supported <protocol> values:");
|
PrintAndLogEx(NORMAL, "Supported <protocol> values:");
|
||||||
PrintAndLogEx(NORMAL, " raw - just show raw data without annotations");
|
PrintAndLogEx(NORMAL, " raw - just show raw data without annotations");
|
||||||
PrintAndLogEx(NORMAL, " 14a - interpret data as iso14443a communications");
|
PrintAndLogEx(NORMAL, " 14a - interpret data as iso14443a communications");
|
||||||
|
PrintAndLogEx(NORMAL, " thinfilm - interpret data as Thinfilm communications");
|
||||||
|
PrintAndLogEx(NORMAL, " topaz - interpret data as Topaz communications");
|
||||||
PrintAndLogEx(NORMAL, " mf - interpret data as iso14443a communications and decrypt crypto1 stream");
|
PrintAndLogEx(NORMAL, " mf - interpret data as iso14443a communications and decrypt crypto1 stream");
|
||||||
PrintAndLogEx(NORMAL, " 14b - interpret data as iso14443b communications");
|
|
||||||
PrintAndLogEx(NORMAL, " 15 - interpret data as iso15693 communications");
|
|
||||||
PrintAndLogEx(NORMAL, " des - interpret data as DESFire communications");
|
PrintAndLogEx(NORMAL, " des - interpret data as DESFire communications");
|
||||||
PrintAndLogEx(NORMAL, " iclass - interpret data as iclass communications");
|
PrintAndLogEx(NORMAL, " 14b - interpret data as iso14443b communications");
|
||||||
PrintAndLogEx(NORMAL, " topaz - interpret data as topaz communications");
|
|
||||||
PrintAndLogEx(NORMAL, " 7816 - interpret data as iso7816-4 communications");
|
PrintAndLogEx(NORMAL, " 7816 - interpret data as iso7816-4 communications");
|
||||||
|
PrintAndLogEx(NORMAL, " 15 - interpret data as iso15693 communications");
|
||||||
|
PrintAndLogEx(NORMAL, " iclass - interpret data as iclass communications");
|
||||||
PrintAndLogEx(NORMAL, " legic - interpret data as LEGIC communications");
|
PrintAndLogEx(NORMAL, " legic - interpret data as LEGIC communications");
|
||||||
PrintAndLogEx(NORMAL, " felica - interpret data as ISO18092 / FeliCa communications");
|
PrintAndLogEx(NORMAL, " felica - interpret data as ISO18092 / FeliCa communications");
|
||||||
PrintAndLogEx(NORMAL, " hitag - interpret data as Hitag2 / HitagS communications");
|
PrintAndLogEx(NORMAL, " hitag - interpret data as Hitag2 / HitagS communications");
|
||||||
|
@ -254,6 +255,15 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr
|
||||||
case MFDES:
|
case MFDES:
|
||||||
crcStatus = iso14443A_CRC_check(isResponse, frame, data_len);
|
crcStatus = iso14443A_CRC_check(isResponse, frame, data_len);
|
||||||
break;
|
break;
|
||||||
|
case THINFILM:
|
||||||
|
frame[data_len-1] ^= frame[data_len-2];
|
||||||
|
frame[data_len-2] ^= frame[data_len-1];
|
||||||
|
frame[data_len-1] ^= frame[data_len-2];
|
||||||
|
crcStatus = iso14443A_CRC_check(true, frame, data_len);
|
||||||
|
frame[data_len-1] ^= frame[data_len-2];
|
||||||
|
frame[data_len-2] ^= frame[data_len-1];
|
||||||
|
frame[data_len-1] ^= frame[data_len-2];
|
||||||
|
break;
|
||||||
case ISO_15693:
|
case ISO_15693:
|
||||||
crcStatus = iso15693_CRC_check(frame, data_len);
|
crcStatus = iso15693_CRC_check(frame, data_len);
|
||||||
break;
|
break;
|
||||||
|
@ -277,6 +287,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr
|
||||||
&& protocol != ISO_14443B
|
&& protocol != ISO_14443B
|
||||||
&& protocol != ISO_7816_4
|
&& protocol != ISO_7816_4
|
||||||
&& protocol != PROTO_HITAG
|
&& protocol != PROTO_HITAG
|
||||||
|
&& protocol != THINFILM
|
||||||
&& (isResponse || protocol == ISO_14443A)
|
&& (isResponse || protocol == ISO_14443A)
|
||||||
&& (oddparity8(frame[j]) != ((parityBits >> (7 - (j & 0x0007))) & 0x01))) {
|
&& (oddparity8(frame[j]) != ((parityBits >> (7 - (j & 0x0007))) & 0x01))) {
|
||||||
|
|
||||||
|
@ -738,6 +749,7 @@ int CmdTraceList(const char *Cmd) {
|
||||||
else if (strcmp(type, "felica") == 0) protocol = FELICA;
|
else if (strcmp(type, "felica") == 0) protocol = FELICA;
|
||||||
else if (strcmp(type, "mf") == 0) protocol = PROTO_MIFARE;
|
else if (strcmp(type, "mf") == 0) protocol = PROTO_MIFARE;
|
||||||
else if (strcmp(type, "hitag") == 0) protocol = PROTO_HITAG;
|
else if (strcmp(type, "hitag") == 0) protocol = PROTO_HITAG;
|
||||||
|
else if (strcmp(type, "thinfilm") == 0) protocol = THINFILM;
|
||||||
else if (strcmp(type, "raw") == 0) protocol = -1; //No crc, no annotations
|
else if (strcmp(type, "raw") == 0) protocol = -1; //No crc, no annotations
|
||||||
else errors = true;
|
else errors = true;
|
||||||
|
|
||||||
|
@ -791,17 +803,23 @@ int CmdTraceList(const char *Cmd) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(NORMAL, "Start = Start of Start Bit, End = End of last modulation. Src = Source of Transfer");
|
PrintAndLogEx(NORMAL, "Start = Start of Start Bit, End = End of last modulation. Src = Source of Transfer");
|
||||||
if (protocol == ISO_14443A || protocol == PROTO_MIFARE)
|
if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == MFDES || protocol == TOPAZ)
|
||||||
PrintAndLogEx(NORMAL, "iso14443a - All times are in carrier periods (1/13.56Mhz)");
|
PrintAndLogEx(NORMAL, "ISO14443A - All times are in carrier periods (1/13.56Mhz)");
|
||||||
|
if (protocol == THINFILM)
|
||||||
|
PrintAndLogEx(NORMAL, "Thinfilm - All times are in carrier periods (1/13.56Mhz)");
|
||||||
if (protocol == ICLASS)
|
if (protocol == ICLASS)
|
||||||
PrintAndLogEx(NORMAL, "iClass - Timings are not as accurate");
|
PrintAndLogEx(NORMAL, "iClass - Timings are not as accurate");
|
||||||
if (protocol == LEGIC)
|
if (protocol == LEGIC)
|
||||||
PrintAndLogEx(NORMAL, "LEGIC - Reader Mode: Timings are in ticks (1us == 1.5ticks)\n"
|
PrintAndLogEx(NORMAL, "LEGIC - Reader Mode: Timings are in ticks (1us == 1.5ticks)\n"
|
||||||
" Tag Mode: Timings are in sub carrier periods (1/212 kHz == 4.7us)");
|
" Tag Mode: Timings are in sub carrier periods (1/212 kHz == 4.7us)");
|
||||||
|
if (protocol == ISO_14443B)
|
||||||
|
PrintAndLogEx(NORMAL, "ISO14443B"); // Timings ?
|
||||||
if (protocol == ISO_15693)
|
if (protocol == ISO_15693)
|
||||||
PrintAndLogEx(NORMAL, "ISO15693 - Timings are not as accurate");
|
PrintAndLogEx(NORMAL, "ISO15693 - Timings are not as accurate");
|
||||||
if (protocol == ISO_7816_4)
|
if (protocol == ISO_7816_4)
|
||||||
PrintAndLogEx(NORMAL, "ISO7816-4 / Smartcard - Timings N/A yet");
|
PrintAndLogEx(NORMAL, "ISO7816-4 / Smartcard - Timings N/A yet");
|
||||||
|
if (protocol == FELICA)
|
||||||
|
PrintAndLogEx(NORMAL, "Felica"); // Timings ?
|
||||||
if (protocol == PROTO_HITAG)
|
if (protocol == PROTO_HITAG)
|
||||||
PrintAndLogEx(NORMAL, "Hitag2 / HitagS - Timings in ETU (8us)");
|
PrintAndLogEx(NORMAL, "Hitag2 / HitagS - Timings in ETU (8us)");
|
||||||
|
|
||||||
|
|
|
@ -279,6 +279,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
||||||
#define FELICA 8
|
#define FELICA 8
|
||||||
#define PROTO_MIFARE 9
|
#define PROTO_MIFARE 9
|
||||||
#define PROTO_HITAG 10
|
#define PROTO_HITAG 10
|
||||||
|
#define THINFILM 11
|
||||||
|
|
||||||
//-- Picopass fuses
|
//-- Picopass fuses
|
||||||
#define FUSE_FPERS 0x80
|
#define FUSE_FPERS 0x80
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue