mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-14 17:22:59 -07:00
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
156 lines
3.2 KiB
Lua
156 lines
3.2 KiB
Lua
local cmds = require('commands')
|
|
local getopt = require('getopt')
|
|
local bin = require('bin')
|
|
local utils = require('utils')
|
|
|
|
example =[[
|
|
1. script run test_t55x7_psk
|
|
2. script run test_t55x7_psk -o
|
|
|
|
]]
|
|
author = "Iceman"
|
|
usage = "script run test_t55x7_psk"
|
|
desc =[[
|
|
This script will program a T55x7 TAG with the configuration: block 0x00 data 0x00088040
|
|
The outlined procedure is as following:
|
|
|
|
"lf t55xx write 0 00088040"
|
|
"lf read"
|
|
"data samples"
|
|
"data pskdet"
|
|
"data psknrz"
|
|
"data pskindala"
|
|
"data psknrzraw"
|
|
|
|
Loop OUTER:
|
|
change the configuretion block 0 with:
|
|
-xxxx8xxx = PSK RF/2 with Manchester modulation
|
|
-xxxx1xxx = PSK RF/2 with PSK1 modulation (phase change when input changes)
|
|
-xxxx2xxx = PSK RF/2 with PSk2 modulation (phase change on bitclk if input high)
|
|
-xxxx3xxx = PSK RF/2 with PSk3 modulation (phase change on rising edge of input)
|
|
Loop INNER
|
|
for each outer configuration, also do
|
|
XXXXX0XX = PSK RF/2
|
|
XXXXX4XX = PSK RF/4
|
|
XXXXX8XX = PSK RF/8
|
|
|
|
In all 12 individual test for the PSK demod
|
|
|
|
Arguments:
|
|
-h : this help
|
|
]]
|
|
|
|
local TIMEOUT = 2000 -- Shouldn't take longer than 2 seconds
|
|
local DEBUG = true -- the debug flag
|
|
|
|
-- local procedurecmds = {
|
|
-- [1] = '%s%s%s%s',
|
|
-- [2] = 'lf read',
|
|
-- --[3] = '',
|
|
-- [3] = 'data samples',
|
|
-- [4] = 'data pskdetectclock',
|
|
-- [5] = 'data psknrzrawdemod',
|
|
-- [6] = 'data pskindalademod',
|
|
-- }
|
|
|
|
-- --BLOCK 0 = 00 08 80 40 PSK
|
|
-- -----------
|
|
-- 08------- bitrate
|
|
-- 8----- modulation PSK1
|
|
-- 0---- PSK ClockRate
|
|
-- 40 max 2 blocks
|
|
|
|
local procedurecmds = {
|
|
[1] = '00%02X%X%X40',
|
|
[2] = 'lf t55xx detect',
|
|
--[3] = '',
|
|
[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(modulation)
|
|
local bitrate
|
|
local clockrate
|
|
for bitrate = 0x0, 0x1d, 0x4 do
|
|
|
|
for clockrate = 0,8,4 do
|
|
local cmd = procedurecmds[_]
|
|
|
|
if #cmd == 0 then
|
|
|
|
elseif _ == 1 then
|
|
|
|
dbg("Writing to T55x7 TAG")
|
|
|
|
local config = cmd:format(bitrate, modulation, clockrate)
|
|
dbg(('lf t55xx write 0 %s'):format(config))
|
|
|
|
config = tonumber(config,16)
|
|
local writecommand = Command:new{cmd = cmds.CMD_T55XX_WRITE_BLOCK, arg1 = config ,arg2 = 0, arg3 = 0}
|
|
local err = core.SendCommand(writecommand:getBytes())
|
|
if err then return oops(err) end
|
|
local response = core.WaitForResponseTimeout(cmds.CMD_ACK,TIMEOUT)
|
|
else
|
|
dbg(cmd)
|
|
core.console( cmd )
|
|
end
|
|
end
|
|
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(1) --PSK1
|
|
-- test(2) --PSK2
|
|
-- test(3) --PSK3
|
|
|
|
print( string.rep('--',20) )
|
|
end
|
|
main(args)
|