From: iceman1001 <iceman@iuse.se>
Date: Mon, 6 Apr 2015 16:47:53 +0000 (+0200)
Subject: CHG: fix the default_toys.lua file to handle more aspects of information for a given... 
X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/c3fe354b192d8151c0e7a27b5590ad086c3798a0?hp=aa77d2b12576bce67223f647f603b4111324a74f

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
---

diff --git a/client/scripts/ndef_dump.lua b/client/scripts/ndef_dump.lua
index da1a1ef2..3b27cac3 100644
--- a/client/scripts/ndef_dump.lua
+++ b/client/scripts/ndef_dump.lua
@@ -205,7 +205,7 @@ local function main( args)
 
 	-- NDEF compliant?
 	if b3chars[1] ~= 0xE1 then 
-		return oops("This tag is not NDEF-Complian")
+		return oops("This tag is not NDEF-Compliant")
 	end 
 
 	local ndefVersion = b3chars[2] 	
diff --git a/client/scripts/tnp3clone.lua b/client/scripts/tnp3clone.lua
index 8c9397a7..d54b7d1f 100644
--- a/client/scripts/tnp3clone.lua
+++ b/client/scripts/tnp3clone.lua
@@ -3,6 +3,7 @@ local getopt = require('getopt')
 local lib14a = require('read14a')
 local utils = require('utils')
 local pre = require('precalc')
+local toys = require('default_toys2')
 
 local lsh = bit32.lshift
 local rsh = bit32.rshift
@@ -10,19 +11,20 @@ local bor = bit32.bor
 local band = bit32.band
 
 example =[[
-	script run tnp3dump
-	script run tnp3dump -h
-	script run tnp3dump -t aa00
+	script run tnp3clone
+	script run tnp3clone -h
+	script run tnp3clone -t aa00 -s 0030
 
 ]]
 author = "Iceman"
-usage = "script run tnp3clone -t <toytype>"
+usage = "script run tnp3clone -t <toytype> -s <subtype>"
 desc =[[
 This script will try making a barebone clone of a tnp3 tag on to a magic generation1 card.
 
 Arguments:
 	-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)
 
+	print( string.rep('--',20) )
+	print( string.rep('--',20) )
+	
 	local numBlocks = 64
     local cset = 'hf mf csetbl '
+	local csetuid = 'hf mf csetuid '
 	local cget = 'hf mf cgetbl '
 	local empty = '00000000000000000000000000000000'
 	local AccAndKeyB = '7F078869000000000000'
 	-- Defaults to Gusto
 	local toytype = 'C201'
+	local subtype = '0030'
+	local DEBUG = true
 	
 	-- 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 == "t" then toytype = a end
+		if o == "s" then subtype = a 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
 	result, err = lib14a.read1443a(false)
 	if not result then return oops(err)	end
 
-	-- Show tag info
-	print((' Found tag %s'):format(result.name))
-
 	-- load keys
 	local akeys  = pre.GetAll(result.uid)
 	local  keyA = akeys:sub(1, 12 ) 
@@ -111,11 +129,10 @@ local function main(args)
 	end
 	
 	-- wipe card.
-	local cmd  = (cset..' %s 0004 08 w'):format( b0)	
+	local cmd  = (csetuid..'%s 0004 08 w'):format(result.uid)	
 	core.console(cmd) 
-
 	
-	local b1 = toytype..'000000000000000000000000'
+	local b1 = toytype..'00000000000000000000'..subtype
 	local calc = utils.Crc16(b0..b1)
 	local calcEndian = bor(rsh(calc,8), lsh(band(calc, 0xff), 8))
 	
diff --git a/client/scripts/tnp3dump.lua b/client/scripts/tnp3dump.lua
index 363998fb..43910145 100644
--- a/client/scripts/tnp3dump.lua
+++ b/client/scripts/tnp3dump.lua
@@ -5,8 +5,7 @@ local lib14a = require('read14a')
 local utils = require('utils')
 local md5 = require('md5')
 local dumplib = require('html_dumplib')
-local toyNames = require('default_toys')
-
+local toys = require('default_toys2')
 
 example =[[
 	script run tnp3dump
@@ -129,7 +128,7 @@ local function main(args)
 		if o == "p" then usePreCalc = true end
 		if o == "o" then outputTemplate = a end		
 	end
-
+	
 	-- validate input args.
 	keyA =  keyA or '4b0b20107ccb'
 	if #(keyA) ~= 12 then
@@ -261,13 +260,16 @@ local function main(args)
 			bindata[#bindata+1] = c
 		end
 	end 
+
+	print( string.rep('--',20) )
+
 	
 	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 cardidMsw = block1:sub(16,24)
 	local cardid = block1:sub(9,24)
-	local traptype = block1:sub(25,28)
+	local subtype = block1:sub(25,28)
 	
 	-- Write dump to files
 	if not DEBUG then
@@ -277,13 +279,15 @@ local function main(args)
 		print(("Wrote a EML dump to:  %s"):format(bar))
 	end
 
-	local itemtypename = toyNames[itemtype]
-	if itemtypename == nil then
-		itemtypename = toyNames[utils.SwapEndiannessStr(itemtype,16)]
+	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
+	
 	-- Show info 
-	print( string.rep('--',20) )
-	print( ('            ITEM TYPE : 0x%s - %s'):format(itemtype, itemtypename) )
 	print( (' Alter ego / traptype : 0x%s'):format(traptype) )
 	print( ('                  UID : 0x%s'):format(uid) )
 	print( ('               CARDID : 0x%s'):format(cardid ) )
diff --git a/client/scripts/tnp3sim.lua b/client/scripts/tnp3sim.lua
index 1d3dbefd..92b1cb30 100644
--- a/client/scripts/tnp3sim.lua
+++ b/client/scripts/tnp3sim.lua
@@ -4,7 +4,7 @@ local bin = require('bin')
 local lib14a = require('read14a')
 local utils = require('utils')
 local md5 = require('md5')
-local toyNames = require('default_toys')
+local toys = require('default_toys2')
 
 example =[[
 	1. script run tnp3sim
@@ -382,18 +382,22 @@ local function main(args)
 	print( string.rep('--',20) )	
 	print(' Gathering info')
 	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 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 
 	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( ('    CARDID : 0x%s %s [%s]'):format(
 								cardidMsw,cardidLsw,