CHG: fix the default_toys.lua file to handle more aspects of information for a given tag.

CHG: corrected a bug in tnp3clone.lua that made the script fail to "wipe" a magic tag.
CHG: minor textual change in ndef_dump.lua
This commit is contained in:
iceman1001 2015-04-06 18:47:53 +02:00
commit c3fe354b19
4 changed files with 57 additions and 32 deletions

View file

@ -205,7 +205,7 @@ local function main( args)
-- NDEF compliant? -- NDEF compliant?
if b3chars[1] ~= 0xE1 then if b3chars[1] ~= 0xE1 then
return oops("This tag is not NDEF-Complian") return oops("This tag is not NDEF-Compliant")
end end
local ndefVersion = b3chars[2] local ndefVersion = b3chars[2]

View file

@ -3,6 +3,7 @@ local getopt = require('getopt')
local lib14a = require('read14a') local lib14a = require('read14a')
local utils = require('utils') local utils = require('utils')
local pre = require('precalc') local pre = require('precalc')
local toys = require('default_toys2')
local lsh = bit32.lshift local lsh = bit32.lshift
local rsh = bit32.rshift local rsh = bit32.rshift
@ -10,19 +11,20 @@ local bor = bit32.bor
local band = bit32.band local band = bit32.band
example =[[ example =[[
script run tnp3dump script run tnp3clone
script run tnp3dump -h script run tnp3clone -h
script run tnp3dump -t aa00 script run tnp3clone -t aa00 -s 0030
]] ]]
author = "Iceman" author = "Iceman"
usage = "script run tnp3clone -t <toytype>" usage = "script run tnp3clone -t <toytype> -s <subtype>"
desc =[[ desc =[[
This script will try making a barebone clone of a tnp3 tag on to a magic generation1 card. This script will try making a barebone clone of a tnp3 tag on to a magic generation1 card.
Arguments: Arguments:
-h : this help -h : this help
-k <key> : toytype id, 4 hex symbols. -t <data> : toytype id, 4hex symbols.
-s <data> : subtype id, 4hex symbols
]] ]]
@ -73,29 +75,45 @@ end
local function main(args) local function main(args)
print( string.rep('--',20) )
print( string.rep('--',20) )
local numBlocks = 64 local numBlocks = 64
local cset = 'hf mf csetbl ' local cset = 'hf mf csetbl '
local csetuid = 'hf mf csetuid '
local cget = 'hf mf cgetbl ' local cget = 'hf mf cgetbl '
local empty = '00000000000000000000000000000000' local empty = '00000000000000000000000000000000'
local AccAndKeyB = '7F078869000000000000' local AccAndKeyB = '7F078869000000000000'
-- Defaults to Gusto -- Defaults to Gusto
local toytype = 'C201' local toytype = 'C201'
local subtype = '0030'
local DEBUG = true
-- Arguments for the script -- Arguments for the script
for o, a in getopt.getopt(args, 'ht:') do for o, a in getopt.getopt(args, 'ht:s:') do
if o == "h" then return help() end if o == "h" then return help() end
if o == "t" then toytype = a end if o == "t" then toytype = a end
if o == "s" then subtype = a end
end end
if #toytype ~= 4 then return oops('Wrong size in toytype. (4hex symbols)') end if #toytype ~= 4 then return oops('Wrong size - toytype. (4hex symbols)') end
if #subtype ~= 4 then return oops('Wrong size - subtype. (4hex symbols)') end
-- look up type, find & validate types
local item = toys.Find( toytype, subtype)
if item then
print( (' Looking up input: Found %s - %s (%s)'):format(item[6],item[5], item[4]) )
else
print('Didn\'t find item type. If you are sure about it, report it in')
end
--15,16
--13-14
-- find tag -- find tag
result, err = lib14a.read1443a(false) result, err = lib14a.read1443a(false)
if not result then return oops(err) end if not result then return oops(err) end
-- Show tag info
print((' Found tag %s'):format(result.name))
-- load keys -- load keys
local akeys = pre.GetAll(result.uid) local akeys = pre.GetAll(result.uid)
local keyA = akeys:sub(1, 12 ) local keyA = akeys:sub(1, 12 )
@ -111,11 +129,10 @@ local function main(args)
end end
-- wipe card. -- wipe card.
local cmd = (cset..' %s 0004 08 w'):format( b0) local cmd = (csetuid..'%s 0004 08 w'):format(result.uid)
core.console(cmd) core.console(cmd)
local b1 = toytype..'000000000000000000000000' local b1 = toytype..'00000000000000000000'..subtype
local calc = utils.Crc16(b0..b1) local calc = utils.Crc16(b0..b1)
local calcEndian = bor(rsh(calc,8), lsh(band(calc, 0xff), 8)) local calcEndian = bor(rsh(calc,8), lsh(band(calc, 0xff), 8))

