proxmark3/client/luascripts/tracetest.lua

138 lines
2.9 KiB
Lua
Raw Normal View History

local cmds = require('commands')
local getopt = require('getopt')
local bin = require('bin')
local utils = require('utils')
local dumplib = require('html_dumplib')
2020-04-05 18:56:35 +08:00
local ansicolors = require('ansicolors')
copyright = ''
author = 'Iceman'
version = 'v1.0.3'
2020-04-05 18:56:35 +08:00
desc = [[
This script will load several traces files in current working directory/traces/ folder and do
"data load"
2019-03-09 17:34:43 +08:00
"lf search 1 u"
2019-03-09 17:34:43 +08:00
The following tracefiles will be loaded:
em*.pm3
modulation*.pm3
]]
2020-04-05 18:56:35 +08:00
example = [[
1. script run tracetest
]]
usage = [[
2020-04-05 18:56:35 +08:00
script run tracetest [-h]
]]
arguments = [[
2019-03-09 17:34:43 +08:00
-h : this help
]]
local DEBUG = true -- the debug flag
2019-03-09 17:34:43 +08:00
---
-- A debug printout-function
local function dbg(args)
if not DEBUG then return end
if type(args) == 'table' then
2019-03-09 17:34:43 +08:00
local i = 1
while result[i] do
dbg(result[i])
i = i+1
end
else
print('###', args)
2019-03-09 17:34:43 +08:00
end
end
---
-- This is only meant to be used when errors occur
local function oops(err)
print('ERROR:', err)
core.clearCommandBuffer()
return nil, err
end
2019-03-09 17:34:43 +08:00
---
-- Usage help
local function help()
print(copyright)
print(author)
print(version)
2019-03-09 17:34:43 +08:00
print(desc)
2020-04-05 18:56:35 +08:00
print(ansicolors.cyan..'Usage'..ansicolors.reset)
print(usage)
2020-04-05 18:56:35 +08:00
print(ansicolors.cyan..'Arguments'..ansicolors.reset)
print(arguments)
print(ansicolors.cyan..'Example usage'..ansicolors.reset)
print(example)
end
--
-- Exit message
local function ExitMsg(msg)
2019-03-09 17:34:43 +08:00
print( string.rep('--',20) )
print( string.rep('--',20) )
print(msg)
print()
end
local function main(args)
2019-03-09 17:34:43 +08:00
print( string.rep('--',20) )
print( string.rep('--',20) )
local cmdDataLoad = 'data load %s';
local cwd = core.cwd();
local tracesEM = "find '"..cwd.."/traces/ ' -iname 'em*.pm3' -type f"
local tracesMOD = "find '"..cwd.."/traces/' -iname 'modulation*.pm3' -type f"
2019-03-09 17:34:43 +08:00
local write2File = false
local outputTemplate = os.date('testtest_%Y-%m-%d_%H%M%S')
2019-03-09 17:34:43 +08:00
-- Arguments for the script
for o, arg in getopt.getopt(args, 'h') do
if o == 'h' then return help() end
2019-03-09 17:34:43 +08:00
end
core.clearCommandBuffer()
local files = {}
-- Find a set of traces staring with EM
local p = assert( io.popen(tracesEM))
for file in p:lines() do
table.insert(files, file)
end
p.close();
-- Find a set of traces staring with MODULATION
2019-03-09 17:34:43 +08:00
p = assert( io.popen(tracesMOD) )
for file in p:lines() do
table.insert(files, file)
end
p.close();
local cmdLFSEARCH = 'lf search 1 u'
2019-03-09 17:34:43 +08:00
-- main loop
io.write('Starting to test traces > ')
for _,file in pairs(files) do
local x = 'data load '..file
2019-03-09 17:34:43 +08:00
dbg(x)
core.console(x)
dbg(cmdLFSEARCH)
core.console(cmdLFSEARCH)
core.clearCommandBuffer()
if core.kbd_enter_pressed() then
print('aborted by user')
2019-03-09 17:34:43 +08:00
break
end
end
io.write('\n')
print( string.rep('--',20) )
end
2019-03-12 07:12:26 +08:00
main(args)