- local base = ('%s%s%02d%s'):format(block0, block1, block, hashconstant)
- local md5hash = md5.sumhexa(base)
- local aestest = core.aes(md5hash, blockdata)
-
- local _,hex = bin.unpack(("H%d"):format(16),aestest)
-
- local hexascii = string.gsub(hex, '(%x%x)',
- function(value)
- return string.char(tonumber(value, 16))
- end
- )
-
- print( ('%02d :: %s :: %s :: %s :: %s'):format(block,key,md5hash,hex,hexascii) )
-
- if core.ukbhit() then
- print("aborted by user")
- break
+ pos = (math.floor( blockNo / 4 ) * 12)+1
+ key = akeys:sub(pos, pos + 11 )
+ cmd = Command:new{cmd = cmds.CMD_MIFARE_READBL, arg1 = blockNo ,arg2 = 0,arg3 = 0, data = key}
+ local err = core.SendCommand(cmd:getBytes())
+ if err then return oops(err) end
+ local blockdata, err = waitCmd()
+ if err then return oops(err) end
+
+ local b = blockNo%4
+
+ if b ~= 3 then
+ if blockNo < 8 then
+ -- Block 0-7 not encrypted
+ blocks[blockNo+1] = ('%02d :: %s :: %s'):format(blockNo,blockdata,blockdata)
+ else
+ local base = ('%s%s%d%s'):format(block0, block1, blockNo, hashconstant) local md5hash = md5.sumhexa(base)
+ local aestest = core.aes(md5hash, blockdata)
+
+ local _,hex = bin.unpack(("H%d"):format(16),aestest)
+
+ -- local hexascii = string.gsub(hex, '(%x%x)',
+ -- function(value)
+ -- return string.char(tonumber(value, 16))
+ -- end
+ -- )
+
+ if string.find(blockdata, '^0+$') then
+ blocks[blockNo+1] = ('%02d :: %s :: %s'):format(blockNo,blockdata,blockdata)
+ else
+ --blocks[blockNo+1] = ('%02d :: %s :: %s :: %s '):format(blockNo,key,md5hash,hex)
+ blocks[blockNo+1] = ('%02d :: %s :: %s'):format(blockNo,blockdata,hex)
+ end