X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/70c8077c99a2298f0f0ed05a7e1c42353a3b2d8e..0f112d6f19ecf6e7d443eaf3464ebf916048be59:/client/scripts/14araw.lua diff --git a/client/scripts/14araw.lua b/client/scripts/14araw.lua index f3434a16..94b3020c 100644 --- a/client/scripts/14araw.lua +++ b/client/scripts/14araw.lua @@ -2,7 +2,7 @@ local cmds = require('commands') local getopt = require('getopt') local lib14a = require('read14a') -example = "script run writerraw -x 6000F57b" +example = "script run 14araw -x 6000F57b" author = "Martin Holst Swende" @@ -17,18 +17,20 @@ Arguments: -p stay connected - dont inactivate the field -x Data to send (NO SPACES!) -d Debug flag + -t Topaz mode + -3 Skip ISO14443-4 select Examples : # 1. Connect and don't disconnect -script run writeraw -p +script run 14araw -p # 2. Send mf auth, read response (nonce) -script run writeraw -o -x 6000F57b -p +script run 14araw -o -x 6000F57b -p # 3. disconnect -script run writeraw -o +script run 14araw -o # All three steps in one go: -script run writeraw -x 6000F57b +script run 14araw -x 6000F57b ]] --[[ @@ -52,7 +54,7 @@ local DEBUG = false -- the debug flag -- A debug printout-function function dbg(args) if DEBUG then - print("# ", args) + print("###", args) end end --- @@ -70,6 +72,7 @@ function help() print(example) end + --- -- The main entry point function main(args) @@ -83,15 +86,19 @@ function main(args) local stayconnected = false local payload = nil local doconnect = true + local topaz_mode = false + local no_rats = false -- Read the parameters - for o, a in getopt.getopt(args, 'corcpx:') do + for o, a in getopt.getopt(args, 'orcpx:dt3') do if o == "o" then doconnect = false end if o == "r" then ignore_response = true end if o == "c" then appendcrc = true end if o == "p" then stayconnected = true end if o == "x" then payload = a end if o == "d" then DEBUG = true end + if o == "t" then topaz_mode = true end + if o == "3" then no_rats = true end end -- First of all, connect @@ -99,7 +106,7 @@ function main(args) dbg("doconnect") -- We reuse the connect functionality from a -- common library - info, err = lib14a.read1443a(true) + info, err = lib14a.read1443a(true, no_rats) if err then return oops(err) end print(("Connected to card, uid = %s"):format(info.uid)) @@ -107,7 +114,7 @@ function main(args) -- The actual raw payload, if any if payload then - res,err = sendRaw(payload,{ignore_response = ignore_response}) + res,err = sendRaw(payload,{ignore_response = ignore_response, topaz_mode = topaz_mode}) if err then return oops(err) end if not ignoreresponse then @@ -137,11 +144,11 @@ function showdata(usbpacket) end - function sendRaw(rawdata, options) print(">> ", rawdata) local flags = lib14a.ISO14A_COMMAND.ISO14A_NO_DISCONNECT + lib14a.ISO14A_COMMAND.ISO14A_RAW + if options.topaz_mode == true then flags = flags + lib14a.ISO14A_COMMAND.ISO14A_TOPAZMODE end local command = Command:new{cmd = cmds.CMD_READER_ISO_14443a, arg1 = flags, -- Send raw @@ -168,14 +175,18 @@ end -- Testing ------------------------- function selftest() + DEBUG = true + dbg("Performing test") + main() main("-p") main(" -o -x 6000F57b -p") main("-o") main("-x 6000F57b") + dbg("Tests done") end -- Flip the switch here to perform a sanity check. -- It read a nonce in two different ways, as specified in the usage-section -if false then +if "--test"==args then selftest() else -- Call the main