mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
fast mode on legic cmds
This commit is contained in:
parent
93171e3d74
commit
e7362d5e6a
1 changed files with 19 additions and 1 deletions
|
@ -832,10 +832,15 @@ void legic_chk_iv(uint32_t *iv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void legic_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) {
|
void legic_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) {
|
||||||
|
// fast push mode
|
||||||
|
conn.block_after_ACK = true;
|
||||||
for (size_t i = offset; i < numofbytes; i += PM3_CMD_DATA_SIZE) {
|
for (size_t i = offset; i < numofbytes; i += PM3_CMD_DATA_SIZE) {
|
||||||
|
|
||||||
size_t len = MIN((numofbytes - i), PM3_CMD_DATA_SIZE);
|
size_t len = MIN((numofbytes - i), PM3_CMD_DATA_SIZE);
|
||||||
|
if (len == numofbytes - i) {
|
||||||
|
// Disable fast mode on last packet
|
||||||
|
conn.block_after_ACK = false;
|
||||||
|
}
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommandOLD(CMD_LEGIC_ESET, i, len, 0, src + i, len);
|
SendCommandOLD(CMD_LEGIC_ESET, i, len, 0, src + i, len);
|
||||||
}
|
}
|
||||||
|
@ -1039,11 +1044,18 @@ static int CmdLegicRestore(const char *Cmd) {
|
||||||
|
|
||||||
PrintAndLogEx(SUCCESS, "Restoring to card");
|
PrintAndLogEx(SUCCESS, "Restoring to card");
|
||||||
|
|
||||||
|
// fast push mode
|
||||||
|
conn.block_after_ACK = true;
|
||||||
|
|
||||||
// transfer to device
|
// transfer to device
|
||||||
PacketResponseNG resp;
|
PacketResponseNG resp;
|
||||||
for (size_t i = 7; i < numofbytes; i += PM3_CMD_DATA_SIZE) {
|
for (size_t i = 7; i < numofbytes; i += PM3_CMD_DATA_SIZE) {
|
||||||
|
|
||||||
size_t len = MIN((numofbytes - i), PM3_CMD_DATA_SIZE);
|
size_t len = MIN((numofbytes - i), PM3_CMD_DATA_SIZE);
|
||||||
|
if (len == numofbytes - i) {
|
||||||
|
// Disable fast mode on last packet
|
||||||
|
conn.block_after_ACK = false;
|
||||||
|
}
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommandOLD(CMD_WRITER_LEGIC_RF, i, len, 0x55, data + i, len);
|
SendCommandOLD(CMD_WRITER_LEGIC_RF, i, len, 0x55, data + i, len);
|
||||||
|
|
||||||
|
@ -1227,6 +1239,8 @@ static int CmdLegicWipe(const char *Cmd) {
|
||||||
legic_print_type(card.cardsize, 0);
|
legic_print_type(card.cardsize, 0);
|
||||||
|
|
||||||
PrintAndLogEx(SUCCESS, "Erasing");
|
PrintAndLogEx(SUCCESS, "Erasing");
|
||||||
|
// fast push mode
|
||||||
|
conn.block_after_ACK = true;
|
||||||
|
|
||||||
// transfer to device
|
// transfer to device
|
||||||
PacketResponseNG resp;
|
PacketResponseNG resp;
|
||||||
|
@ -1235,6 +1249,10 @@ static int CmdLegicWipe(const char *Cmd) {
|
||||||
printf(".");
|
printf(".");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
size_t len = MIN((card.cardsize - i), PM3_CMD_DATA_SIZE);
|
size_t len = MIN((card.cardsize - i), PM3_CMD_DATA_SIZE);
|
||||||
|
if (len == card.cardsize - i) {
|
||||||
|
// Disable fast mode on last packet
|
||||||
|
conn.block_after_ACK = false;
|
||||||
|
}
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommandOLD(CMD_WRITER_LEGIC_RF, i, len, 0x55, data + i, len);
|
SendCommandOLD(CMD_WRITER_LEGIC_RF, i, len, 0x55, data + i, len);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue