mfkeys.lua: Remove trailing whitespaces.

This commit is contained in:
Arnie97 2018-01-25 14:48:26 +08:00
parent f88fa399bc
commit b5cf8b07e2

View file

@ -1,11 +1,11 @@
--[[ --[[
This is an example of Lua-scripting within proxmark3. This is a lua-side This is an example of Lua-scripting within proxmark3. This is a lua-side
implementation of hf mf chk implementation of hf mf chk
This code is licensed to you under the terms of the GNU GPL, version 2 or, This code is licensed to you under the terms of the GNU GPL, version 2 or,
at your option, any later version. See the LICENSE.txt file for the text of at your option, any later version. See the LICENSE.txt file for the text of
the license. the license.
Copyright (C) 2013 m h swende <martin at swende.se> Copyright (C) 2013 m h swende <martin at swende.se>
--]] --]]
-- Loads the commands-library -- Loads the commands-library
@ -49,7 +49,7 @@ end
function checkBlock(blockNo, keys, keyType) function checkBlock(blockNo, keys, keyType)
-- The command data is only 512 bytes, each key is 6 bytes, meaning that we can send max 85 keys in one go. -- The command data is only 512 bytes, each key is 6 bytes, meaning that we can send max 85 keys in one go.
-- If there's more, we need to split it up -- If there's more, we need to split it up
local start, remaining= 1, #keys local start, remaining= 1, #keys
local arg1 = bit32.bor(bit32.lshift(keyType, 8), blockNo) local arg1 = bit32.bor(bit32.lshift(keyType, 8), blockNo)
@ -61,10 +61,10 @@ function checkBlock(blockNo, keys, keyType)
--print("data",data) --print("data",data)
--print("data len", #data) --print("data len", #data)
print(("Testing block %d, keytype %d, with %d keys"):format(blockNo, keyType, n)) print(("Testing block %d, keytype %d, with %d keys"):format(blockNo, keyType, n))
local command = Command:new{cmd = cmds.CMD_MIFARE_CHKKEYS, local command = Command:new{cmd = cmds.CMD_MIFARE_CHKKEYS,
arg1 = arg1, arg1 = arg1,
arg2 = 1, arg2 = 1,
arg3 = n, arg3 = n,
data = data} data = data}
local status = checkCommand(command) local status = checkCommand(command)
if status then return status, blockNo end if status then return status, blockNo end
@ -90,36 +90,38 @@ local function displayresults(results)
print("|--------------------------------------|") print("|--------------------------------------|")
end end
-- A little helper to place an item first in the list -- A little helper to place an item first in the list
local function placeFirst(akey, list) local function placeFirst(akey, list)
akey = akey:lower() akey = akey:lower()
if list[1] == akey then if list[1] == akey then
-- Already at pole position -- Already at pole position
return list return list
end end
local result = {akey} local result = {akey}
--print(("Putting '%s' first"):format(akey)) --print(("Putting '%s' first"):format(akey))
for i,v in ipairs(list) do for i,v in ipairs(list) do
if v ~= akey then if v ~= akey then
result[#result+1] = v result[#result+1] = v
end end
end end
return result return result
end end
local function dumptofile(results) local function dumptofile(results)
local sector, blockNo, keyA, keyB,_ local sector, blockNo, keyA, keyB,_
if utils.confirm("Do you wish to save the keys to dumpfile?") then if utils.confirm("Do you wish to save the keys to dumpfile?") then
local destination = utils.input("Select a filename to store to", "dumpkeys.bin") local destination = utils.input("Select a filename to store to", "dumpkeys.bin")
local file = io.open(destination, "w") local file = io.open(destination, "w")
if file == nil then if file == nil then
print("Could not write to file ", destination) print("Could not write to file ", destination)
return return
end end
local key_a = "" local key_a = ""
local key_b = "" local key_b = ""
for sector,_ in pairs(results) do for sector,_ in pairs(results) do
blockNo, keyA, keyB = unpack(_) blockNo, keyA, keyB = unpack(_)
key_a = key_a .. bin.pack("H",keyA); key_a = key_a .. bin.pack("H",keyA);
@ -132,7 +134,7 @@ local function dumptofile(results)
end end
local function main( args) local function main(args)
print(desc); print(desc);
@ -147,11 +149,11 @@ local function main( args)
core.clearCommandBuffer() core.clearCommandBuffer()
local blockNo local blockNo
local keyType = 0 -- A=0, B=1 local keyType = 0 -- A=0, B=1
local numSectors = 16 local numSectors = 16
if 0x18 == result.sak then --NXP MIFARE Classic 4k | Plus 4k if 0x18 == result.sak then -- NXP MIFARE Classic 4k | Plus 4k
-- IFARE Classic 4K offers 4096 bytes split into forty sectors, -- IFARE Classic 4K offers 4096 bytes split into forty sectors,
-- of which 32 are same size as in the 1K with eight more that are quadruple size sectors. -- of which 32 are same size as in the 1K with eight more that are quadruple size sectors.
numSectors = 40 numSectors = 40
elseif 0x08 == result.sak then -- NXP MIFARE CLASSIC 1k | Plus 2k elseif 0x08 == result.sak then -- NXP MIFARE CLASSIC 1k | Plus 2k
-- 1K offers 1024 bytes of data storage, split into 16 sector -- 1K offers 1024 bytes of data storage, split into 16 sector
@ -159,7 +161,7 @@ local function main( args)
elseif 0x09 == result.sak then -- NXP MIFARE Mini 0.3k elseif 0x09 == result.sak then -- NXP MIFARE Mini 0.3k
-- MIFARE Classic mini offers 320 bytes split into five sectors. -- MIFARE Classic mini offers 320 bytes split into five sectors.
numSectors = 5 numSectors = 5
elseif 0x10 == result.sak then-- "NXP MIFARE Plus 2k" elseif 0x10 == result.sak then -- NXP MIFARE Plus 2k
numSectors = 32 numSectors = 32
else else
print("I don't know how many sectors there are on this type of card, defaulting to 16") print("I don't know how many sectors there are on this type of card, defaulting to 16")
@ -169,25 +171,25 @@ local function main( args)
for sector=1,numSectors,1 do for sector=1,numSectors,1 do
--[[ --[[
The mifare Classic 1k card has 16 sectors of 4 data blocks each. The mifare Classic 1k card has 16 sectors of 4 data blocks each.
The first 32 sectors of a mifare Classic 4k card consists of 4 data blocks and the remaining The first 32 sectors of a mifare Classic 4k card consists of 4 data blocks and the remaining
8 sectors consist of 16 data blocks. 8 sectors consist of 16 data blocks.
--]] --]]
local blockNo = sector * 4 -1 local blockNo = sector * 4 - 1
if sector > 32 then if sector > 32 then
blockNo = 32*4+ (sector-32)*16 -1 blockNo = 32*4 + (sector-32)*16 - 1
end end
local keyA = checkBlock(blockNo, keys, 0) local keyA = checkBlock(blockNo, keys, 0)
if keyA then keys = placeFirst(keyA, keys) end if keyA then keys = placeFirst(keyA, keys) end
keyA = keyA or "" keyA = keyA or ""
local keyB = checkBlock(blockNo, keys, 1) local keyB = checkBlock(blockNo, keys, 1)
if keyB then keys = placeFirst(keyB, keys) end if keyB then keys = placeFirst(keyB, keys) end
keyB = keyB or "" keyB = keyB or ""
result[sector] = {blockNo, keyA, keyB } result[sector] = {blockNo, keyA, keyB}
-- Check if user aborted -- Check if user aborted
if core.ukbhit() then if core.ukbhit() then
@ -199,5 +201,4 @@ local function main( args)
dumptofile(result) dumptofile(result)
end end
main( args) main(args)