]> git.zerfleddert.de Git - proxmark3-svn/blob - client/scripts/tracetest.lua
Merge branch 'master' of https://github.com/Proxmark/proxmark3
[proxmark3-svn] / client / scripts / tracetest.lua
1 local cmds = require('commands')
2 local getopt = require('getopt')
3 local bin = require('bin')
4 local utils = require('utils')
5 local dumplib = require('html_dumplib')
6
7 example =[[
8 1. script run tracetest
9 2. script run tracetest -o
10
11 ]]
12 author = "Iceman"
13 usage = "script run tracetest -o <filename>"
14 desc =[[
15 This script will load several traces files in ../traces/ folder and do
16 "data load"
17 "lf search"
18
19 Arguments:
20 -h : this help
21 -o : logfile name
22 ]]
23
24 local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds
25 local DEBUG = true -- the debug flag
26 ---
27 -- A debug printout-function
28 function dbg(args)
29 if not DEBUG then
30 return
31 end
32
33 if type(args) == "table" then
34 local i = 1
35 while result[i] do
36 dbg(result[i])
37 i = i+1
38 end
39 else
40 print("###", args)
41 end
42 end
43 ---
44 -- This is only meant to be used when errors occur
45 function oops(err)
46 print("ERROR: ",err)
47 end
48 ---
49 -- Usage help
50 function help()
51 print(desc)
52 print("Example usage")
53 print(example)
54 end
55 --
56 -- Exit message
57 function ExitMsg(msg)
58 print( string.rep('--',20) )
59 print( string.rep('--',20) )
60 print(msg)
61 print()
62 end
63
64
65 local function main(args)
66
67 print( string.rep('--',20) )
68 print( string.rep('--',20) )
69
70 local cmdDataLoad = 'data load %s';
71 local tracesEM = "find '../traces/' -iname 'em*.pm3' -type f"
72 local tracesMOD = "find '../traces/' -iname 'm*.pm3' -type f"
73
74 local outputTemplate = os.date("testtest_%Y-%m-%d_%H%M%S")
75
76 -- Arguments for the script
77 for o, arg in getopt.getopt(args, 'ho:') do
78 if o == "h" then return help() end
79 if o == "o" then outputTemplate = arg end
80 end
81
82 core.clearCommandBuffer()
83
84 local files = {}
85
86 -- Find a set of traces staring with EM
87 local p = assert( io.popen(tracesEM))
88 for file in p:lines() do
89 table.insert(files, file)
90 end
91 p.close();
92
93 -- Find a set of traces staring with MOD
94 p = assert( io.popen(tracesMOD) )
95 for file in p:lines() do
96 table.insert(files, file)
97 end
98 p.close();
99
100 local cmdLFSEARCH = "lf search 1"
101
102 -- main loop
103 io.write('Starting to test traces > ')
104 for _,file in pairs(files) do
105
106 local x = "data load "..file
107 dbg(x)
108 core.console(x)
109
110 dbg(cmdLFSEARCH)
111 core.console(cmdLFSEARCH)
112
113 core.clearCommandBuffer()
114
115 if core.ukbhit() then
116 print("aborted by user")
117 break
118 end
119 end
120 io.write('\n')
121
122 -- Write dump to files
123 if not DEBUG then
124 local bar = dumplib.SaveAsText(emldata, outputTemplate..'.txt')
125 print(("Wrote output to: %s"):format(bar))
126 end
127
128 -- Show info
129 print( string.rep('--',20) )
130
131 end
132 main(args)
Impressum, Datenschutz