mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-11-15 22:29:52 +08:00
13d77ef964
lf t5xx commands updated from ICEMAN lf em410x commands updated lf search bug fix for 2 args test scripts from iceman lf demod: better ask clock detection with Strong fully clipped waves better ask raw demod with strong fully clipped waves fsk demod add back in skipped bits during demod nrz demod add back in skipped bits during demod
139 lines
No EOL
2.6 KiB
Lua
139 lines
No EOL
2.6 KiB
Lua
local cmds = require('commands')
|
|
local getopt = require('getopt')
|
|
local bin = require('bin')
|
|
local utils = require('utils')
|
|
|
|
local format=string.format
|
|
local floor=math.floor
|
|
|
|
example =[[
|
|
1. script run test_t55x7_ask
|
|
]]
|
|
author = "Iceman"
|
|
usage = "script run test_t55x7_ask"
|
|
desc =[[
|
|
This script will program a T55x7 TAG with the configuration: block 0x00 data 0x000100
|
|
The outlined procedure is as following:
|
|
|
|
--ASK
|
|
00 00 80 40
|
|
-- max 2
|
|
-- manchester
|
|
-- bit rate
|
|
|
|
"lf t55xx write 0 00008040"
|
|
"lf t55xx detect"
|
|
"lf t55xx info"
|
|
|
|
Loop:
|
|
change the configuretion block 0 with:
|
|
-xx 00 xxxx = RF/8
|
|
-xx 04 xxxx = RF/16
|
|
-xx 08 xxxx = RF/32
|
|
-xx 0C xxxx = RF/40
|
|
-xx 10 xxxx = RF/50
|
|
-xx 14 xxxx = RF/64
|
|
-xx 18 xxxx = RF/100
|
|
-xx 1C xxxx = RF/128
|
|
|
|
|
|
testsuit for the ASK/MANCHESTER demod
|
|
|
|
Arguments:
|
|
-h : this help
|
|
]]
|
|
|
|
local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds
|
|
local DEBUG = true -- the debug flag
|
|
|
|
--BLOCK 0 = 00008040 ASK / MAN
|
|
local config1 = '00'
|
|
local config2 = '8040'
|
|
|
|
local procedurecmds = {
|
|
[1] = '%s%02X%s',
|
|
[2] = 'lf t55xx detect',
|
|
[3] = 'lf t55xx info',
|
|
}
|
|
---
|
|
-- A debug printout-function
|
|
function dbg(args)
|
|
if not DEBUG then
|
|
return
|
|
end
|
|
|
|
if type(args) == "table" then
|
|
local i = 1
|
|
while args[i] do
|
|
dbg(args[i])
|
|
i = i+1
|
|
end
|
|
else
|
|
print("###", args)
|
|
end
|
|
end
|
|
---
|
|
-- This is only meant to be used when errors occur
|
|
function oops(err)
|
|
print("ERROR: ",err)
|
|
end
|
|
---
|
|
-- Usage help
|
|
function help()
|
|
print(desc)
|
|
print("Example usage")
|
|
print(example)
|
|
end
|
|
--
|
|
-- Exit message
|
|
function ExitMsg(msg)
|
|
print( string.rep('--',20) )
|
|
print( string.rep('--',20) )
|
|
print(msg)
|
|
print()
|
|
end
|
|
|
|
function test()
|
|
local y
|
|
for y = 0x0, 0x1d, 0x4 do
|
|
for _ = 1, #procedurecmds do
|
|
local pcmd = procedurecmds[_]
|
|
|
|
if #pcmd == 0 then
|
|
|
|
elseif _ == 1 then
|
|
|
|
local config = pcmd:format(config1, y, config2)
|
|
dbg(('lf t55xx write 0 %s'):format(config))
|
|
config = tonumber(config,16)
|
|
|
|
local writecmd = Command:new{cmd = cmds.CMD_T55XX_WRITE_BLOCK, arg1 = config}
|
|
local err = core.SendCommand(writecmd:getBytes())
|
|
if err then return oops(err) end
|
|
local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT)
|
|
|
|
else
|
|
dbg(pcmd)
|
|
core.console( pcmd )
|
|
end
|
|
end
|
|
core.clearCommandBuffer()
|
|
end
|
|
print( string.rep('--',20) )
|
|
end
|
|
|
|
local function main(args)
|
|
|
|
print( string.rep('--',20) )
|
|
print( string.rep('--',20) )
|
|
|
|
-- Arguments for the script
|
|
for o, arg in getopt.getopt(args, 'h') do
|
|
if o == "h" then return help() end
|
|
end
|
|
|
|
core.clearCommandBuffer()
|
|
test()
|
|
print( string.rep('--',20) )
|
|
end
|
|
main(args) |