* hf legic: use CMD_ACK instead of Dbprintf
* hf search: add support for Legic tags
- Added `hf plot` (piwi)
- Added `hf mfp mad` `hf mf mad` parsing MAD1 and MAD2 (Merlok)
- Added `hf mfp ndef` `hf mf ndef` parsing NDEF records (Merlok)
- Added `hf plot` (piwi)
- Added `hf mfp mad` `hf mf mad` parsing MAD1 and MAD2 (Merlok)
- Added `hf mfp ndef` `hf mf ndef` parsing NDEF records (Merlok)
+- Added Legic detection to `hf search` (dnet)
// establish shared secret and detect card type
DbpString("Reading card ...");
uint8_t card_type = setup_phase(SESSION_IV);
// establish shared secret and detect card type
DbpString("Reading card ...");
uint8_t card_type = setup_phase(SESSION_IV);
if(init_card(card_type, &card) != 0) {
if(init_card(card_type, &card) != 0) {
- Dbprintf("No or unknown card found, aborting");
for(uint16_t i = 0; i < bytes; ++i) {
int16_t byte = read_byte(offset + i, card.cmdsize);
if(byte == -1) {
for(uint16_t i = 0; i < bytes; ++i) {
int16_t byte = read_byte(offset + i, card.cmdsize);
if(byte == -1) {
- Dbprintf("operation failed @ 0x%03.3x", bytes);
goto OUT;
}
BigBuf[i] = byte;
}
goto OUT;
}
BigBuf[i] = byte;
}
- // OK
- Dbprintf("Card (MIM %i) read, use 'hf legic decode' or", card.cardsize);
- Dbprintf("'data hexsamples %d' to view results", (bytes+7) & ~7);
-
+ cmd_send(CMD_ACK, result, bytes, 0, &card, sizeof(card));
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
LED_B_OFF();
LED_C_OFF();
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
LED_B_OFF();
LED_C_OFF();
PrintAndLog("\nValid ISO14443B Tag Found - Quiting Search\n");
return ans;
}
PrintAndLog("\nValid ISO14443B Tag Found - Quiting Search\n");
return ans;
}
+ ans = CmdLegicRFRead("");
+ if (ans == 0) {
+ PrintAndLog("\nValid Legic Tag Found - Quiting Search\n");
+ return ans;
+ }
PrintAndLog("\nno known/supported 13.56 MHz tags found\n");
return 0;
}
PrintAndLog("\nno known/supported 13.56 MHz tags found\n");
return 0;
}
#include "cmdparser.h"
#include "cmdmain.h"
#include "util.h"
#include "cmdparser.h"
#include "cmdmain.h"
#include "util.h"
+#include "../include/legic.h"
static int CmdHelp(const char *Cmd);
static int CmdHelp(const char *Cmd);
if(byte_count + offset > 1024) byte_count = 1024 - offset;
UsbCommand c={CMD_READER_LEGIC_RF, {offset, byte_count, 0}};
SendCommand(&c);
if(byte_count + offset > 1024) byte_count = 1024 - offset;
UsbCommand c={CMD_READER_LEGIC_RF, {offset, byte_count, 0}};
SendCommand(&c);
+ UsbCommand resp;
+ WaitForResponse(CMD_ACK,&resp);
+ switch (resp.arg[0]) {
+ case 0:
+ PrintAndLog("Card (MIM %i) read, use 'hf legic decode' or", ((legic_card_select_t*)resp.d.asBytes)->cardsize);
+ PrintAndLog("'data hexsamples %d' to view results", (resp.arg[1] + 7) & ~7);
+ break;
+ case 1:
+ PrintAndLog("No or unknown card found, aborting");
+ break;
+ case 2:
+ PrintAndLog("operation failed @ 0x%03.3x", resp.arg[1]);
+ break;
+ }
+ return resp.arg[0];
}
int CmdLegicLoad(const char *Cmd)
}
int CmdLegicLoad(const char *Cmd)