mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 18:48:13 -07:00
ADD: 'hf list 15' - added annotation for ISO15693
This commit is contained in:
parent
d21ab51d38
commit
508fa76915
3 changed files with 41 additions and 18 deletions
|
@ -422,11 +422,10 @@ uint8_t iso14443A_CRC_check(bool isResponse, uint8_t* data, uint8_t len)
|
|||
if(isResponse & (len < 6)) return 2;
|
||||
|
||||
ComputeCrc14443(CRC_14443_A, data, len-2, &b1, &b2);
|
||||
if (b1 != data[len-2] || b2 != data[len-1]) {
|
||||
if (b1 != data[len-2] || b2 != data[len-1])
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -446,9 +445,9 @@ uint8_t iso14443B_CRC_check(bool isResponse, uint8_t* data, uint8_t len)
|
|||
if(len <= 2) return 2;
|
||||
|
||||
ComputeCrc14443(CRC_14443_B, data, len-2, &b1, &b2);
|
||||
if(b1 != data[len-2] || b2 != data[len-1]) {
|
||||
if(b1 != data[len-2] || b2 != data[len-1])
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -511,6 +510,19 @@ uint8_t iclass_CRC_check(bool isResponse, uint8_t* data, uint8_t len)
|
|||
ComputeCrc14443(CRC_ICLASS, data, len-2, &b1, &b2);
|
||||
return b1 == data[len -2] && b2 == data[len-1];
|
||||
}
|
||||
// CRC Iso15693Crc(data,datalen)
|
||||
uint8_t iso15693_CRC_check(bool isResponse, uint8_t* data, uint8_t len) {
|
||||
if ( len <= 3) return 2;
|
||||
|
||||
uint16_t crc = Iso15693Crc(data, len-2);
|
||||
uint8_t b1 = crc & 0xFF;
|
||||
uint8_t b2 = ((crc >> 8) & 0xFF);
|
||||
|
||||
if ( b1 != data[len-2] || b2 != data[len-1] )
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool is_last_record(uint16_t tracepos, uint8_t *trace, uint16_t traceLen)
|
||||
{
|
||||
|
@ -626,6 +638,9 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
|
|||
case MFDES:
|
||||
crcStatus = iso14443A_CRC_check(isResponse, frame, data_len);
|
||||
break;
|
||||
case ISO_15693:
|
||||
crcStatus = iso15693_CRC_check(isResponse, frame, data_len);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -684,6 +699,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 ISO_15693: annotateIso15693(explanation,sizeof(explanation),frame,data_len); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
@ -729,7 +745,8 @@ int usage_hf_list(){
|
|||
PrintAndLog(" raw - just show raw data without annotations");
|
||||
PrintAndLog(" 14a - interpret data as iso14443a communications");
|
||||
PrintAndLog(" 14b - interpret data as iso14443b communications");
|
||||
PrintAndLog(" des - interpret data as DESFire communications");
|
||||
PrintAndLog(" 15 - interpret data as iso15693 communications");
|
||||
PrintAndLog(" des - interpret data as DESFire communications");
|
||||
#ifdef WITH_EMV
|
||||
PrintAndLog(" emv - interpret data as EMV / communications");
|
||||
#endif
|
||||
|
@ -799,6 +816,7 @@ int CmdHFList(const char *Cmd) {
|
|||
else if(strcmp(type, "7816")== 0) protocol = ISO_7816_4;
|
||||
else if(strcmp(type, "des")== 0) protocol = MFDES;
|
||||
else if(strcmp(type, "legic")==0) protocol = LEGIC;
|
||||
else if(strcmp(type, "15")==0) protocol = ISO_15693;
|
||||
else if(strcmp(type, "raw")== 0) protocol = -1;//No crc, no annotations
|
||||
else errors = true;
|
||||
|
||||
|
@ -837,6 +855,9 @@ int CmdHFList(const char *Cmd) {
|
|||
PrintAndLog("iClass - Timings are not as accurate");
|
||||
if ( protocol == LEGIC )
|
||||
PrintAndLog("LEGIC - Timings are in ticks (1us == 1.5ticks)");
|
||||
if ( protocol == ISO_15693 )
|
||||
PrintAndLog("ISO15693 - Timings are not as accurate");
|
||||
|
||||
PrintAndLog("");
|
||||
PrintAndLog(" Start | End | Src | Data (! denotes parity error) | CRC | Annotation |");
|
||||
PrintAndLog("------------|------------|-----|-----------------------------------------------------------------|-----|--------------------|");
|
||||
|
|
|
@ -18,19 +18,20 @@
|
|||
#include "graph.h"
|
||||
#include "ui.h"
|
||||
#include "cmdparser.h"
|
||||
#include "cmdhf14a.h"
|
||||
#include "cmdhf14b.h"
|
||||
#include "cmdhf15.h"
|
||||
#include "cmdhf14a.h" // 14443 a
|
||||
#include "cmdhf14b.h" // 14443 b
|
||||
#include "cmdhf15.h" // ISO15693
|
||||
#include "cmdhfepa.h"
|
||||
#include "cmdhflegic.h" // LEGIC
|
||||
#include "cmdhficlass.h" // ICLASS
|
||||
#include "cmdhfmf.h" // CLASSIC
|
||||
#include "cmdhfmfu.h" // ULTRALIGHT/NTAG etc
|
||||
#include "cmdhfmfdes.h" // DESFIRE
|
||||
#include "cmdhftopaz.h" // TOPAZ
|
||||
#include "cmdhfemv.h" // EMV
|
||||
#include "cmdhflegic.h" // LEGIC
|
||||
#include "cmdhficlass.h" // ICLASS
|
||||
#include "cmdhfmf.h" // CLASSIC
|
||||
#include "cmdhfmfu.h" // ULTRALIGHT/NTAG etc
|
||||
#include "cmdhfmfdes.h" // DESFIRE
|
||||
#include "cmdhftopaz.h" // TOPAZ
|
||||
#include "cmdhfemv.h" // EMV
|
||||
#include "protocols.h"
|
||||
#include "parity.h" // oddparity
|
||||
#include "parity.h" // oddparity
|
||||
#include "iso15693tools.h" // iso15693 crc
|
||||
|
||||
extern int CmdHF(const char *Cmd);
|
||||
extern int CmdHFTune(const char *Cmd);
|
||||
|
|
|
@ -266,6 +266,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
|
|||
#define ISO_7816_4 4
|
||||
#define MFDES 5
|
||||
#define LEGIC 6
|
||||
#define ISO_15693 7
|
||||
|
||||
//-- Picopass fuses
|
||||
#define FUSE_FPERS 0x80
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue