From 26d0156a469ce972c5115a96b96551664ff4dd2f Mon Sep 17 00:00:00 2001 From: pwpiwi Date: Mon, 30 Sep 2019 07:29:20 +0100 Subject: [PATCH] fix 'hf iclass eload' (thanks to @sherhannn79) --- CHANGELOG.md | 3 ++- client/cmdhficlass.c | 14 ++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e95ccde6..fdd499fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,8 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Wrong UID at HitagS simulation - `hf 15 sim` now works as expected (piwi) - `hf mf chk t` save to emulator memory now works as expected (mwalker) - - Fix `hf mf sim` - wrong access rights to write key B in trailer (@McEloff) +- Fix `hf mf sim` - wrong access rights to write key B in trailer (@McEloff) +- allow files > 512Bytes in 'hf iclass eload' (@Sherhannn79) ### Added - Added to `hf 14a apdu` print apdu and compose apdu (@merlokk) diff --git a/client/cmdhficlass.c b/client/cmdhficlass.c index a2e31754..35cf350c 100644 --- a/client/cmdhficlass.c +++ b/client/cmdhficlass.c @@ -294,14 +294,13 @@ int CmdHFiClassELoad(const char *Cmd) { //File handling and reading FILE *f; char filename[FILE_PATH_SIZE]; - if(opt == 'f' && param_getstr(Cmd, 1, filename, sizeof(filename)) > 0) - { + if (opt == 'f' && param_getstr(Cmd, 1, filename, sizeof(filename)) > 0) { f = fopen(filename, "rb"); - }else{ + } else { return hf_iclass_eload_usage(); } - if(!f) { + if (!f) { PrintAndLog("Failed to read from file '%s'", filename); return 1; } @@ -324,8 +323,7 @@ int CmdHFiClassELoad(const char *Cmd) { printIclassDumpInfo(dump); //Validate - if (bytes_read < fsize) - { + if (bytes_read < fsize) { prnlog("Error, could only read %d bytes (should be %d)",bytes_read, fsize ); free(dump); return 1; @@ -334,10 +332,10 @@ int CmdHFiClassELoad(const char *Cmd) { uint32_t bytes_sent = 0; uint32_t bytes_remaining = bytes_read; - while(bytes_remaining > 0){ + while (bytes_remaining > 0) { uint32_t bytes_in_packet = MIN(USB_CMD_DATA_SIZE, bytes_remaining); UsbCommand c = {CMD_ICLASS_EML_MEMSET, {bytes_sent,bytes_in_packet,0}}; - memcpy(c.d.asBytes, dump, bytes_in_packet); + memcpy(c.d.asBytes, dump+bytes_sent, bytes_in_packet); SendCommand(&c); bytes_remaining -= bytes_in_packet; bytes_sent += bytes_in_packet; -- 2.39.5