]> git.zerfleddert.de Git - proxmark3-svn/blob - client/scripts/test_t55x7_bi.lua
Merge branch 'master' into topaz
[proxmark3-svn] / client / scripts / test_t55x7_bi.lua
1 local cmds = require('commands')
2 local getopt = require('getopt')
3 local bin = require('bin')
4 local utils = require('utils')
5
6 example =[[
7 1. script run test_t55x7_bi
8 ]]
9 author = "Iceman"
10 usage = "script run test_t55x7_bi"
11 desc =[[
12 This script will program a T55x7 TAG with the configuration: block 0x00 data 0x00010040
13 The outlined procedure is as following:
14
15 --BIPHASE 00010040
16 --
17
18 "lf t55xx write 0 00010040"
19 "lf t55xx detect"
20 "lf t55xx info"
21
22 Loop:
23 change the configuretion block 0 with:
24 -xx01xxxx = RF/8
25 -xx05xxxx = RF/16
26 -xx09xxxx = RF/32
27 -xx0Dxxxx = RF/40
28 -xx11xxxx = RF/50
29 -xx15xxxx = RF/64
30 -xx19xxxx = RF/100
31 -xx1Dxxxx = RF/128
32
33
34 testsuit for the BIPHASE demod
35
36 Arguments:
37 -h : this help
38 ]]
39
40 local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds
41 local DEBUG = true -- the debug flag
42
43 --BLOCK 0 = 00010040 BIPHASE
44 local config1 = '00'
45 local config2 = '0040'
46
47 local procedurecmds = {
48 [1] = '%s%02X%s',
49 [2] = 'lf t55xx detect',
50 [3] = 'lf t55xx info',
51 }
52 ---
53 -- A debug printout-function
54 function dbg(args)
55 if not DEBUG then
56 return
57 end
58
59 if type(args) == "table" then
60 local i = 1
61 while args[i] do
62 dbg(args[i])
63 i = i+1
64 end
65 else
66 print("###", args)
67 end
68 end
69 ---
70 -- This is only meant to be used when errors occur
71 function oops(err)
72 print("ERROR: ",err)
73 end
74 ---
75 -- Usage help
76 function help()
77 print(desc)
78 print("Example usage")
79 print(example)
80 end
81 --
82 -- Exit message
83 function ExitMsg(msg)
84 print( string.rep('--',20) )
85 print( string.rep('--',20) )
86 print(msg)
87 print()
88 end
89
90 function test()
91 local y
92 for y = 1, 0x1D, 4 do
93 for _ = 1, #procedurecmds do
94 local pcmd = procedurecmds[_]
95
96 if #pcmd == 0 then
97
98 elseif _ == 1 then
99
100 local config = pcmd:format(config1, y, config2)
101 dbg(('lf t55xx wr 0 %s'):format(config))
102
103 config = tonumber(config,16)
104 local writecmd = Command:new{cmd = cmds.CMD_T55XX_WRITE_BLOCK, arg1 = config}
105 local err = core.SendCommand(writecmd:getBytes())
106 if err then return oops(err) end
107 local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT)
108 else
109 dbg(pcmd)
110 core.console( pcmd )
111 end
112 end
113 core.clearCommandBuffer()
114 end
115 print( string.rep('--',20) )
116
117 end
118
119 local function main(args)
120
121 print( string.rep('--',20) )
122 print( string.rep('--',20) )
123
124 -- Arguments for the script
125 for o, arg in getopt.getopt(args, 'h') do
126 if o == "h" then return help() end
127 end
128
129 core.clearCommandBuffer()
130 test()
131 print( string.rep('--',20) )
132 end
133 main(args)
Impressum, Datenschutz