mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 13:00:42 -07:00
FIX: fixed the layout of data in tnp3.lua
This commit is contained in:
parent
8aa79dee20
commit
1a5ff2c2a7
1 changed files with 45 additions and 32 deletions
|
@ -132,12 +132,14 @@ local function main(args)
|
||||||
print(('Using keyA : %s'):format(keyA))
|
print(('Using keyA : %s'):format(keyA))
|
||||||
print( string.rep('--',20) )
|
print( string.rep('--',20) )
|
||||||
|
|
||||||
print('Trying to find other keys.')
|
|
||||||
if useNested then
|
if useNested then
|
||||||
|
print('Trying to find keys.')
|
||||||
core.console( ('hf mf nested 1 0 A %s d'):format(keyA) )
|
core.console( ('hf mf nested 1 0 A %s d'):format(keyA) )
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Loading keyfile
|
-- Loading keyfile
|
||||||
|
print('Loading dumpkeys.bin')
|
||||||
local infile = io.open(input, "rb")
|
local infile = io.open(input, "rb")
|
||||||
if infile == nil then
|
if infile == nil then
|
||||||
return oops('Could not read file ', input)
|
return oops('Could not read file ', input)
|
||||||
|
@ -164,40 +166,51 @@ local function main(args)
|
||||||
local blocks = {}
|
local blocks = {}
|
||||||
|
|
||||||
-- main loop
|
-- main loop
|
||||||
for blockNo = 8, numBlocks-1, 1 do
|
for blockNo = 0, numBlocks-1, 1 do
|
||||||
local b = blockNo%4
|
|
||||||
if b ~= 3 then
|
|
||||||
pos = (math.floor( blockNo / 4 ) * 12)+1
|
|
||||||
key = akeys:sub(pos, pos + 12 )
|
|
||||||
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 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
|
if core.ukbhit() then
|
||||||
blocks[blockNo] = ('%02d :: %s :: %s'):format(blockNo,blockdata,blockdata)
|
print("aborted by user")
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
pos = (math.floor( blockNo / 4 ) * 12)+1
|
||||||
|
key = akeys:sub(pos, pos + 12 )
|
||||||
|
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
|
else
|
||||||
--blocks[blockNo] = ('%02d :: %s :: %s :: %s '):format(blockNo,key,md5hash,hex)
|
local base = ('%s%s%d%s'):format(block0, block1, blockNo, hashconstant)
|
||||||
blocks[blockNo] = ('%02d :: %s :: %s'):format(blockNo,blockdata,blockdata)
|
local md5hash = md5.sumhexa(base)
|
||||||
end
|
local aestest = core.aes(md5hash, blockdata)
|
||||||
|
|
||||||
if core.ukbhit() then
|
local _,hex = bin.unpack(("H%d"):format(16),aestest)
|
||||||
print("aborted by user")
|
|
||||||
break
|
-- 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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
-- Sectorblocks, not encrypted
|
||||||
|
blocks[blockNo+1] = ('%02d :: %s :: %s'):format(blockNo,blockdata,blockdata)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue