From b80cc92c394a5aa9c3886f66cb7e297550c5fe69 Mon Sep 17 00:00:00 2001 From: Sonic803 Date: Wed, 21 Feb 2024 15:41:31 +0100 Subject: [PATCH] Use ST25TB_SR_BLOCK_SIZE instead of 4 --- client/src/cmdhf14b.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 8787f4d17..bd95ed458 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -1646,7 +1646,7 @@ static int CmdHF14BSriWrbl(const char *Cmd) { ); } - int status = write_sr_block(blockno, 4, data); + int status = write_sr_block(blockno, ST25TB_SR_BLOCK_SIZE, data); if (status != PM3_SUCCESS) { return status; } @@ -1903,15 +1903,15 @@ static int CmdHF14BRestore(const char *Cmd) { // reserve memory uint8_t *data = NULL; size_t bytes_read = 0; - int res = pm3_load_dump(filename, (void **)&data, &bytes_read, (4 * block_cnt)); + int res = pm3_load_dump(filename, (void **)&data, &bytes_read, (ST25TB_SR_BLOCK_SIZE * block_cnt)); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Failed to load file"); return res; } - // Ignore remaining 4 bytes if the file is 4 bytes larger than the expected size + // Ignore remaining block if the file is 1 block larger than the expected size // (because hf 14b dump also saves the special block at the end of the memory, it will be ignored by the restore command) - if (bytes_read != (block_cnt * 4) && bytes_read != (block_cnt * 4 + 4)) { + if (bytes_read != (block_cnt * ST25TB_SR_BLOCK_SIZE) && bytes_read != ((block_cnt + 1) * ST25TB_SR_BLOCK_SIZE)) { PrintAndLogEx(ERR, "File content error. Read %zu", bytes_read); free(data); return PM3_EFILE; @@ -1921,7 +1921,7 @@ static int CmdHF14BRestore(const char *Cmd) { int blockno = 0; while (bytes_read) { - int status = write_sr_block(blockno, 4, data+blockno*4); + int status = write_sr_block(blockno, ST25TB_SR_BLOCK_SIZE, data+blockno*ST25TB_SR_BLOCK_SIZE); if (status != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Write failed"); free(data); @@ -1929,10 +1929,10 @@ static int CmdHF14BRestore(const char *Cmd) { } // verify - uint8_t out[4] = {0}; + uint8_t out[ST25TB_SR_BLOCK_SIZE] = {0}; status = read_sr_block(blockno, out); if (status == PM3_SUCCESS) { - if (memcmp(data+blockno*ST25TB_SR_BLOCK_SIZE, out, 4) == 0) { + if (memcmp(data+blockno*ST25TB_SR_BLOCK_SIZE, out, ST25TB_SR_BLOCK_SIZE) == 0) { printf("\33[2K\r"); PrintAndLogEx(INFO, "SRx write block %d/%d ( " _GREEN_("ok") " )" NOLF, blockno, block_cnt-1); }else {