mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 02:27:26 -07:00
chg: legic standalone - now saves read cards to flashmemory (RDV4)\n also simulates correct cardtype.\n It goes direct into recording / reading a tag. Once a complete dump is done, it starts to simulate
This commit is contained in:
parent
7af2457158
commit
c8b51ccf25
4 changed files with 176 additions and 35 deletions
|
@ -404,6 +404,10 @@ bool write_byte(uint16_t index, uint8_t byte, uint8_t addr_sz) {
|
|||
//
|
||||
// Only this functions are public / called from appmain.c
|
||||
//-----------------------------------------------------------------------------
|
||||
legic_card_select_t* getLegicCardInfo(void) {
|
||||
return &card;
|
||||
}
|
||||
|
||||
void LegicRfInfo(void) {
|
||||
// configure ARM and FPGA
|
||||
init_reader(false);
|
||||
|
@ -441,8 +445,45 @@ OUT:
|
|||
StopTicks();
|
||||
}
|
||||
|
||||
int LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv) {
|
||||
int read_success = 0;
|
||||
int LegicRfReaderEx(uint16_t offset, uint16_t len, uint8_t iv) {
|
||||
|
||||
int res = PM3_SUCCESS;
|
||||
|
||||
// configure ARM and FPGA
|
||||
init_reader(false);
|
||||
|
||||
// establish shared secret and detect card type
|
||||
uint8_t card_type = setup_phase(iv);
|
||||
if (init_card(card_type, &card) != 0) {
|
||||
res = PM3_ESOFT;
|
||||
goto OUT;
|
||||
}
|
||||
|
||||
// do not read beyond card memory
|
||||
if (len + offset > card.cardsize) {
|
||||
len = card.cardsize - offset;
|
||||
}
|
||||
|
||||
for (uint16_t i = 0; i < len; ++i) {
|
||||
int16_t byte = read_byte(offset + i, card.cmdsize);
|
||||
if (byte == -1) {
|
||||
res = PM3_EOVFLOW;
|
||||
goto OUT;
|
||||
}
|
||||
legic_mem[i] = byte;
|
||||
|
||||
if (i < 4) {
|
||||
card.uid[i] = byte;
|
||||
}
|
||||
}
|
||||
|
||||
OUT:
|
||||
switch_off();
|
||||
StopTicks();
|
||||
return res;
|
||||
}
|
||||
|
||||
void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv) {
|
||||
// configure ARM and FPGA
|
||||
init_reader(false);
|
||||
|
||||
|
@ -465,16 +506,18 @@ int LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv) {
|
|||
goto OUT;
|
||||
}
|
||||
legic_mem[i] = byte;
|
||||
|
||||
if (i < 4) {
|
||||
card.uid[i] = byte;
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
read_success = 1;
|
||||
reply_old(CMD_ACK, 1, len, 0, legic_mem, len);
|
||||
|
||||
OUT:
|
||||
switch_off();
|
||||
StopTicks();
|
||||
return read_success;
|
||||
}
|
||||
|
||||
void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue