mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-03-19 19:38:52 +08:00
Add clearCommandBuffer before SendCommand
adjust output of mfu rdbl to be consistent fix output of mfu dump in case startPage was specified. (also was missing "i" in second print...)
This commit is contained in:
parent
e406dd5cc9
commit
22342f6dfe
2 changed files with 24 additions and 13 deletions
|
@ -305,7 +305,7 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
|
|||
}
|
||||
|
||||
for (int i = 0; i < blocks; i++){
|
||||
if ((i*4) + 4 > CARD_MEMORY_SIZE) {
|
||||
if ((i*4) + 4 >= CARD_MEMORY_SIZE) {
|
||||
Dbprintf("Data exceeds buffer!!");
|
||||
break;
|
||||
}
|
||||
|
@ -337,16 +337,11 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
|
|||
if (MF_DBGLEVEL >= MF_DBG_EXTENDED) Dbprintf("Blocks read %d", countblocks);
|
||||
|
||||
countblocks *= 4;
|
||||
/*
|
||||
LED_B_ON();
|
||||
for(size_t i=0; i < countblocks; i += USB_CMD_DATA_SIZE) {
|
||||
size_t len = MIN((countblocks - i),USB_CMD_DATA_SIZE);
|
||||
cmd_send(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K,i,len,countblocks,dataout+i,len);
|
||||
}
|
||||
*/
|
||||
|
||||
cmd_send(CMD_ACK, 1, countblocks, BigBuf_max_traceLen(), 0, 0);
|
||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||
LEDsoff();
|
||||
BigBuf_free();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -102,17 +102,20 @@ char *getUlev1CardSizeStr( uint8_t fsize ){
|
|||
|
||||
static void ul_switch_on_field(void) {
|
||||
UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0}};
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
}
|
||||
|
||||
void ul_switch_off_field(void) {
|
||||
UsbCommand c = {CMD_READER_ISO_14443a, {0, 0, 0}};
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
}
|
||||
|
||||
static int ul_send_cmd_raw( uint8_t *cmd, uint8_t cmdlen, uint8_t *response, uint16_t responseLength ) {
|
||||
UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_RAW | ISO14A_NO_DISCONNECT | ISO14A_APPEND_CRC, cmdlen, 0}};
|
||||
memcpy(c.d.asBytes, cmd, cmdlen);
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) return -1;
|
||||
|
@ -129,6 +132,7 @@ static int ul_send_cmd_raw_crc( uint8_t *cmd, uint8_t cmdlen, uint8_t *response,
|
|||
c.arg[0] |= ISO14A_APPEND_CRC;
|
||||
|
||||
memcpy(c.d.asBytes, cmd, cmdlen);
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) return -1;
|
||||
|
@ -193,6 +197,7 @@ static int ulc_authentication( uint8_t *key, bool switch_off_field ){
|
|||
|
||||
UsbCommand c = {CMD_MIFAREUC_AUTH, {switch_off_field}};
|
||||
memcpy(c.d.asBytes, key, 16);
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
if ( !WaitForResponseTimeout(CMD_ACK, &resp, 1500) ) return 0;
|
||||
|
@ -955,6 +960,7 @@ int CmdHF14AMfUWrBl(const char *Cmd){
|
|||
memcpy(c.d.asBytes+4,authKeyPtr,4);
|
||||
}
|
||||
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
|
||||
|
@ -1065,13 +1071,16 @@ int CmdHF14AMfURdBl(const char *Cmd){
|
|||
memcpy(c.d.asBytes,authKeyPtr,4);
|
||||
}
|
||||
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
|
||||
uint8_t isOK = resp.arg[0] & 0xff;
|
||||
if (isOK) {
|
||||
uint8_t *data = resp.d.asBytes;
|
||||
PrintAndLog("Block: %0d (0x%02X) [ %s]", blockNo, blockNo, sprint_hex(data, 4));
|
||||
PrintAndLog("\nBlock# | Data | Ascii");
|
||||
PrintAndLog("-----------------------------");
|
||||
PrintAndLog("%02d/0x%02X | %s| %.4s\n", blockNo, blockNo, sprint_hex(data, 4), data);
|
||||
}
|
||||
else {
|
||||
PrintAndLog("Failed reading block: (%02x)", isOK);
|
||||
|
@ -1256,6 +1265,8 @@ int CmdHF14AMfUDump(const char *Cmd){
|
|||
|
||||
memcpy(c.d.asBytes, authKeyPtr, dataLen);
|
||||
}
|
||||
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
UsbCommand resp;
|
||||
if (!WaitForResponseTimeout(CMD_ACK, &resp,1500)) {
|
||||
|
@ -1314,11 +1325,11 @@ int CmdHF14AMfUDump(const char *Cmd){
|
|||
}
|
||||
}
|
||||
|
||||
PrintAndLog("Block# | Data |lck| Ascii");
|
||||
PrintAndLog("\nBlock# | Data |lck| Ascii");
|
||||
PrintAndLog("---------------------------------");
|
||||
for (i = 0; i < Pages; ++i) {
|
||||
if ( i < 3 ) {
|
||||
PrintAndLog("%02d/0x%02X | %s | | ", i, i, sprint_hex(data + i * 4, 4));
|
||||
PrintAndLog("%02d/0x%02X | %s| | ", i+startPage, i+startPage, sprint_hex(data + i * 4, 4));
|
||||
continue;
|
||||
}
|
||||
switch(i){
|
||||
|
@ -1365,10 +1376,10 @@ int CmdHF14AMfUDump(const char *Cmd){
|
|||
case 43: tmplockbit = bit2[9]; break; //auth1
|
||||
default: break;
|
||||
}
|
||||
PrintAndLog("%02d/0x%02X | %s | %d | %.4s", i, sprint_hex(data + i * 4, 4), tmplockbit, data+i*4);
|
||||
PrintAndLog("%02d/0x%02X | %s| %d | %.4s", i+startPage, i+startPage, sprint_hex(data + i * 4, 4), tmplockbit, data+i*4);
|
||||
}
|
||||
PrintAndLog("---------------------------------");
|
||||
|
||||
|
||||
// user supplied filename?
|
||||
if (fileNlen < 1) {
|
||||
// UID = data 0-1-2 4-5-6-7 (skips a beat)
|
||||
|
@ -1558,6 +1569,7 @@ int CmdHF14AMfucSetPwd(const char *Cmd){
|
|||
|
||||
UsbCommand c = {CMD_MIFAREUC_SETPWD};
|
||||
memcpy( c.d.asBytes, pwd, 16);
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
|
||||
UsbCommand resp;
|
||||
|
@ -1606,6 +1618,7 @@ int CmdHF14AMfucSetUid(const char *Cmd){
|
|||
// read block2.
|
||||
c.cmd = CMD_MIFAREU_READBL;
|
||||
c.arg[0] = 2;
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
if (!WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
|
||||
PrintAndLog("Command execute timeout");
|
||||
|
@ -1623,6 +1636,7 @@ int CmdHF14AMfucSetUid(const char *Cmd){
|
|||
c.d.asBytes[1] = uid[1];
|
||||
c.d.asBytes[2] = uid[2];
|
||||
c.d.asBytes[3] = 0x88 ^ uid[0] ^ uid[1] ^ uid[2];
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
if (!WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
|
||||
PrintAndLog("Command execute timeout");
|
||||
|
@ -1635,6 +1649,7 @@ int CmdHF14AMfucSetUid(const char *Cmd){
|
|||
c.d.asBytes[1] = uid[4];
|
||||
c.d.asBytes[2] = uid[5];
|
||||
c.d.asBytes[3] = uid[6];
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
if (!WaitForResponseTimeout(CMD_ACK,&resp,1500) ) {
|
||||
PrintAndLog("Command execute timeout");
|
||||
|
@ -1647,6 +1662,7 @@ int CmdHF14AMfucSetUid(const char *Cmd){
|
|||
c.d.asBytes[1] = oldblock2[1];
|
||||
c.d.asBytes[2] = oldblock2[2];
|
||||
c.d.asBytes[3] = oldblock2[3];
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
if (!WaitForResponseTimeout(CMD_ACK,&resp,1500) ) {
|
||||
PrintAndLog("Command execute timeout");
|
||||
|
|
Loading…
Add table
Reference in a new issue