From ed54dc8e1737f966f8fb04c990fae1f3775ba76f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 11 Jul 2017 19:37:59 +0200 Subject: [PATCH] FIX: 'dumptoemul.lua' doesn't add the last newline in generated eml file. FIX: 'dumptoemul-mfu.lua' doesn't add the last newline in generated eml file. FIX: 'dumptoemul-mfu.lua' correctly gets the UID from bin file, previously took wrong data. --- client/scripts/dumptoemul-mfu.lua | 21 +++++++++++++-------- client/scripts/dumptoemul.lua | 5 ++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/client/scripts/dumptoemul-mfu.lua b/client/scripts/dumptoemul-mfu.lua index 83274935..a5c6c5e3 100644 --- a/client/scripts/dumptoemul-mfu.lua +++ b/client/scripts/dumptoemul-mfu.lua @@ -3,7 +3,7 @@ getopt = require('getopt') bin = require('bin') example = "script run dumptoemul-mfu -i dumpdata-foobar.bin" -author = "Martin Holst Swende \n @Marshmellow" +author = "Martin Holst Swende \n @Marshmellow \n @iceman" usage = "script run dumptoemul-mfu [-i ] [-o ]" desc =[[ This script takes a dumpfile from 'hf mfu dump' and converts it to a format that can be used @@ -62,11 +62,10 @@ local function convert_to_emulform(hexdata) return oops(("Bad data, length should be a multiple of 8 (was %d)"):format(string.len(hexdata))) end local ascii,i = ""; - for i = 1, string.len(hexdata),8 do - ascii = ascii ..string.sub(hexdata,i,i+7).."\n" - end - - return string.sub(ascii,1,-1) + for i = 1, string.len(hexdata), 8 do + ascii = ascii..string.sub(hexdata, i, i+7).."\n" + end + return string.sub(ascii, 1, -2) end local function main(args) @@ -89,7 +88,14 @@ local function main(args) -- The hex-data is now in ascii-format, -- But first, check the uid - local uid = string.sub(dumpdata,1+48,8) + -- lua uses start index and endindex, not count. + -- UID is 3three skip bcc0 then 4bytes. + -- 1 lua is one-index. + -- 1 + 96 (48*2) new dump format has version/signature/counter data here + -- 97,98,99,100,101,102 UID first three bytes + -- 103,104 bcc0 + -- 105--- UID last four bytes + local uid = string.sub(dumpdata, 97, 97+5)..string.sub(dumpdata, 97+8, 97+8+7) output = output or (uid .. ".eml") -- Format some linebreaks @@ -105,7 +111,6 @@ local function main(args) print(("Wrote an emulator-dump to the file %s"):format(output)) end - --[[ In the future, we may implement so that scripts are invoked directly into a 'main' function, instead of being executed blindly. For future diff --git a/client/scripts/dumptoemul.lua b/client/scripts/dumptoemul.lua index f298268a..67520f23 100644 --- a/client/scripts/dumptoemul.lua +++ b/client/scripts/dumptoemul.lua @@ -68,10 +68,9 @@ local function convert_to_emulform(hexdata) end local ascii,i = ""; for i = 1, string.len(hexdata),32 do - ascii = ascii ..string.sub(hexdata,i,i+31).."\n" + ascii = ascii..string.sub(hexdata,i,i+31).."\n" end - - return string.sub(ascii,1,-1) + return string.sub(ascii, 1, -2) end local function main(args)