mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
ADD: hooking up the new felica commands
This commit is contained in:
parent
9757a8f078
commit
8136decadd
5 changed files with 33 additions and 14 deletions
|
@ -129,6 +129,7 @@ CMDSRCS = crapto1/crapto1.c \
|
|||
cmdhfmfdes.c \
|
||||
cmdhftopaz.c \
|
||||
cmdhfemv.c \
|
||||
cmdhffelica.c \
|
||||
cmdhw.c \
|
||||
cmdlf.c \
|
||||
cmdlfawid.c \
|
||||
|
|
|
@ -404,6 +404,12 @@ void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
|
|||
}
|
||||
}
|
||||
|
||||
void annotateFelica(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
|
||||
switch(cmd[0]){
|
||||
default : snprintf(exp,size ,"?");break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief iso14443A_CRC_check Checks CRC in command or response
|
||||
* @param isResponse
|
||||
|
@ -633,6 +639,7 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
|
|||
break;
|
||||
case ISO_14443B:
|
||||
case TOPAZ:
|
||||
case FELICA:
|
||||
crcStatus = iso14443B_CRC_check(isResponse, frame, data_len);
|
||||
break;
|
||||
case ISO_14443A:
|
||||
|
@ -701,6 +708,7 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
|
|||
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;
|
||||
case FELICA: annotateFelica(explanation,sizeof(explanation),frame,data_len); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
@ -756,6 +764,7 @@ int usage_hf_list(){
|
|||
PrintAndLog(" topaz - interpret data as topaz communications");
|
||||
PrintAndLog(" 7816 - interpret data as iso7816-4 communications");
|
||||
PrintAndLog(" legic - interpret data as LEGIC communications");
|
||||
PrintAndLog(" felica - interpret data as ISO18092 / FeliCa communications");
|
||||
PrintAndLog("");
|
||||
PrintAndLog("example: hf list 14a f");
|
||||
PrintAndLog(" hf list iclass");
|
||||
|
@ -818,6 +827,7 @@ int CmdHFList(const char *Cmd) {
|
|||
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, "felica")==0) protocol = FELICA;
|
||||
else if(strcmp(type, "raw")== 0) protocol = -1;//No crc, no annotations
|
||||
else errors = true;
|
||||
|
||||
|
@ -862,6 +872,8 @@ int CmdHFList(const char *Cmd) {
|
|||
PrintAndLog("LEGIC - Timings are in ticks (1us == 1.5ticks)");
|
||||
if ( protocol == ISO_15693 )
|
||||
PrintAndLog("ISO15693 - Timings are not as accurate");
|
||||
if ( protocol == FELICA )
|
||||
PrintAndLog("ISO18092 / FeliCa - Timings are not as accurate");
|
||||
|
||||
PrintAndLog("");
|
||||
PrintAndLog(" Start | End | Src | Data (! denotes parity error) | CRC | Annotation |");
|
||||
|
@ -913,6 +925,14 @@ int CmdHFSearch(const char *Cmd){
|
|||
return ans;
|
||||
}
|
||||
|
||||
/*
|
||||
ans = CmdHFFelicaReader("s");
|
||||
if (ans) {
|
||||
PrintAndLog("\nValid ISO18092 / FeliCa Found - Quiting Search\n");
|
||||
return ans;
|
||||
}
|
||||
*/
|
||||
|
||||
PrintAndLog("\nno known/supported 13.56 MHz tags found\n");
|
||||
return 0;
|
||||
}
|
||||
|
@ -939,6 +959,7 @@ static command_t CommandTable[] = {
|
|||
#ifdef WITH_EMV
|
||||
{"emv", CmdHFEmv, 1, "{ EMV RFIDs... }"},
|
||||
#endif
|
||||
{"felica", CmdHFFelica, 1, "{ ISO18092 / Felica RFIDs... }"},
|
||||
{"legic", CmdHFLegic, 1, "{ LEGIC RFIDs... }"},
|
||||
{"iclass", CmdHFiClass, 1, "{ ICLASS RFIDs... }"},
|
||||
{"mf", CmdHFMF, 1, "{ MIFARE RFIDs... }"},
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
#include "graph.h"
|
||||
#include "ui.h"
|
||||
#include "cmdparser.h"
|
||||
#include "cmdhf14a.h" // 14443 a
|
||||
#include "cmdhf14b.h" // 14443 b
|
||||
#include "cmdhf14a.h" // ISO14443-A
|
||||
#include "cmdhf14b.h" // ISO14443-B
|
||||
#include "cmdhf15.h" // ISO15693
|
||||
#include "cmdhfepa.h"
|
||||
#include "cmdhflegic.h" // LEGIC
|
||||
|
@ -29,9 +29,10 @@
|
|||
#include "cmdhfmfdes.h" // DESFIRE
|
||||
#include "cmdhftopaz.h" // TOPAZ
|
||||
#include "cmdhfemv.h" // EMV
|
||||
#include "cmdhffelica.h" // ISO18092 / FeliCa
|
||||
#include "protocols.h"
|
||||
#include "parity.h" // oddparity
|
||||
#include "iso15693tools.h" // iso15693 crc
|
||||
#include "iso15693tools.h" // ISO15693 crc
|
||||
|
||||
extern int CmdHF(const char *Cmd);
|
||||
extern int CmdHFTune(const char *Cmd);
|
||||
|
|
|
@ -96,10 +96,7 @@ int CmdHFFelicaSim(const char *Cmd) {
|
|||
uint8_t cmdp = 0;
|
||||
uint8_t uid[10] = {0,0,0,0,0,0,0,0,0,0};
|
||||
int uidlen = 0;
|
||||
bool useUIDfromEML = true;
|
||||
bool setEmulatorMem = false;
|
||||
bool verbose = false;
|
||||
nonces_t data[1];
|
||||
|
||||
while(param_getchar(Cmd, cmdp) != 0x00 && !errors) {
|
||||
switch(param_getchar(Cmd, cmdp)) {
|
||||
|
@ -120,7 +117,6 @@ int CmdHFFelicaSim(const char *Cmd) {
|
|||
param_gethex_ex(Cmd, cmdp+1, uid, &uidlen);
|
||||
if (!errors) {
|
||||
PrintAndLog("Emulating ISO18092/FeliCa tag with %d byte UID (%s)", uidlen>>1, sprint_hex(uid, uidlen>>1));
|
||||
useUIDfromEML = false;
|
||||
}
|
||||
cmdp += 2;
|
||||
break;
|
||||
|
@ -131,7 +127,6 @@ int CmdHFFelicaSim(const char *Cmd) {
|
|||
break;
|
||||
case 'e':
|
||||
case 'E':
|
||||
setEmulatorMem = true;
|
||||
cmdp++;
|
||||
break;
|
||||
default:
|
||||
|
@ -150,6 +145,7 @@ int CmdHFFelicaSim(const char *Cmd) {
|
|||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
|
||||
if ( verbose )
|
||||
PrintAndLog("Press pm3-button to abort simulation");
|
||||
|
||||
while( !ukbhit() ){
|
||||
|
@ -304,14 +300,14 @@ int CmdHFFelicaCmdRaw(const char *cmd) {
|
|||
|
||||
if (reply) {
|
||||
if (active_select)
|
||||
waitCmd(1);
|
||||
waitCmdFelica(1);
|
||||
if (datalen > 0)
|
||||
waitCmd(0);
|
||||
waitCmdFelica(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void waitCmd(uint8_t iSelect) {
|
||||
void waitCmdFelica(uint8_t iSelect) {
|
||||
UsbCommand resp;
|
||||
uint16_t len = 0;
|
||||
|
||||
|
|
|
@ -37,5 +37,5 @@ extern int usage_hf_felica_sim(void);
|
|||
extern int usage_hf_felica_sniff(void);
|
||||
extern int usage_hf_fFelica_raw(void);
|
||||
|
||||
void waitCmd(uint8_t iSelect);
|
||||
void waitCmdFelica(uint8_t iSelect);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue