]> git.zerfleddert.de Git - proxmark3-svn/blame - client/scripts/test_t55x7_bi.lua
chip manufacturer and type identification: (#796)
[proxmark3-svn] / client / scripts / test_t55x7_bi.lua
CommitLineData
13d77ef9 1local cmds = require('commands')
2local getopt = require('getopt')
3local bin = require('bin')
4local utils = require('utils')
5
6example =[[
7 1. script run test_t55x7_bi
8]]
9author = "Iceman"
10usage = "script run test_t55x7_bi"
11desc =[[
12This script will program a T55x7 TAG with the configuration: block 0x00 data 0x00010040
13The 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
22Loop:
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
34testsuit for the BIPHASE demod
35
36Arguments:
37 -h : this help
38]]
39
40local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds
41local DEBUG = true -- the debug flag
42
43--BLOCK 0 = 00010040 BIPHASE
44local config1 = '00'
45local config2 = '0040'
46
47local procedurecmds = {
48 [1] = '%s%02X%s',
49 [2] = 'lf t55xx detect',
50 [3] = 'lf t55xx info',
51}
52---
53-- A debug printout-function
54function 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
68end
69---
70-- This is only meant to be used when errors occur
71function oops(err)
72 print("ERROR: ",err)
73end
74---
75-- Usage help
76function help()
77 print(desc)
78 print("Example usage")
79 print(example)
80end
81--
82-- Exit message
83function ExitMsg(msg)
84 print( string.rep('--',20) )
85 print( string.rep('--',20) )
86 print(msg)
87 print()
88end
89
90function test()
91 local y
224ce36e 92 local block = "00"
13d77ef9 93 for y = 1, 0x1D, 4 do
94 for _ = 1, #procedurecmds do
95 local pcmd = procedurecmds[_]
96
97 if #pcmd == 0 then
98
99 elseif _ == 1 then
100
101 local config = pcmd:format(config1, y, config2)
224ce36e 102 dbg(('lf t55xx write 0 %s'):format(config))
103
104 config = tonumber(config,16)
105 local writecmd = Command:new{cmd = cmds.CMD_T55XX_WRITE_BLOCK,arg1 = config, arg2 = block, arg3 = "00", data = "00"}
13d77ef9 106 local err = core.SendCommand(writecmd:getBytes())
107 if err then return oops(err) end
108 local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT)
109 else
110 dbg(pcmd)
111 core.console( pcmd )
112 end
113 end
114 core.clearCommandBuffer()
115 end
116 print( string.rep('--',20) )
117
118end
119
120local function main(args)
121
122 print( string.rep('--',20) )
123 print( string.rep('--',20) )
124
125 -- Arguments for the script
126 for o, arg in getopt.getopt(args, 'h') do
127 if o == "h" then return help() end
128 end
129
130 core.clearCommandBuffer()
131 test()
132 print( string.rep('--',20) )
133end
134main(args)
Impressum, Datenschutz