View file

@ -5,8 +5,7 @@ local lib14a = require('read14a')
local utils = require('utils') local utils = require('utils')
local md5 = require('md5') local md5 = require('md5')
local dumplib = require('html_dumplib') local dumplib = require('html_dumplib')
local toyNames = require('default_toys') local toys = require('default_toys2')
example =[[ example =[[
script run tnp3dump script run tnp3dump
@ -129,7 +128,7 @@ local function main(args)
if o == "p" then usePreCalc = true end if o == "p" then usePreCalc = true end
if o == "o" then outputTemplate = a end if o == "o" then outputTemplate = a end
end end
-- validate input args. -- validate input args.
keyA = keyA or '4b0b20107ccb' keyA = keyA or '4b0b20107ccb'
if #(keyA) ~= 12 then if #(keyA) ~= 12 then
@ -261,13 +260,16 @@ local function main(args)
bindata[#bindata+1] = c bindata[#bindata+1] = c
end end
end end
print( string.rep('--',20) )
local uid = block0:sub(1,8) local uid = block0:sub(1,8)
local itemtype = block1:sub(1,4) local toytype = block1:sub(1,4)
local cardidLsw = block1:sub(9,16) local cardidLsw = block1:sub(9,16)
local cardidMsw = block1:sub(16,24) local cardidMsw = block1:sub(16,24)
local cardid = block1:sub(9,24) local cardid = block1:sub(9,24)
local traptype = block1:sub(25,28) local subtype = block1:sub(25,28)
-- Write dump to files -- Write dump to files
if not DEBUG then if not DEBUG then
@ -277,13 +279,15 @@ local function main(args)
print(("Wrote a EML dump to: %s"):format(bar)) print(("Wrote a EML dump to: %s"):format(bar))
end end
local itemtypename = toyNames[itemtype] local item = toys.Find(toytype, subtype)
if itemtypename == nil then if item then
itemtypename = toyNames[utils.SwapEndiannessStr(itemtype,16)] local itemStr = ('%s - %s (%s)'):format(item[6],item[5], item[4])
print(' ITEM TYPE : '..itemStr )
else
print((' ITEM TYPE : 0x%s 0x%s'):format(toytype, subtype))
end end
-- Show info -- Show info
print( string.rep('--',20) )
print( (' ITEM TYPE : 0x%s - %s'):format(itemtype, itemtypename) )
print( (' Alter ego / traptype : 0x%s'):format(traptype) ) print( (' Alter ego / traptype : 0x%s'):format(traptype) )
print( (' UID : 0x%s'):format(uid) ) print( (' UID : 0x%s'):format(uid) )
print( (' CARDID : 0x%s'):format(cardid ) ) print( (' CARDID : 0x%s'):format(cardid ) )

View file

@ -4,7 +4,7 @@ local bin = require('bin')
local lib14a = require('read14a') local lib14a = require('read14a')
local utils = require('utils') local utils = require('utils')
local md5 = require('md5') local md5 = require('md5')
local toyNames = require('default_toys') local toys = require('default_toys2')
example =[[ example =[[
1. script run tnp3sim 1. script run tnp3sim
@ -382,18 +382,22 @@ local function main(args)
print( string.rep('--',20) ) print( string.rep('--',20) )
print(' Gathering info') print(' Gathering info')
local uid = blocks[0]:sub(1,8) local uid = blocks[0]:sub(1,8)
local itemtype = blocks[1]:sub(1,4) local toytype = blocks[1]:sub(1,4)
local cardidLsw = blocks[1]:sub(9,16) local cardidLsw = blocks[1]:sub(9,16)
local cardidMsw = blocks[1]:sub(17,24) local cardidMsw = blocks[1]:sub(17,24)
local subtype = blocks[1]:sub(25,28)
local itemtypename = toyNames[itemtype]
if itemtypename == nil then
itemtypename = toyNames[utils.SwapEndiannessStr(itemtype,16)]
end
-- Show info -- Show info
print( string.rep('--',20) ) print( string.rep('--',20) )
print( (' ITEM TYPE : 0x%s - %s'):format(itemtype, itemtypename) )
local item = toys.Find( toytype, subtype)
if item then
local itemStr = ('%s - %s (%s)'):format(item[6],item[5], item[4])
print(' ITEM TYPE :'..itemStr )
else
print( (' ITEM TYPE : 0x%s 0x%s'):format(toytype, subtype) )
end
print( (' UID : 0x%s'):format(uid) ) print( (' UID : 0x%s'):format(uid) )
print( (' CARDID : 0x%s %s [%s]'):format( print( (' CARDID : 0x%s %s [%s]'):format(
cardidMsw,cardidLsw, cardidMsw,cardidLsw,