mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
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:
parent
aa77d2b125
commit
c3fe354b19
4 changed files with 57 additions and 32 deletions
|
@ -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]
|
||||||
|
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
@ -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 ) )
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue