From b9534ca070fcb38d37b572810365bbb4b8ffbc8b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 9 Mar 2017 10:26:01 +0100 Subject: [PATCH] FIX: introduced a bug in luascripts when adding the "safe ascii chars" to ConvertHexToAscii. Now its optional. --- client/lualibs/utils.lua | 7 ++++--- client/scripts/tnp3dump.lua | 19 ++++++++++++------- client/scripts/ufodump.lua | 2 -- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/client/lualibs/utils.lua b/client/lualibs/utils.lua index 9dcb49c7..b86b016b 100644 --- a/client/lualibs/utils.lua +++ b/client/lualibs/utils.lua @@ -285,14 +285,15 @@ local Utils = return rev end, - ConvertHexToAscii = function(s) + ConvertHexToAscii = function(s, useSafechars) if s == nil then return '' end if #s == 0 then return '' end local t={} for k in s:gmatch"(%x%x)" do - local n = tonumber(k,16) + + local n = tonumber(k,16) local c - if (n < 32) or (n == 127) then + if useSafechars and ( (n < 32) or (n == 127) ) then c = '.'; else c = string.char(n) diff --git a/client/scripts/tnp3dump.lua b/client/scripts/tnp3dump.lua index f3d377f7..613cf581 100644 --- a/client/scripts/tnp3dump.lua +++ b/client/scripts/tnp3dump.lua @@ -31,7 +31,7 @@ Arguments: -o : filename for the saved dumps ]] local RANDOM = '20436F707972696768742028432920323031302041637469766973696F6E2E20416C6C205269676874732052657365727665642E20' -local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds +local TIMEOUT = 2500 -- Shouldn't take longer than 2 seconds local DEBUG = false -- the debug flag local numBlocks = 64 local numSectors = 16 @@ -80,17 +80,17 @@ local function readdumpkeys(infile) end local function waitCmd() - local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT) + local response = core.WaitForResponseTimeout(cmds.CMD_ACK, TIMEOUT) if response then - local count,cmd,arg0 = bin.unpack('LL',response) + local count, cmd, arg0 = bin.unpack('LL',response) if(arg0==1) then local count,arg1,arg2,data = bin.unpack('LLH511',response,count) return data:sub(1,32) else - return nil, "Couldn't read block.." + return nil, "Couldn't read block.. ["..arg0.."]" end end - return nil, "No response from device" + return nil, 'No response from device' end local function main(args) @@ -149,6 +149,7 @@ local function main(args) if usePreCalc then local pre = require('precalc') akeys = pre.GetAll(result.uid) + dbg(akeys) else print('Loading dumpkeys.bin') local hex, err = utils.ReadDumpFile(input) @@ -159,7 +160,8 @@ local function main(args) end -- Read block 0 - cmd = Command:new{cmd = cmds.CMD_MIFARE_READBL, arg1 = 0,arg2 = 0,arg3 = 0, data = keyA} + dbg('Reading block 0') + cmd = Command:new{cmd = cmds.CMD_MIFARE_READBL, arg1 = 0, arg2 = 0, arg3 = 0, data = keyA} err = core.SendCommand(cmd:getBytes()) if err then return oops(err) end local block0, err = waitCmd() @@ -168,7 +170,8 @@ local function main(args) core.clearCommandBuffer() -- Read block 1 - cmd = Command:new{cmd = cmds.CMD_MIFARE_READBL, arg1 = 1,arg2 = 0,arg3 = 0, data = keyA} + dbg('Reading block 1') + cmd = Command:new{cmd = cmds.CMD_MIFARE_READBL, arg1 = 1, arg2 = 0, arg3 = 0, data = keyA} err = core.SendCommand(cmd:getBytes()) if err then return oops(err) end local block1, err = waitCmd() @@ -187,6 +190,8 @@ local function main(args) io.write('Reading blocks > ') for blockNo = 0, numBlocks-1, 1 do + io.flush() + if core.ukbhit() then print("aborted by user") break diff --git a/client/scripts/ufodump.lua b/client/scripts/ufodump.lua index f1e4be1e..65d779f0 100644 --- a/client/scripts/ufodump.lua +++ b/client/scripts/ufodump.lua @@ -71,7 +71,6 @@ end -- @param usbpacket the data received from the device function showdata(blockno, data) local xorkey = '55AA55AA55AA55AA6262' - --local s = data.." | "..utils.ConvertHexToAscii(data).." | " local s = data.." | " local dex = '' local rs @@ -86,7 +85,6 @@ function showdata(blockno, data) end dex = (dex..'%04X'):format(rs) end - --s = s..dex.." | "..utils.ConvertHexToAscii(dex) s = s..dex.." | " print( (" %02d | %s"):format(blockno,s)) end -- 2.39.2