mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-02-24 07:34:40 +08:00
Fixed bug with iclass dump which prevented saving to file
This commit is contained in:
parent
0cd2a41ac0
commit
428d622160
2 changed files with 6 additions and 7 deletions
|
@ -1704,7 +1704,7 @@ void ReaderIClass_Replay(uint8_t arg0, uint8_t *MAC) {
|
||||||
//Set card_data to all zeroes, we'll fill it with data
|
//Set card_data to all zeroes, we'll fill it with data
|
||||||
memset(card_data,0x0,USB_CMD_DATA_SIZE);
|
memset(card_data,0x0,USB_CMD_DATA_SIZE);
|
||||||
uint8_t failedRead =0;
|
uint8_t failedRead =0;
|
||||||
uint8_t stored_data_length =0;
|
uint32_t stored_data_length =0;
|
||||||
//then loop around remaining blocks
|
//then loop around remaining blocks
|
||||||
for(int block=0; block < cardsize; block++){
|
for(int block=0; block < cardsize; block++){
|
||||||
|
|
||||||
|
@ -1723,7 +1723,6 @@ void ReaderIClass_Replay(uint8_t arg0, uint8_t *MAC) {
|
||||||
//Fill up the buffer
|
//Fill up the buffer
|
||||||
memcpy(card_data+stored_data_length,resp,8);
|
memcpy(card_data+stored_data_length,resp,8);
|
||||||
stored_data_length += 8;
|
stored_data_length += 8;
|
||||||
|
|
||||||
if(stored_data_length +8 > USB_CMD_DATA_SIZE)
|
if(stored_data_length +8 > USB_CMD_DATA_SIZE)
|
||||||
{//Time to send this off and start afresh
|
{//Time to send this off and start afresh
|
||||||
cmd_send(CMD_ACK,
|
cmd_send(CMD_ACK,
|
||||||
|
@ -1742,6 +1741,7 @@ void ReaderIClass_Replay(uint8_t arg0, uint8_t *MAC) {
|
||||||
Dbprintf("Failed to dump block %d", block);
|
Dbprintf("Failed to dump block %d", block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Send off any remaining data
|
//Send off any remaining data
|
||||||
if(stored_data_length > 0)
|
if(stored_data_length > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -329,8 +329,8 @@ int CmdHFiClassReader_Dump(const char *Cmd)
|
||||||
printvar("MAC", MAC, 4);
|
printvar("MAC", MAC, 4);
|
||||||
|
|
||||||
uint8_t iclass_data[32000] = {0};
|
uint8_t iclass_data[32000] = {0};
|
||||||
uint8_t iclass_datalen = 0;
|
uint32_t iclass_datalen = 0;
|
||||||
uint8_t iclass_blocksFailed = 0;//Set to 1 if dump was incomplete
|
uint32_t iclass_blocksFailed = 0;//Set to 1 if dump was incomplete
|
||||||
|
|
||||||
UsbCommand d = {CMD_READER_ICLASS_REPLAY, {readerType}};
|
UsbCommand d = {CMD_READER_ICLASS_REPLAY, {readerType}};
|
||||||
memcpy(d.d.asBytes, MAC, 4);
|
memcpy(d.d.asBytes, MAC, 4);
|
||||||
|
@ -346,11 +346,11 @@ int CmdHFiClassReader_Dump(const char *Cmd)
|
||||||
}
|
}
|
||||||
if(WaitForResponseTimeout(CMD_ACK,&resp,4500))
|
if(WaitForResponseTimeout(CMD_ACK,&resp,4500))
|
||||||
{
|
{
|
||||||
uint64_t dataLength = resp.arg[0];
|
uint32_t dataLength = resp.arg[0];
|
||||||
iclass_blocksFailed |= resp.arg[1];
|
iclass_blocksFailed |= resp.arg[1];
|
||||||
|
|
||||||
if(dataLength > 0)
|
if(dataLength > 0)
|
||||||
{
|
{
|
||||||
|
PrintAndLog("Got %d bytes data (total so far %d)" ,dataLength,iclass_datalen);
|
||||||
memcpy(iclass_data, resp.d.asBytes,dataLength);
|
memcpy(iclass_data, resp.d.asBytes,dataLength);
|
||||||
iclass_datalen += dataLength;
|
iclass_datalen += dataLength;
|
||||||
}else
|
}else
|
||||||
|
@ -368,7 +368,6 @@ int CmdHFiClassReader_Dump(const char *Cmd)
|
||||||
CSN[0],CSN[1],CSN[2],CSN[3],
|
CSN[0],CSN[1],CSN[2],CSN[3],
|
||||||
CSN[4],CSN[5],CSN[6],CSN[7]);
|
CSN[4],CSN[5],CSN[6],CSN[7]);
|
||||||
saveFile(filename,"bin",iclass_data, iclass_datalen );
|
saveFile(filename,"bin",iclass_data, iclass_datalen );
|
||||||
|
|
||||||
}
|
}
|
||||||
//Aaaand we're finished
|
//Aaaand we're finished
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue