mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
make style
This commit is contained in:
parent
76701af8a7
commit
55fa5e7c35
15 changed files with 215 additions and 212 deletions
|
@ -135,35 +135,35 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ;
|
||||||
void printHf14aConfig(void) {
|
void printHf14aConfig(void) {
|
||||||
DbpString(_CYAN_("HF 14a config"));
|
DbpString(_CYAN_("HF 14a config"));
|
||||||
Dbprintf(" [a] Anticol override....%i %s%s%s",
|
Dbprintf(" [a] Anticol override....%i %s%s%s",
|
||||||
hf14aconfig.forceanticol,
|
hf14aconfig.forceanticol,
|
||||||
(hf14aconfig.forceanticol == 0) ? "( " _GREEN_("No") " ) follow standard " : "",
|
(hf14aconfig.forceanticol == 0) ? "( " _GREEN_("No") " ) follow standard " : "",
|
||||||
(hf14aconfig.forceanticol == 1) ? "( " _RED_("Yes") " ) always do anticol" : "",
|
(hf14aconfig.forceanticol == 1) ? "( " _RED_("Yes") " ) always do anticol" : "",
|
||||||
(hf14aconfig.forceanticol == 2) ? "( " _RED_("Yes") " ) always skip anticol" : ""
|
(hf14aconfig.forceanticol == 2) ? "( " _RED_("Yes") " ) always skip anticol" : ""
|
||||||
);
|
);
|
||||||
Dbprintf(" [b] BCC override........%i %s%s%s",
|
Dbprintf(" [b] BCC override........%i %s%s%s",
|
||||||
hf14aconfig.forcebcc,
|
hf14aconfig.forcebcc,
|
||||||
(hf14aconfig.forcebcc == 0) ? "( " _GREEN_("No") " ) follow standard" : "",
|
(hf14aconfig.forcebcc == 0) ? "( " _GREEN_("No") " ) follow standard" : "",
|
||||||
(hf14aconfig.forcebcc == 1) ? "( " _RED_("Yes") " ) always do CL2" : "",
|
(hf14aconfig.forcebcc == 1) ? "( " _RED_("Yes") " ) always do CL2" : "",
|
||||||
(hf14aconfig.forcebcc == 2) ? "( " _RED_("Yes") " ) always use card BCC" : ""
|
(hf14aconfig.forcebcc == 2) ? "( " _RED_("Yes") " ) always use card BCC" : ""
|
||||||
);
|
);
|
||||||
Dbprintf(" [2] CL2 override........%i %s%s%s",
|
Dbprintf(" [2] CL2 override........%i %s%s%s",
|
||||||
hf14aconfig.forcecl2,
|
hf14aconfig.forcecl2,
|
||||||
(hf14aconfig.forcecl2 == 0) ? "( " _GREEN_("No") " ) follow standard" : "",
|
(hf14aconfig.forcecl2 == 0) ? "( " _GREEN_("No") " ) follow standard" : "",
|
||||||
(hf14aconfig.forcecl2 == 1) ? "( " _RED_("Yes") " ) always do CL2" : "",
|
(hf14aconfig.forcecl2 == 1) ? "( " _RED_("Yes") " ) always do CL2" : "",
|
||||||
(hf14aconfig.forcecl2 == 2) ? "( " _RED_("Yes") " ) always skip CL2" : ""
|
(hf14aconfig.forcecl2 == 2) ? "( " _RED_("Yes") " ) always skip CL2" : ""
|
||||||
);
|
);
|
||||||
Dbprintf(" [3] CL3 override........%i %s%s%s",
|
Dbprintf(" [3] CL3 override........%i %s%s%s",
|
||||||
hf14aconfig.forcecl3,
|
hf14aconfig.forcecl3,
|
||||||
(hf14aconfig.forcecl3 == 0) ? "( " _GREEN_("No") " ) follow standard" : "",
|
(hf14aconfig.forcecl3 == 0) ? "( " _GREEN_("No") " ) follow standard" : "",
|
||||||
(hf14aconfig.forcecl3 == 1) ? "( " _RED_("Yes") " ) always do CL3" : "",
|
(hf14aconfig.forcecl3 == 1) ? "( " _RED_("Yes") " ) always do CL3" : "",
|
||||||
(hf14aconfig.forcecl3 == 2) ? "( " _RED_("Yes") " ) always skip CL3" : ""
|
(hf14aconfig.forcecl3 == 2) ? "( " _RED_("Yes") " ) always skip CL3" : ""
|
||||||
);
|
);
|
||||||
Dbprintf(" [r] RATS override.......%i %s%s%s",
|
Dbprintf(" [r] RATS override.......%i %s%s%s",
|
||||||
hf14aconfig.forcerats,
|
hf14aconfig.forcerats,
|
||||||
(hf14aconfig.forcerats == 0) ? "( " _GREEN_("No") " q follow standard " : "",
|
(hf14aconfig.forcerats == 0) ? "( " _GREEN_("No") " q follow standard " : "",
|
||||||
(hf14aconfig.forcerats == 1) ? "( " _RED_("Yes") " ) always do RATS" : "",
|
(hf14aconfig.forcerats == 1) ? "( " _RED_("Yes") " ) always do RATS" : "",
|
||||||
(hf14aconfig.forcerats == 2) ? "( " _RED_("Yes") " ) always skip RATS" : ""
|
(hf14aconfig.forcerats == 2) ? "( " _RED_("Yes") " ) always skip RATS" : ""
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
void SpinDelay(int ms);
|
void SpinDelay(int ms);
|
||||||
void SpinDelayUs(int us);
|
void SpinDelayUs(int us);
|
||||||
void SpinDelayUsPrecision(int us); // precision 0.6us , running for 43ms before
|
void SpinDelayUsPrecision(int us); // precision 0.6us , running for 43ms before
|
||||||
|
|
||||||
void StartTickCount(void);
|
void StartTickCount(void);
|
||||||
uint32_t RAMFUNC GetTickCount(void);
|
uint32_t RAMFUNC GetTickCount(void);
|
||||||
|
|
|
@ -51,18 +51,18 @@ local function main(args)
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
Basically do the following,
|
Basically do the following,
|
||||||
|
|
||||||
1. hw tear
|
1. hw tear
|
||||||
2. lf em 4x05_write
|
2. lf em 4x05_write
|
||||||
3. lf em 4x05_read
|
3. lf em 4x05_read
|
||||||
|
|
||||||
The first two commands doesn't need a feedback from the system, so going with core.console commands.
|
The first two commands doesn't need a feedback from the system, so going with core.console commands.
|
||||||
Since the read needs demodulation of signal I opted to add that function from cmdlfem4x.c to the core lua scripting
|
Since the read needs demodulation of signal I opted to add that function from cmdlfem4x.c to the core lua scripting
|
||||||
core.em4x05_read(addr, password)
|
core.em4x05_read(addr, password)
|
||||||
|
|
||||||
--]]
|
--]]
|
||||||
local n, addr, password, sd, ed, wr_value, rd_value
|
local n, addr, password, sd, ed, wr_value, rd_value
|
||||||
|
|
||||||
for o, a in getopt.getopt(args, 'he:s:a:p:n:r:w:') do
|
for o, a in getopt.getopt(args, 'he:s:a:p:n:r:w:') do
|
||||||
if o == 'h' then return help() end
|
if o == 'h' then return help() end
|
||||||
if o == 'n' then n = a end
|
if o == 'n' then n = a end
|
||||||
|
@ -85,7 +85,7 @@ local function main(args)
|
||||||
if #password ~= 8 then
|
if #password ~= 8 then
|
||||||
password = ''
|
password = ''
|
||||||
end
|
end
|
||||||
|
|
||||||
if #wr_value ~= 8 then
|
if #wr_value ~= 8 then
|
||||||
wr_value = 'FFFFFFFF'
|
wr_value = 'FFFFFFFF'
|
||||||
end
|
end
|
||||||
|
@ -93,11 +93,11 @@ local function main(args)
|
||||||
if #rd_value ~= 8 then
|
if #rd_value ~= 8 then
|
||||||
rd_value = 'FFFFFFFF'
|
rd_value = 'FFFFFFFF'
|
||||||
end
|
end
|
||||||
|
|
||||||
if sd > ed then
|
if sd > ed then
|
||||||
return oops('start delay can\'t be larger than end delay', sd, ed)
|
return oops('start delay can\'t be larger than end delay', sd, ed)
|
||||||
end
|
end
|
||||||
|
|
||||||
print('Starting EM4x05 tear off')
|
print('Starting EM4x05 tear off')
|
||||||
print('target addr', addr)
|
print('target addr', addr)
|
||||||
if password then
|
if password then
|
||||||
|
@ -107,25 +107,25 @@ local function main(args)
|
||||||
print('target delay', sd ,ed)
|
print('target delay', sd ,ed)
|
||||||
print('read value', rd_value)
|
print('read value', rd_value)
|
||||||
print('write value', wr_value)
|
print('write value', wr_value)
|
||||||
|
|
||||||
local res_tear = 0
|
local res_tear = 0
|
||||||
local res_nowrite = 0
|
local res_nowrite = 0
|
||||||
|
|
||||||
local set_tearoff_delay = 'hw tearoff --delay %d'
|
local set_tearoff_delay = 'hw tearoff --delay %d'
|
||||||
local enable_tearoff = 'hw tearoff --on'
|
local enable_tearoff = 'hw tearoff --on'
|
||||||
|
|
||||||
local wr_template = 'lf em 4x05_write %s %s %s'
|
local wr_template = 'lf em 4x05_write %s %s %s'
|
||||||
|
|
||||||
-- init addr to value
|
-- init addr to value
|
||||||
core.console(wr_template:format(addr, wr_value, password))
|
core.console(wr_template:format(addr, wr_value, password))
|
||||||
|
|
||||||
if sd == ed then
|
if sd == ed then
|
||||||
ed = n
|
ed = n
|
||||||
n = 0
|
n = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
for step = sd, ed, n do
|
for step = sd, ed, n do
|
||||||
|
|
||||||
io.flush()
|
io.flush()
|
||||||
if core.kbd_enter_pressed() then
|
if core.kbd_enter_pressed() then
|
||||||
print("aborted by user")
|
print("aborted by user")
|
||||||
|
@ -139,11 +139,11 @@ local function main(args)
|
||||||
c = wr_template:format(addr, wr_value, password)
|
c = wr_template:format(addr, wr_value, password)
|
||||||
core.console(c)
|
core.console(c)
|
||||||
end
|
end
|
||||||
|
|
||||||
local c = set_tearoff_delay:format(step)
|
local c = set_tearoff_delay:format(step)
|
||||||
core.console(c);
|
core.console(c);
|
||||||
core.console(enable_tearoff)
|
core.console(enable_tearoff)
|
||||||
|
|
||||||
c = wr_template:format(addr, wr_value, password)
|
c = wr_template:format(addr, wr_value, password)
|
||||||
core.console(c)
|
core.console(c)
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ local function main(args)
|
||||||
if err then
|
if err then
|
||||||
return oops(err)
|
return oops(err)
|
||||||
end
|
end
|
||||||
|
|
||||||
local wordstr = ('%08X'):format(word)
|
local wordstr = ('%08X'):format(word)
|
||||||
|
|
||||||
if wordstr ~= wr_value then
|
if wordstr ~= wr_value then
|
||||||
|
|
|
@ -57,7 +57,7 @@ local function exit_msg()
|
||||||
print('')
|
print('')
|
||||||
print('================= '..ansicolors.green..'verify with'..ansicolors.reset..' =================')
|
print('================= '..ansicolors.green..'verify with'..ansicolors.reset..' =================')
|
||||||
print(' lf em 4x05_dump')
|
print(' lf em 4x05_dump')
|
||||||
print('===============================================')
|
print('===============================================')
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -70,18 +70,18 @@ local function main(args)
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
Basically it does the following,
|
Basically it does the following,
|
||||||
|
|
||||||
1. hw tear
|
1. hw tear
|
||||||
2. lf em 4x05_write
|
2. lf em 4x05_write
|
||||||
3. lf em 4x05_read
|
3. lf em 4x05_read
|
||||||
|
|
||||||
The first two commands dont need a feedback from the system, so going with core.console commands.
|
The first two commands dont need a feedback from the system, so going with core.console commands.
|
||||||
Since the read needs demodulation of signal I opted to add that function from cmdlfem4x.c to the core lua scripting
|
Since the read needs demodulation of signal I opted to add that function from cmdlfem4x.c to the core lua scripting
|
||||||
core.em4x05_read(addr, password)
|
core.em4x05_read(addr, password)
|
||||||
|
|
||||||
--]]
|
--]]
|
||||||
local n, password, sd, ed
|
local n, password, sd, ed
|
||||||
|
|
||||||
for o, a in getopt.getopt(args, 'he:s:p:n:') do
|
for o, a in getopt.getopt(args, 'he:s:p:n:') do
|
||||||
if o == 'h' then return help() end
|
if o == 'h' then return help() end
|
||||||
if o == 'n' then n = tonumber(a) end
|
if o == 'n' then n = tonumber(a) end
|
||||||
|
@ -94,7 +94,7 @@ local function main(args)
|
||||||
if #password ~= 8 then
|
if #password ~= 8 then
|
||||||
password = ''
|
password = ''
|
||||||
end
|
end
|
||||||
|
|
||||||
local word14, err14 = core.em4x05_read(14, password)
|
local word14, err14 = core.em4x05_read(14, password)
|
||||||
if err14 then
|
if err14 then
|
||||||
return oops(err14)
|
return oops(err14)
|
||||||
|
@ -143,11 +143,11 @@ local function main(args)
|
||||||
print('target delay', sd ,ed)
|
print('target delay', sd ,ed)
|
||||||
print('read value', rd_value)
|
print('read value', rd_value)
|
||||||
print('write value', wr_value)
|
print('write value', wr_value)
|
||||||
print('==========================================')
|
print('==========================================')
|
||||||
|
|
||||||
local res_tear = 0
|
local res_tear = 0
|
||||||
local res_nowrite = 0
|
local res_nowrite = 0
|
||||||
|
|
||||||
-- fix at one specific delay
|
-- fix at one specific delay
|
||||||
if sd == ed then
|
if sd == ed then
|
||||||
n = 0
|
n = 0
|
||||||
|
@ -157,7 +157,7 @@ local function main(args)
|
||||||
local soon = 0
|
local soon = 0
|
||||||
local late = 0
|
local late = 0
|
||||||
while sd <= ed do
|
while sd <= ed do
|
||||||
|
|
||||||
if auto and n < 1 then -- n is a float
|
if auto and n < 1 then -- n is a float
|
||||||
print('[!] Reached n < 1 => '..ansicolors.yellow..'disabling automatic mode'..ansicolors.reset)
|
print('[!] Reached n < 1 => '..ansicolors.yellow..'disabling automatic mode'..ansicolors.reset)
|
||||||
ed = sd
|
ed = sd
|
||||||
|
@ -181,7 +181,7 @@ local function main(args)
|
||||||
soon = 0
|
soon = 0
|
||||||
late = 0
|
late = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
io.flush()
|
io.flush()
|
||||||
if core.kbd_enter_pressed() then
|
if core.kbd_enter_pressed() then
|
||||||
print("aborted by user")
|
print("aborted by user")
|
||||||
|
@ -200,16 +200,16 @@ local function main(args)
|
||||||
if err14 then
|
if err14 then
|
||||||
return oops(err14)
|
return oops(err14)
|
||||||
end
|
end
|
||||||
|
|
||||||
local wordstr14 = ('%08X'):format(word14)
|
local wordstr14 = ('%08X'):format(word14)
|
||||||
|
|
||||||
word15, err15 = core.em4x05_read(15, password)
|
word15, err15 = core.em4x05_read(15, password)
|
||||||
if err15 then
|
if err15 then
|
||||||
return oops(err15)
|
return oops(err15)
|
||||||
end
|
end
|
||||||
|
|
||||||
local wordstr15 = ('%08X'):format(word15)
|
local wordstr15 = ('%08X'):format(word15)
|
||||||
|
|
||||||
print(('[=] ref:'..rd_value..' 14:%08X 15:%08X '):format(word14, word15))
|
print(('[=] ref:'..rd_value..' 14:%08X 15:%08X '):format(word14, word15))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -635,7 +635,7 @@ static int Cmdaskmandemod(const char *Cmd) {
|
||||||
st = true;
|
st = true;
|
||||||
Cmd += 2;
|
Cmd += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
char amp = tolower(param_getchar(Cmd, 0));
|
char amp = tolower(param_getchar(Cmd, 0));
|
||||||
sscanf(Cmd, "%i %i %i %zu %c", &clk, &invert, &maxErr, &maxLen, &);
|
sscanf(Cmd, "%i %i %i %zu %c", &clk, &invert, &maxErr, &maxLen, &);
|
||||||
|
|
||||||
|
@ -992,7 +992,7 @@ static int CmdDecimate(const char *Cmd) {
|
||||||
"Performs decimation, by reducing samples N times in the grapbuf. Good for PSK\n",
|
"Performs decimation, by reducing samples N times in the grapbuf. Good for PSK\n",
|
||||||
"data decimate\n"
|
"data decimate\n"
|
||||||
"data decimate 4"
|
"data decimate 4"
|
||||||
);
|
);
|
||||||
|
|
||||||
void *argtable[] = {
|
void *argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
|
@ -1001,11 +1001,11 @@ static int CmdDecimate(const char *Cmd) {
|
||||||
};
|
};
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
int n = arg_get_int_def(ctx, 1, 2);
|
int n = arg_get_int_def(ctx, 1, 2);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
for (size_t i = 0; i < (GraphTraceLen / n); ++i)
|
for (size_t i = 0; i < (GraphTraceLen / n); ++i)
|
||||||
GraphBuffer[i] = GraphBuffer[i * n];
|
GraphBuffer[i] = GraphBuffer[i * n];
|
||||||
|
|
||||||
GraphTraceLen /= n;
|
GraphTraceLen /= n;
|
||||||
PrintAndLogEx(SUCCESS, "decimated by " _GREEN_("%u"), n);
|
PrintAndLogEx(SUCCESS, "decimated by " _GREEN_("%u"), n);
|
||||||
RepaintGraphWindow();
|
RepaintGraphWindow();
|
||||||
|
@ -1024,7 +1024,7 @@ static int CmdUndecimate(const char *Cmd) {
|
||||||
"Performs un-decimation, by repeating each sample N times in the graphbuf",
|
"Performs un-decimation, by repeating each sample N times in the graphbuf",
|
||||||
"data undecimate\n"
|
"data undecimate\n"
|
||||||
"data undecimate 4\n"
|
"data undecimate 4\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
void *argtable[] = {
|
void *argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
|
@ -1033,7 +1033,7 @@ static int CmdUndecimate(const char *Cmd) {
|
||||||
};
|
};
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
int factor = arg_get_int_def(ctx, 1, 2);
|
int factor = arg_get_int_def(ctx, 1, 2);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
//We have memory, don't we?
|
//We have memory, don't we?
|
||||||
int swap[MAX_GRAPH_TRACE_LEN] = {0};
|
int swap[MAX_GRAPH_TRACE_LEN] = {0};
|
||||||
|
@ -1042,9 +1042,9 @@ static int CmdUndecimate(const char *Cmd) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (count = 0; count < factor && s_index + count < MAX_GRAPH_TRACE_LEN; count++) {
|
for (count = 0; count < factor && s_index + count < MAX_GRAPH_TRACE_LEN; count++) {
|
||||||
swap[s_index + count] = (
|
swap[s_index + count] = (
|
||||||
(double)(factor - count) / (factor - 1)) * GraphBuffer[g_index] +
|
(double)(factor - count) / (factor - 1)) * GraphBuffer[g_index] +
|
||||||
((double)count / factor) * GraphBuffer[g_index + 1]
|
((double)count / factor) * GraphBuffer[g_index + 1]
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
s_index += count;
|
s_index += count;
|
||||||
g_index++;
|
g_index++;
|
||||||
|
@ -1701,7 +1701,7 @@ int CmdTuneSamples(const char *Cmd) {
|
||||||
|
|
||||||
// Q measure with Q=f/delta_f
|
// Q measure with Q=f/delta_f
|
||||||
double v_3db_scaled = (double)(package->peak_v * 0.707) / 512; // /512 == >>9
|
double v_3db_scaled = (double)(package->peak_v * 0.707) / 512; // /512 == >>9
|
||||||
uint32_t s2=0, s4=0;
|
uint32_t s2 = 0, s4 = 0;
|
||||||
for (int i = 1; i < 256; i++) {
|
for (int i = 1; i < 256; i++) {
|
||||||
if ((s2 == 0) && (package->results[i] > v_3db_scaled)) {
|
if ((s2 == 0) && (package->results[i] > v_3db_scaled)) {
|
||||||
s2 = i;
|
s2 = i;
|
||||||
|
@ -1715,10 +1715,10 @@ int CmdTuneSamples(const char *Cmd) {
|
||||||
if (s4 != 0) { // we got all our points of interest
|
if (s4 != 0) { // we got all our points of interest
|
||||||
double a = package->results[s2 - 1];
|
double a = package->results[s2 - 1];
|
||||||
double b = package->results[s2];
|
double b = package->results[s2];
|
||||||
double f1 = LF_DIV2FREQ(s2 - 1 + (v_3db_scaled - a)/(b-a));
|
double f1 = LF_DIV2FREQ(s2 - 1 + (v_3db_scaled - a) / (b - a));
|
||||||
double c = package->results[s4 - 1];
|
double c = package->results[s4 - 1];
|
||||||
double d = package->results[s4];
|
double d = package->results[s4];
|
||||||
double f2 = LF_DIV2FREQ(s4 - 1 + (c - v_3db_scaled)/(c-d));
|
double f2 = LF_DIV2FREQ(s4 - 1 + (c - v_3db_scaled) / (c - d));
|
||||||
lfq1 = LF_DIV2FREQ(package->peak_f) / (f1 - f2);
|
lfq1 = LF_DIV2FREQ(package->peak_f) / (f1 - f2);
|
||||||
PrintAndLogEx(SUCCESS, "Approx. Q factor (*): %.1lf by frequency bandwidth measurement", lfq1);
|
PrintAndLogEx(SUCCESS, "Approx. Q factor (*): %.1lf by frequency bandwidth measurement", lfq1);
|
||||||
}
|
}
|
||||||
|
@ -1955,10 +1955,10 @@ int CmdSave(const char *Cmd) {
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
||||||
|
|
||||||
bool as_wave = arg_get_lit(ctx, 1);
|
bool as_wave = arg_get_lit(ctx, 1);
|
||||||
|
|
||||||
int fnlen = 0;
|
int fnlen = 0;
|
||||||
char filename[FILE_PATH_SIZE] = {0};
|
char filename[FILE_PATH_SIZE] = {0};
|
||||||
CLIGetStrWithReturn(ctx, 2, (uint8_t*)filename, &fnlen);
|
CLIGetStrWithReturn(ctx, 2, (uint8_t *)filename, &fnlen);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
if (as_wave)
|
if (as_wave)
|
||||||
|
@ -2432,10 +2432,10 @@ static int try_detect_modulation(void) {
|
||||||
clk = GetAskClock("", false);
|
clk = GetAskClock("", false);
|
||||||
if (clk > 0) {
|
if (clk > 0) {
|
||||||
// 0 = auto clock
|
// 0 = auto clock
|
||||||
// 0 = no invert
|
// 0 = no invert
|
||||||
// 1 = maxError 1
|
// 1 = maxError 1
|
||||||
// 0 = max len
|
// 0 = max len
|
||||||
// false = no amplify
|
// false = no amplify
|
||||||
// false = no verbose
|
// false = no verbose
|
||||||
// false = no emSearch
|
// false = no emSearch
|
||||||
// 1 = Ask/Man
|
// 1 = Ask/Man
|
||||||
|
@ -2450,7 +2450,7 @@ static int try_detect_modulation(void) {
|
||||||
// false = no emSearch
|
// false = no emSearch
|
||||||
// 1 = Ask/Man
|
// 1 = Ask/Man
|
||||||
// st = true
|
// st = true
|
||||||
|
|
||||||
// ASK / biphase
|
// ASK / biphase
|
||||||
if ((ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS)) {
|
if ((ASKbiphaseDemod(0, 0, 0, 2, false) == PM3_SUCCESS)) {
|
||||||
tests[hits].modulation = DEMOD_BI;
|
tests[hits].modulation = DEMOD_BI;
|
||||||
|
@ -2465,11 +2465,11 @@ static int try_detect_modulation(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
clk = GetNrzClock("", false);
|
clk = GetNrzClock("", false);
|
||||||
if ((NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS)) {
|
if ((NRZrawDemod(0, 0, 1, false) == PM3_SUCCESS)) {
|
||||||
tests[hits].modulation = DEMOD_NRZ;
|
tests[hits].modulation = DEMOD_NRZ;
|
||||||
tests[hits].bitrate = clk;
|
tests[hits].bitrate = clk;
|
||||||
++hits;
|
++hits;
|
||||||
}
|
}
|
||||||
|
|
||||||
clk = GetPskClock("", false);
|
clk = GetPskClock("", false);
|
||||||
if (clk > 0) {
|
if (clk > 0) {
|
||||||
|
@ -2481,7 +2481,7 @@ static int try_detect_modulation(void) {
|
||||||
tests[hits].modulation = DEMOD_PSK1;
|
tests[hits].modulation = DEMOD_PSK1;
|
||||||
tests[hits].bitrate = clk;
|
tests[hits].bitrate = clk;
|
||||||
++hits;
|
++hits;
|
||||||
|
|
||||||
// get psk carrier
|
// get psk carrier
|
||||||
tests[hits].carrier = GetPskCarrier(false);
|
tests[hits].carrier = GetPskCarrier(false);
|
||||||
}
|
}
|
||||||
|
@ -2493,8 +2493,8 @@ static int try_detect_modulation(void) {
|
||||||
if (hits) {
|
if (hits) {
|
||||||
PrintAndLogEx(SUCCESS, "Found [%d] possible matches for modulation.", hits);
|
PrintAndLogEx(SUCCESS, "Found [%d] possible matches for modulation.", hits);
|
||||||
for (int i = 0; i < hits; ++i) {
|
for (int i = 0; i < hits; ++i) {
|
||||||
PrintAndLogEx(INFO, "--[%d]---------------", i + 1);
|
PrintAndLogEx(INFO, "--[%d]---------------", i + 1);
|
||||||
print_modulation(tests[i]);
|
print_modulation(tests[i]);
|
||||||
}
|
}
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2508,20 +2508,20 @@ static int CmdDataModulationSearch(const char *Cmd) {
|
||||||
CLIParserInit(&ctx, "data modulation",
|
CLIParserInit(&ctx, "data modulation",
|
||||||
"search LF signal after clock and modulation\n",
|
"search LF signal after clock and modulation\n",
|
||||||
"data modulation"
|
"data modulation"
|
||||||
);
|
);
|
||||||
|
|
||||||
void *argtable[] = {
|
void *argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
arg_param_end
|
arg_param_end
|
||||||
};
|
};
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
return try_detect_modulation();
|
return try_detect_modulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
static command_t CommandTable[] = {
|
static command_t CommandTable[] = {
|
||||||
{"help", CmdHelp, AlwaysAvailable, "This help"},
|
{"help", CmdHelp, AlwaysAvailable, "This help"},
|
||||||
|
|
||||||
{"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("Modulation") "-------------------------"},
|
{"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("Modulation") "-------------------------"},
|
||||||
{"biphaserawdecode", CmdBiphaseDecodeRaw, AlwaysAvailable, "Biphase decode bin stream in DemodBuffer"},
|
{"biphaserawdecode", CmdBiphaseDecodeRaw, AlwaysAvailable, "Biphase decode bin stream in DemodBuffer"},
|
||||||
{"detectclock", CmdDetectClockRate, AlwaysAvailable, "Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer"},
|
{"detectclock", CmdDetectClockRate, AlwaysAvailable, "Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer"},
|
||||||
|
@ -2529,7 +2529,7 @@ static command_t CommandTable[] = {
|
||||||
{"manrawdecode", Cmdmandecoderaw, AlwaysAvailable, "Manchester decode binary stream in DemodBuffer"},
|
{"manrawdecode", Cmdmandecoderaw, AlwaysAvailable, "Manchester decode binary stream in DemodBuffer"},
|
||||||
{"modulation", CmdDataModulationSearch, AlwaysAvailable, "Identify LF signal for clock and modulation"},
|
{"modulation", CmdDataModulationSearch, AlwaysAvailable, "Identify LF signal for clock and modulation"},
|
||||||
{"rawdemod", CmdRawDemod, AlwaysAvailable, "Demodulate the data in the GraphBuffer and output binary"},
|
{"rawdemod", CmdRawDemod, AlwaysAvailable, "Demodulate the data in the GraphBuffer and output binary"},
|
||||||
|
|
||||||
{"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("Graph") "-------------------------"},
|
{"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("Graph") "-------------------------"},
|
||||||
{"askedgedetect", CmdAskEdgeDetect, AlwaysAvailable, "[threshold] Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)"},
|
{"askedgedetect", CmdAskEdgeDetect, AlwaysAvailable, "[threshold] Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)"},
|
||||||
{"autocorr", CmdAutoCorr, AlwaysAvailable, "Autocorrelation over window"},
|
{"autocorr", CmdAutoCorr, AlwaysAvailable, "Autocorrelation over window"},
|
||||||
|
@ -2552,7 +2552,7 @@ static command_t CommandTable[] = {
|
||||||
|
|
||||||
{"convertbitstream", CmdConvertBitStream, AlwaysAvailable, "Convert GraphBuffer's 0/1 values to 127 / -127"},
|
{"convertbitstream", CmdConvertBitStream, AlwaysAvailable, "Convert GraphBuffer's 0/1 values to 127 / -127"},
|
||||||
{"getbitstream", CmdGetBitStream, AlwaysAvailable, "Convert GraphBuffer's >=1 values to 1 and <1 to 0"},
|
{"getbitstream", CmdGetBitStream, AlwaysAvailable, "Convert GraphBuffer's >=1 values to 1 and <1 to 0"},
|
||||||
|
|
||||||
|
|
||||||
{"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("General") "-------------------------"},
|
{"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("General") "-------------------------"},
|
||||||
{"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"},
|
{"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"},
|
||||||
|
|
|
@ -914,7 +914,7 @@ static int cmd_hf_fido_2get_assertion(const char *cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static command_t CommandTable[] = {
|
static command_t CommandTable[] = {
|
||||||
{"help", CmdHelp, AlwaysAvailable, "This help."},
|
{"help", CmdHelp, AlwaysAvailable, "This help."},
|
||||||
{"info", cmd_hf_fido_list, IfPm3Iso14443a, "List ISO 14443A history"},
|
{"info", cmd_hf_fido_list, IfPm3Iso14443a, "List ISO 14443A history"},
|
||||||
{"info", cmd_hf_fido_info, IfPm3Iso14443a, "Info about FIDO tag."},
|
{"info", cmd_hf_fido_info, IfPm3Iso14443a, "Info about FIDO tag."},
|
||||||
{"reg", cmd_hf_fido_register, IfPm3Iso14443a, "FIDO U2F Registration Message."},
|
{"reg", cmd_hf_fido_register, IfPm3Iso14443a, "FIDO U2F Registration Message."},
|
||||||
|
|
|
@ -173,11 +173,11 @@ static inline uint32_t next_state(uint32_t *bitarray, uint32_t state) {
|
||||||
line <<= 1;
|
line <<= 1;
|
||||||
}
|
}
|
||||||
index++;
|
index++;
|
||||||
while (state < (1 << 24) && bitarray[index] == 0x00000000 ) {
|
while (state < (1 << 24) && bitarray[index] == 0x00000000) {
|
||||||
index++;
|
index++;
|
||||||
state += 0x20;
|
state += 0x20;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state >= (1 << 24)) {
|
if (state >= (1 << 24)) {
|
||||||
return (1 << 24);
|
return (1 << 24);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2402,13 +2402,13 @@ static int CmdHF14AMfUCAuth(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t key_buf[16];
|
uint8_t key_buf[16];
|
||||||
uint8_t * key;
|
uint8_t *key;
|
||||||
int succeeded;
|
int succeeded;
|
||||||
|
|
||||||
// If no hex key is specified, try all known ones
|
// If no hex key is specified, try all known ones
|
||||||
if (strlen(Cmd) == 0) {
|
if (strlen(Cmd) == 0) {
|
||||||
succeeded = try_default_3des_keys(&key);
|
succeeded = try_default_3des_keys(&key);
|
||||||
// Else try user-supplied
|
// Else try user-supplied
|
||||||
} else {
|
} else {
|
||||||
if (param_gethex(Cmd, 0, key_buf, 32)) {
|
if (param_gethex(Cmd, 0, key_buf, 32)) {
|
||||||
PrintAndLogEx(WARNING, "Password must include 32 HEX symbols");
|
PrintAndLogEx(WARNING, "Password must include 32 HEX symbols");
|
||||||
|
@ -2840,7 +2840,7 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) {
|
||||||
interval = param_get32ex(Cmd, cmdp + 1, interval, 10);
|
interval = param_get32ex(Cmd, cmdp + 1, interval, 10);
|
||||||
//if (interval == 0) {
|
//if (interval == 0) {
|
||||||
// PrintAndLogEx(WARNING, "Wrong interval number");
|
// PrintAndLogEx(WARNING, "Wrong interval number");
|
||||||
//errors = true;
|
//errors = true;
|
||||||
//}
|
//}
|
||||||
cmdp += 2;
|
cmdp += 2;
|
||||||
break;
|
break;
|
||||||
|
@ -2940,7 +2940,7 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) {
|
||||||
if (isOK) {
|
if (isOK) {
|
||||||
memcpy(post, resp.data.asBytes, sizeof(post));
|
memcpy(post, resp.data.asBytes, sizeof(post));
|
||||||
got_post = true;
|
got_post = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (got_pre && got_post) {
|
if (got_pre && got_post) {
|
||||||
|
@ -2949,27 +2949,27 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) {
|
||||||
snprintf(prestr, sizeof(prestr), "%s", sprint_hex_inrow(pre, sizeof(pre)));
|
snprintf(prestr, sizeof(prestr), "%s", sprint_hex_inrow(pre, sizeof(pre)));
|
||||||
char poststr[20] = {0};
|
char poststr[20] = {0};
|
||||||
snprintf(poststr, sizeof(poststr), "%s", sprint_hex_inrow(post, sizeof(post)));
|
snprintf(poststr, sizeof(poststr), "%s", sprint_hex_inrow(post, sizeof(post)));
|
||||||
|
|
||||||
if (memcmp(pre, post, sizeof(pre)) == 0) {
|
if (memcmp(pre, post, sizeof(pre)) == 0) {
|
||||||
|
|
||||||
PrintAndLogEx(INFO, "Current %02d (0x%02X) %s"
|
PrintAndLogEx(INFO, "Current %02d (0x%02X) %s"
|
||||||
, blockNoUint
|
, blockNoUint
|
||||||
, blockNoUint
|
, blockNoUint
|
||||||
, poststr
|
, poststr
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// skip first message, since its the reset write.
|
// skip first message, since its the reset write.
|
||||||
if ( actualTime == startTime ) {
|
if (actualTime == startTime) {
|
||||||
PrintAndLogEx(INFO, "Inital write");
|
PrintAndLogEx(INFO, "Inital write");
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(INFO, _CYAN_("Tear off occured") " : %02d (0x%02X) %s vs " _RED_("%s")
|
PrintAndLogEx(INFO, _CYAN_("Tear off occured") " : %02d (0x%02X) %s vs " _RED_("%s")
|
||||||
, blockNoUint
|
, blockNoUint
|
||||||
, blockNoUint
|
, blockNoUint
|
||||||
, prestr
|
, prestr
|
||||||
, poststr
|
, poststr
|
||||||
);
|
);
|
||||||
|
|
||||||
lock_on = true;
|
lock_on = true;
|
||||||
|
|
||||||
if (phase_clear == -1)
|
if (phase_clear == -1)
|
||||||
|
@ -3017,10 +3017,10 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) {
|
||||||
|
|
||||||
PrintAndLogEx(INFO, "----------------------------------------------------");
|
PrintAndLogEx(INFO, "----------------------------------------------------");
|
||||||
if (phase_clear > - 1) {
|
if (phase_clear > - 1) {
|
||||||
PrintAndLogEx(INFO, "phase 1 (erase eeprom) could be " _YELLOW_("%d") " us" , phase_clear);
|
PrintAndLogEx(INFO, "phase 1 (erase eeprom) could be " _YELLOW_("%d") " us", phase_clear);
|
||||||
}
|
}
|
||||||
if (phase_newwr > - 1) {
|
if (phase_newwr > - 1) {
|
||||||
PrintAndLogEx(INFO, "phase 2 (new write) could be " _YELLOW_("%d") " us" , phase_newwr);
|
PrintAndLogEx(INFO, "phase 2 (new write) could be " _YELLOW_("%d") " us", phase_newwr);
|
||||||
}
|
}
|
||||||
PrintAndLogEx(NORMAL, "");
|
PrintAndLogEx(NORMAL, "");
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
|
|
|
@ -641,10 +641,10 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) {
|
||||||
uint8_t progress = 0;
|
uint8_t progress = 0;
|
||||||
uint8_t step0[2] = {0xcd, 0x0d};
|
uint8_t step0[2] = {0xcd, 0x0d};
|
||||||
uint8_t step1[3] = {0xcd, 0x00, 10}; // select e-paper type and reset e-paper
|
uint8_t step1[3] = {0xcd, 0x00, 10}; // select e-paper type and reset e-paper
|
||||||
// 4 :2.13inch e-Paper
|
// 4 :2.13inch e-Paper
|
||||||
// 7 :2.9inch e-Paper
|
// 7 :2.9inch e-Paper
|
||||||
// 10 :4.2inch e-Paper
|
// 10 :4.2inch e-Paper
|
||||||
// 14 :7.5inch e-Paper
|
// 14 :7.5inch e-Paper
|
||||||
uint8_t step2[2] = {0xcd, 0x01}; // e-paper normal mode type:
|
uint8_t step2[2] = {0xcd, 0x01}; // e-paper normal mode type:
|
||||||
uint8_t step3[2] = {0xcd, 0x02}; // e-paper config1
|
uint8_t step3[2] = {0xcd, 0x02}; // e-paper config1
|
||||||
uint8_t step4[2] = {0xcd, 0x03}; // e-paper power on
|
uint8_t step4[2] = {0xcd, 0x03}; // e-paper power on
|
||||||
|
@ -652,11 +652,11 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) {
|
||||||
uint8_t step6[2] = {0xcd, 0x06}; // EDP load to main
|
uint8_t step6[2] = {0xcd, 0x06}; // EDP load to main
|
||||||
uint8_t step7[2] = {0xcd, 0x07}; // Data preparation
|
uint8_t step7[2] = {0xcd, 0x07}; // Data preparation
|
||||||
|
|
||||||
uint8_t step8[123] = {0xcd, 0x08, 0x64}; // Data start command
|
uint8_t step8[123] = {0xcd, 0x08, 0x64}; // Data start command
|
||||||
// 2.13inch(0x10:Send 16 data at a time)
|
// 2.13inch(0x10:Send 16 data at a time)
|
||||||
// 2.9inch(0x10:Send 16 data at a time)
|
// 2.9inch(0x10:Send 16 data at a time)
|
||||||
// 4.2inch(0x64:Send 100 data at a time)
|
// 4.2inch(0x64:Send 100 data at a time)
|
||||||
// 7.5inch(0x78:Send 120 data at a time)
|
// 7.5inch(0x78:Send 120 data at a time)
|
||||||
uint8_t step9[2] = {0xcd, 0x18}; // e-paper power on
|
uint8_t step9[2] = {0xcd, 0x18}; // e-paper power on
|
||||||
uint8_t step10[2] = {0xcd, 0x09}; // Refresh e-paper
|
uint8_t step10[2] = {0xcd, 0x09}; // Refresh e-paper
|
||||||
uint8_t step11[2] = {0xcd, 0x0a}; // wait for ready
|
uint8_t step11[2] = {0xcd, 0x0a}; // wait for ready
|
||||||
|
|
|
@ -202,7 +202,7 @@ static int CmdHIDSim(const char *Cmd) {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
arg_str0("w", "wiegand", "<format>", "see " _YELLOW_("`wiegand list`") " for available formats"),
|
arg_str0("w", "wiegand", "<format>", "see " _YELLOW_("`wiegand list`") " for available formats"),
|
||||||
arg_u64_0(NULL, "fc", "<dec>", "facility code"),
|
arg_u64_0(NULL, "fc", "<dec>", "facility code"),
|
||||||
arg_u64_0(NULL, "cn", "<dec>", "card number"),
|
arg_u64_0(NULL, "cn", "<dec>", "card number"),
|
||||||
arg_int0("i", NULL, "<dec>", "issue level"),
|
arg_int0("i", NULL, "<dec>", "issue level"),
|
||||||
arg_int0("o", "oem", "<dec>", "OEM code"),
|
arg_int0("o", "oem", "<dec>", "OEM code"),
|
||||||
arg_strx0("r", "raw", "<hex>", "raw bytes"),
|
arg_strx0("r", "raw", "<hex>", "raw bytes"),
|
||||||
|
@ -214,24 +214,24 @@ static int CmdHIDSim(const char *Cmd) {
|
||||||
char format[16] = {0};
|
char format[16] = {0};
|
||||||
int format_len = 0;
|
int format_len = 0;
|
||||||
CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)format, sizeof(format), &format_len);
|
CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)format, sizeof(format), &format_len);
|
||||||
|
|
||||||
wiegand_card_t card;
|
wiegand_card_t card;
|
||||||
memset(&card, 0, sizeof(wiegand_card_t));
|
memset(&card, 0, sizeof(wiegand_card_t));
|
||||||
card.FacilityCode = arg_get_u32_def(ctx, 2, 0);
|
card.FacilityCode = arg_get_u32_def(ctx, 2, 0);
|
||||||
card.CardNumber = arg_get_u32_def(ctx, 3, 0);
|
card.CardNumber = arg_get_u32_def(ctx, 3, 0);
|
||||||
card.IssueLevel = arg_get_u32_def(ctx, 4, 0);
|
card.IssueLevel = arg_get_u32_def(ctx, 4, 0);
|
||||||
card.OEM = arg_get_u32_def(ctx, 5, 0);
|
card.OEM = arg_get_u32_def(ctx, 5, 0);
|
||||||
|
|
||||||
int raw_len = 0;
|
int raw_len = 0;
|
||||||
char raw[40] = {0};
|
char raw[40] = {0};
|
||||||
CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)raw, sizeof(raw), &raw_len);
|
CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)raw, sizeof(raw), &raw_len);
|
||||||
|
|
||||||
//bool q5 = arg_get_lit(ctx, 7);
|
//bool q5 = arg_get_lit(ctx, 7);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
wiegand_message_t packed;
|
wiegand_message_t packed;
|
||||||
memset(&packed, 0, sizeof(wiegand_message_t));
|
memset(&packed, 0, sizeof(wiegand_message_t));
|
||||||
|
|
||||||
// format validation
|
// format validation
|
||||||
int format_idx = HIDFindCardFormat((char *)format);
|
int format_idx = HIDFindCardFormat((char *)format);
|
||||||
if (format_idx == -1 && raw_len == 0) {
|
if (format_idx == -1 && raw_len == 0) {
|
||||||
|
@ -253,10 +253,10 @@ static int CmdHIDSim(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (raw_len == 0) {
|
if (raw_len == 0) {
|
||||||
PrintAndLogEx(INFO, "Simulating HID tag");
|
PrintAndLogEx(INFO, "Simulating HID tag");
|
||||||
HIDTryUnpack(&packed, false);
|
HIDTryUnpack(&packed, false);
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(INFO, "Simulating HID tag using raw " _GREEN_("%s"), raw);
|
PrintAndLogEx(INFO, "Simulating HID tag using raw " _GREEN_("%s"), raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintAndLogEx(INFO, "Press pm3-button to abort simulation");
|
PrintAndLogEx(INFO, "Press pm3-button to abort simulation");
|
||||||
|
@ -295,7 +295,7 @@ static int CmdHIDClone(const char *Cmd) {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
arg_str0("w", "wiegand", "<format>", "see " _YELLOW_("`wiegand list`") " for available formats"),
|
arg_str0("w", "wiegand", "<format>", "see " _YELLOW_("`wiegand list`") " for available formats"),
|
||||||
arg_u64_0(NULL, "fc", "<dec>", "facility code"),
|
arg_u64_0(NULL, "fc", "<dec>", "facility code"),
|
||||||
arg_u64_0(NULL, "cn", "<dec>", "card number"),
|
arg_u64_0(NULL, "cn", "<dec>", "card number"),
|
||||||
arg_int0("i", NULL, "<dec>", "issue level"),
|
arg_int0("i", NULL, "<dec>", "issue level"),
|
||||||
arg_int0("o", "oem", "<dec>", "OEM code"),
|
arg_int0("o", "oem", "<dec>", "OEM code"),
|
||||||
arg_strx0("r", "raw", "<hex>", "raw bytes"),
|
arg_strx0("r", "raw", "<hex>", "raw bytes"),
|
||||||
|
@ -307,24 +307,24 @@ static int CmdHIDClone(const char *Cmd) {
|
||||||
char format[16] = {0};
|
char format[16] = {0};
|
||||||
int format_len = 0;
|
int format_len = 0;
|
||||||
CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)format, sizeof(format), &format_len);
|
CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)format, sizeof(format), &format_len);
|
||||||
|
|
||||||
wiegand_card_t card;
|
wiegand_card_t card;
|
||||||
memset(&card, 0, sizeof(wiegand_card_t));
|
memset(&card, 0, sizeof(wiegand_card_t));
|
||||||
card.FacilityCode = arg_get_u32_def(ctx, 2, 0);
|
card.FacilityCode = arg_get_u32_def(ctx, 2, 0);
|
||||||
card.CardNumber = arg_get_u32_def(ctx, 3, 0);
|
card.CardNumber = arg_get_u32_def(ctx, 3, 0);
|
||||||
card.IssueLevel = arg_get_u32_def(ctx, 4, 0);
|
card.IssueLevel = arg_get_u32_def(ctx, 4, 0);
|
||||||
card.OEM = arg_get_u32_def(ctx, 5, 0);
|
card.OEM = arg_get_u32_def(ctx, 5, 0);
|
||||||
|
|
||||||
int raw_len = 0;
|
int raw_len = 0;
|
||||||
char raw[40] = {0};
|
char raw[40] = {0};
|
||||||
CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)raw, sizeof(raw), &raw_len);
|
CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)raw, sizeof(raw), &raw_len);
|
||||||
|
|
||||||
//bool q5 = arg_get_lit(ctx, 7);
|
//bool q5 = arg_get_lit(ctx, 7);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
wiegand_message_t packed;
|
wiegand_message_t packed;
|
||||||
memset(&packed, 0, sizeof(wiegand_message_t));
|
memset(&packed, 0, sizeof(wiegand_message_t));
|
||||||
|
|
||||||
// format validation
|
// format validation
|
||||||
int format_idx = HIDFindCardFormat((char *)format);
|
int format_idx = HIDFindCardFormat((char *)format);
|
||||||
if (format_idx == -1 && raw_len == 0) {
|
if (format_idx == -1 && raw_len == 0) {
|
||||||
|
@ -346,10 +346,10 @@ static int CmdHIDClone(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (raw_len == 0) {
|
if (raw_len == 0) {
|
||||||
PrintAndLogEx(INFO, "Preparing to clone HID tag");
|
PrintAndLogEx(INFO, "Preparing to clone HID tag");
|
||||||
HIDTryUnpack(&packed, false);
|
HIDTryUnpack(&packed, false);
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(INFO, "Preparing to clone HID tag using raw " _YELLOW_("%s"), raw);
|
PrintAndLogEx(INFO, "Preparing to clone HID tag using raw " _YELLOW_("%s"), raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
lf_hidsim_t payload;
|
lf_hidsim_t payload;
|
||||||
|
|
|
@ -106,18 +106,18 @@ typedef struct {
|
||||||
} t5555_tracedata_t;
|
} t5555_tracedata_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
DEMOD_NRZ = 0x00,
|
DEMOD_NRZ = 0x00,
|
||||||
DEMOD_PSK1 = 0x01,
|
DEMOD_PSK1 = 0x01,
|
||||||
DEMOD_PSK2 = 0x02,
|
DEMOD_PSK2 = 0x02,
|
||||||
DEMOD_PSK3 = 0x03,
|
DEMOD_PSK3 = 0x03,
|
||||||
DEMOD_FSK1 = 0x04,
|
DEMOD_FSK1 = 0x04,
|
||||||
DEMOD_FSK1a = 0x05,
|
DEMOD_FSK1a = 0x05,
|
||||||
DEMOD_FSK2 = 0x06,
|
DEMOD_FSK2 = 0x06,
|
||||||
DEMOD_FSK2a = 0x07,
|
DEMOD_FSK2a = 0x07,
|
||||||
DEMOD_FSK = 0xF0, //generic FSK (auto detect FCs)
|
DEMOD_FSK = 0xF0, //generic FSK (auto detect FCs)
|
||||||
DEMOD_ASK = 0x08,
|
DEMOD_ASK = 0x08,
|
||||||
DEMOD_BI = 0x10,
|
DEMOD_BI = 0x10,
|
||||||
DEMOD_BIa = 0x18,
|
DEMOD_BIa = 0x18,
|
||||||
} t55xx_modulation;
|
} t55xx_modulation;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -587,28 +587,28 @@ static int CmdTraceSave(const char *Cmd) {
|
||||||
int CmdTraceList(const char *Cmd) {
|
int CmdTraceList(const char *Cmd) {
|
||||||
CLIParserContext *ctx;
|
CLIParserContext *ctx;
|
||||||
CLIParserInit(&ctx, "trace list",
|
CLIParserInit(&ctx, "trace list",
|
||||||
"Annotate trace buffer with selected protocol data\n"
|
"Annotate trace buffer with selected protocol data\n"
|
||||||
"You can load a trace from file (see `trace load -h`) or it be downloaded from device by default\n",
|
"You can load a trace from file (see `trace load -h`) or it be downloaded from device by default\n",
|
||||||
"trace list -t raw -> just show raw data without annotations\n"
|
"trace list -t raw -> just show raw data without annotations\n"
|
||||||
"trace list -t 14a -> interpret as " _YELLOW_("ISO14443-A") " communications\n"
|
"trace list -t 14a -> interpret as " _YELLOW_("ISO14443-A") " communications\n"
|
||||||
"trace list -t thinfilm -> interpret as " _YELLOW_("Thinfilm") " communications\n"
|
"trace list -t thinfilm -> interpret as " _YELLOW_("Thinfilm") " communications\n"
|
||||||
"trace list -t topaz -> interpret as " _YELLOW_("Topaz") " communications\n"
|
"trace list -t topaz -> interpret as " _YELLOW_("Topaz") " communications\n"
|
||||||
"trace list -t mf -> interpret as " _YELLOW_("MIFARE Classic") " communications and decrypt crypto1 stream\n"
|
"trace list -t mf -> interpret as " _YELLOW_("MIFARE Classic") " communications and decrypt crypto1 stream\n"
|
||||||
"trace list -t des -> interpret as " _YELLOW_("MIFARE DESFire") " communications\n"
|
"trace list -t des -> interpret as " _YELLOW_("MIFARE DESFire") " communications\n"
|
||||||
"trace list -t 14b -> interpret as " _YELLOW_("ISO14443-B") " communications\n"
|
"trace list -t 14b -> interpret as " _YELLOW_("ISO14443-B") " communications\n"
|
||||||
"trace list -t 7816 -> interpret as " _YELLOW_("ISO7816-4") " communications\n"
|
"trace list -t 7816 -> interpret as " _YELLOW_("ISO7816-4") " communications\n"
|
||||||
"trace list -t 15 -> interpret as " _YELLOW_("ISO15693") " communications\n"
|
"trace list -t 15 -> interpret as " _YELLOW_("ISO15693") " communications\n"
|
||||||
"trace list -t iclass -> interpret as " _YELLOW_("iCLASS") " communications\n"
|
"trace list -t iclass -> interpret as " _YELLOW_("iCLASS") " communications\n"
|
||||||
"trace list -t legic -> interpret as " _YELLOW_("LEGIC") " communications\n"
|
"trace list -t legic -> interpret as " _YELLOW_("LEGIC") " communications\n"
|
||||||
"trace list -t felica -> interpret as " _YELLOW_("ISO18092 / FeliCa") " communications\n"
|
"trace list -t felica -> interpret as " _YELLOW_("ISO18092 / FeliCa") " communications\n"
|
||||||
"trace list -t hitag1 -> interpret as " _YELLOW_("Hitag1") " communications\n"
|
"trace list -t hitag1 -> interpret as " _YELLOW_("Hitag1") " communications\n"
|
||||||
"trace list -t hitag2 -> interpret as " _YELLOW_("Hitag2") " communications\n"
|
"trace list -t hitag2 -> interpret as " _YELLOW_("Hitag2") " communications\n"
|
||||||
"trace list -t hitags -> interpret as " _YELLOW_("HitagS") " communications\n"
|
"trace list -t hitags -> interpret as " _YELLOW_("HitagS") " communications\n"
|
||||||
"trace list -t lto -> interpret as " _YELLOW_("LTO-CM") " communications\n"
|
"trace list -t lto -> interpret as " _YELLOW_("LTO-CM") " communications\n"
|
||||||
"trace list -t cryptorf -> interpret as " _YELLOW_("CryptoRF") " communitcations\n"
|
"trace list -t cryptorf -> interpret as " _YELLOW_("CryptoRF") " communitcations\n"
|
||||||
"trace list -t 14a f -> show frame delay times\n"
|
"trace list -t 14a f -> show frame delay times\n"
|
||||||
"trace list -t 14a 1 -> use trace buffer "
|
"trace list -t 14a 1 -> use trace buffer "
|
||||||
);
|
);
|
||||||
|
|
||||||
void *argtable[] = {
|
void *argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
|
@ -618,24 +618,24 @@ int CmdTraceList(const char *Cmd) {
|
||||||
arg_lit0("r", NULL, "show relative times (gap and duration)"),
|
arg_lit0("r", NULL, "show relative times (gap and duration)"),
|
||||||
arg_lit0("u", NULL, "display times in microseconds instead of clock cycles"),
|
arg_lit0("u", NULL, "display times in microseconds instead of clock cycles"),
|
||||||
arg_lit0("x", NULL, "show hexdump to convert to pcap(ng)\n"
|
arg_lit0("x", NULL, "show hexdump to convert to pcap(ng)\n"
|
||||||
" or to import into Wireshark using encapsulation type \"ISO 14443\""),
|
" or to import into Wireshark using encapsulation type \"ISO 14443\""),
|
||||||
arg_strx0("t", "type", NULL, "protocol to annotate the trace"),
|
arg_strx0("t", "type", NULL, "protocol to annotate the trace"),
|
||||||
arg_param_end
|
arg_param_end
|
||||||
};
|
};
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
||||||
|
|
||||||
bool use_buffer = arg_get_lit(ctx, 1);
|
bool use_buffer = arg_get_lit(ctx, 1);
|
||||||
bool show_wait_cycles = arg_get_lit(ctx, 2);
|
bool show_wait_cycles = arg_get_lit(ctx, 2);
|
||||||
bool mark_crc = arg_get_lit(ctx, 3);
|
bool mark_crc = arg_get_lit(ctx, 3);
|
||||||
bool use_relative = arg_get_lit(ctx, 4);
|
bool use_relative = arg_get_lit(ctx, 4);
|
||||||
bool use_us = arg_get_lit(ctx, 5);
|
bool use_us = arg_get_lit(ctx, 5);
|
||||||
bool show_hex = arg_get_lit(ctx, 6);
|
bool show_hex = arg_get_lit(ctx, 6);
|
||||||
|
|
||||||
int tlen = 0;
|
int tlen = 0;
|
||||||
char type[10] = {0};
|
char type[10] = {0};
|
||||||
CLIParamStrToBuf(arg_get_str(ctx, 7), (uint8_t *)type, sizeof(type), &tlen);
|
CLIParamStrToBuf(arg_get_str(ctx, 7), (uint8_t *)type, sizeof(type), &tlen);
|
||||||
str_lower(type);
|
str_lower(type);
|
||||||
|
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
|
@ -660,9 +660,9 @@ int CmdTraceList(const char *Cmd) {
|
||||||
else if (strcmp(type, "thinfilm") == 0) protocol = THINFILM;
|
else if (strcmp(type, "thinfilm") == 0) protocol = THINFILM;
|
||||||
else if (strcmp(type, "lto") == 0) protocol = LTO;
|
else if (strcmp(type, "lto") == 0) protocol = LTO;
|
||||||
else if (strcmp(type, "cryptorf") == 0) protocol = PROTO_CRYPTORF;
|
else if (strcmp(type, "cryptorf") == 0) protocol = PROTO_CRYPTORF;
|
||||||
else if (strcmp(type, "raw") == 0) protocol = -1;
|
else if (strcmp(type, "raw") == 0) protocol = -1;
|
||||||
|
|
||||||
if (use_buffer == false || (g_traceLen == 0) ) {
|
if (use_buffer == false || (g_traceLen == 0)) {
|
||||||
download_trace();
|
download_trace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,7 +761,7 @@ int CmdTraceList(const char *Cmd) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (show_hex)
|
if (show_hex)
|
||||||
PrintAndLogEx(HINT, "syntax to use: " _YELLOW_("`text2pcap -t \"%%S.\" -l 264 -n <input-text-file> <output-pcapng-file>`"));
|
PrintAndLogEx(HINT, "syntax to use: " _YELLOW_("`text2pcap -t \"%%S.\" -l 264 -n <input-text-file> <output-pcapng-file>`"));
|
||||||
|
|
||||||
|
|
|
@ -818,7 +818,7 @@ int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidt
|
||||||
|
|
||||||
size_t paylen = sizeof(struct p) + size;
|
size_t paylen = sizeof(struct p) + size;
|
||||||
struct p *payload = calloc(1, paylen);
|
struct p *payload = calloc(1, paylen);
|
||||||
|
|
||||||
payload->blockno = blockNum;
|
payload->blockno = blockNum;
|
||||||
payload->blockcnt = blocksCount;
|
payload->blockcnt = blocksCount;
|
||||||
payload->blockwidth = blockBtWidth;
|
payload->blockwidth = blockBtWidth;
|
||||||
|
|
|
@ -1121,9 +1121,9 @@ static int l_em4x05_read(lua_State *L) {
|
||||||
uint32_t word = 0;
|
uint32_t word = 0;
|
||||||
int res = EM4x05ReadWord_ext(addr, password, use_pwd, &word);
|
int res = EM4x05ReadWord_ext(addr, password, use_pwd, &word);
|
||||||
if (res != PM3_SUCCESS) {
|
if (res != PM3_SUCCESS) {
|
||||||
return returnToLuaWithError(L, "Failed to read EM4x05 data");
|
return returnToLuaWithError(L, "Failed to read EM4x05 data");
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_pushinteger(L, word);
|
lua_pushinteger(L, word);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1244,10 +1244,10 @@ static int l_cwd(lua_State *L) {
|
||||||
// ref: https://github.com/RfidResearchGroup/proxmark3/issues/891
|
// ref: https://github.com/RfidResearchGroup/proxmark3/issues/891
|
||||||
// redirect LUA's print to Proxmark3 PrintAndLogEx
|
// redirect LUA's print to Proxmark3 PrintAndLogEx
|
||||||
static int l_printandlogex(lua_State *L) {
|
static int l_printandlogex(lua_State *L) {
|
||||||
int n = lua_gettop(L);
|
int n = lua_gettop(L);
|
||||||
for (int i = 1; i <= n; i++) {
|
for (int i = 1; i <= n; i++) {
|
||||||
if (lua_isstring(L, i)) {
|
if (lua_isstring(L, i)) {
|
||||||
PrintAndLogEx(NORMAL, "%s\t" NOLF, lua_tostring(L, i) );
|
PrintAndLogEx(NORMAL, "%s\t" NOLF, lua_tostring(L, i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PrintAndLogEx(NORMAL, "");
|
PrintAndLogEx(NORMAL, "");
|
||||||
|
|
|
@ -47,44 +47,45 @@ Check column "offline" for their availability.
|
||||||
|command |offline |description
|
|command |offline |description
|
||||||
|------- |------- |-----------
|
|------- |------- |-----------
|
||||||
|`data help `|Y |`This help`
|
|`data help `|Y |`This help`
|
||||||
|`data askedgedetect `|Y |`[threshold] Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)`
|
|`data biphaserawdecode `|Y |`Biphase decode bin stream in DemodBuffer`
|
||||||
|`data autocorr `|Y |`[window length] [g] -- Autocorrelation over window - g to save back to GraphBuffer (overwrite)`
|
|`data detectclock `|Y |`Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer`
|
||||||
|`data biphaserawdecode `|Y |`[offset] [invert<0|1>] [maxErr] -- Biphase decode bin stream in DemodBuffer (offset = 0|1 bits to shift the decode start)`
|
|
||||||
|`data bin2hex `|Y |`<digits> -- Converts binary to hexadecimal`
|
|
||||||
|`data bitsamples `|N |`Get raw samples as bitstring`
|
|
||||||
|`data buffclear `|Y |`Clears bigbuff on deviceside and graph window`
|
|
||||||
|`data convertbitstream `|Y |`Convert GraphBuffer's 0/1 values to 127 / -127`
|
|
||||||
|`data dec `|Y |`Decimate samples`
|
|
||||||
|`data detectclock `|Y |`[<a|f|n|p>] Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer`
|
|
||||||
|`data fsktonrz `|Y |`Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk)`
|
|`data fsktonrz `|Y |`Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk)`
|
||||||
|`data getbitstream `|Y |`Convert GraphBuffer's >=1 values to 1 and <1 to 0`
|
|`data manrawdecode `|Y |`Manchester decode binary stream in DemodBuffer`
|
||||||
|`data grid `|Y |`<x> <y> -- overlay grid on graph window, use zero value to turn off either`
|
|`data modulation `|Y |`Identify LF signal for clock and modulation`
|
||||||
|`data hexsamples `|N |`<bytes> [<offset>] -- Dump big buffer as hex bytes`
|
|`data rawdemod `|Y |`Demodulate the data in the GraphBuffer and output binary`
|
||||||
|`data hex2bin `|Y |`<hexadecimal> -- Converts hexadecimal to binary`
|
|`data askedgedetect `|Y |`[threshold] Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)`
|
||||||
|
|`data autocorr `|Y |`Autocorrelation over window`
|
||||||
|
|`data dirthreshold `|Y |`<thres up> <thres down> -- Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev.`
|
||||||
|
|`data decimate `|Y |`Decimate samples`
|
||||||
|
|`data undecimate `|Y |`Un-decimate samples`
|
||||||
|`data hide `|Y |`Hide graph window`
|
|`data hide `|Y |`Hide graph window`
|
||||||
|`data hpf `|Y |`Remove DC offset from trace`
|
|`data hpf `|Y |`Remove DC offset from trace`
|
||||||
|`data load `|Y |`<filename> -- Load trace (to graph window`
|
|`data iir `|Y |`apply IIR buttersworth filter on plotdata`
|
||||||
|
|`data grid `|Y |`<x> <y> -- overlay grid on graph window, use zero value to turn off either`
|
||||||
|`data ltrim `|Y |`<samples> -- Trim samples from left of trace`
|
|`data ltrim `|Y |`<samples> -- Trim samples from left of trace`
|
||||||
|`data rtrim `|Y |`<location to end trace> -- Trim samples from right of trace`
|
|
||||||
|`data mtrim `|Y |`<start> <stop> -- Trim out samples from the specified start to the specified stop`
|
|`data mtrim `|Y |`<start> <stop> -- Trim out samples from the specified start to the specified stop`
|
||||||
|`data manrawdecode `|Y |`[invert] [maxErr] -- Manchester decode binary stream in DemodBuffer`
|
|
||||||
|`data norm `|Y |`Normalize max/min to +/-128`
|
|`data norm `|Y |`Normalize max/min to +/-128`
|
||||||
|`data plot `|Y |`Show graph window (hit 'h' in window for keystroke help)`
|
|`data plot `|Y |`Show graph window (hit 'h' in window for keystroke help)`
|
||||||
|`data printdemodbuffer `|Y |`[x] [o] <offset> [l] <length> -- print the data in the DemodBuffer - 'x' for hex output`
|
|`data rtrim `|Y |`<location to end trace> -- Trim samples from right of trace`
|
||||||
|`data rawdemod `|Y |`[modulation] ... <options> -see help (h option) -- Demodulate the data in the GraphBuffer and output binary`
|
|
||||||
|`data samples `|N |`[512 - 40000] -- Get raw samples for graph window (GraphBuffer)`
|
|
||||||
|`data save `|Y |`Save trace (from graph window)`
|
|
||||||
|`data setgraphmarkers `|Y |`[orange_marker] [blue_marker] (in graph window)`
|
|`data setgraphmarkers `|Y |`[orange_marker] [blue_marker] (in graph window)`
|
||||||
|
|`data shiftgraphzero `|Y |`<shift> -- Shift 0 for Graphed wave + or - shift value`
|
||||||
|`data timescale `|Y |`Set a timescale to get a differential reading between the yellow and purple markers as time duration
|
|`data timescale `|Y |`Set a timescale to get a differential reading between the yellow and purple markers as time duration
|
||||||
`
|
`
|
||||||
|`data setdebugmode `|Y |`<0|1|2> -- Set Debugging Level on client side`
|
|
||||||
|`data shiftgraphzero `|Y |`<shift> -- Shift 0 for Graphed wave + or - shift value`
|
|
||||||
|`data dirthreshold `|Y |`<thres up> <thres down> -- Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev.`
|
|
||||||
|`data tune `|N |`Get hw tune samples for graph window`
|
|
||||||
|`data undec `|Y |`Un-decimate samples by 2`
|
|
||||||
|`data zerocrossings `|Y |`Count time between zero-crossings`
|
|`data zerocrossings `|Y |`Count time between zero-crossings`
|
||||||
|`data iir `|Y |`apply IIR buttersworth filter on plotdata`
|
|`data convertbitstream `|Y |`Convert GraphBuffer's 0/1 values to 127 / -127`
|
||||||
|
|`data getbitstream `|Y |`Convert GraphBuffer's >=1 values to 1 and <1 to 0`
|
||||||
|
|`data bin2hex `|Y |`Converts binary to hexadecimal`
|
||||||
|
|`data bitsamples `|N |`Get raw samples as bitstring`
|
||||||
|
|`data clear `|Y |`Clears bigbuf on deviceside and graph window`
|
||||||
|
|`data hexsamples `|N |`<bytes> [<offset>] -- Dump big buffer as hex bytes`
|
||||||
|
|`data hex2bin `|Y |`Converts hexadecimal to binary`
|
||||||
|
|`data load `|Y |`Load contents of file into graph window`
|
||||||
|`data ndef `|Y |`Decode NDEF records`
|
|`data ndef `|Y |`Decode NDEF records`
|
||||||
|
|`data print `|Y |`print the data in the DemodBuffer`
|
||||||
|
|`data samples `|N |`[512 - 40000] -- Get raw samples for graph window (GraphBuffer)`
|
||||||
|
|`data save `|Y |`Save signal trace data (from graph window)`
|
||||||
|
|`data setdebugmode `|Y |`<0|1|2> -- Set Debugging Level on client side`
|
||||||
|
|`data tune `|N |`Measure tuning of device antenna. Results shown in graph window`
|
||||||
|
|
||||||
|
|
||||||
### emv
|
### emv
|
||||||
|
@ -232,6 +233,7 @@ Check column "offline" for their availability.
|
||||||
|command |offline |description
|
|command |offline |description
|
||||||
|------- |------- |-----------
|
|------- |------- |-----------
|
||||||
|`hf fido help `|Y |`This help.`
|
|`hf fido help `|Y |`This help.`
|
||||||
|
|`hf fido info `|N |`List ISO 14443A history`
|
||||||
|`hf fido info `|N |`Info about FIDO tag.`
|
|`hf fido info `|N |`Info about FIDO tag.`
|
||||||
|`hf fido reg `|N |`FIDO U2F Registration Message.`
|
|`hf fido reg `|N |`FIDO U2F Registration Message.`
|
||||||
|`hf fido auth `|N |`FIDO U2F Authentication Message.`
|
|`hf fido auth `|N |`FIDO U2F Authentication Message.`
|
||||||
|
@ -502,6 +504,7 @@ Check column "offline" for their availability.
|
||||||
|`hw setmux `|N |`Set the ADC mux to a specific value`
|
|`hw setmux `|N |`Set the ADC mux to a specific value`
|
||||||
|`hw standalone `|N |`Jump to the standalone mode`
|
|`hw standalone `|N |`Jump to the standalone mode`
|
||||||
|`hw status `|N |`Show runtime status information about the connected Proxmark3`
|
|`hw status `|N |`Show runtime status information about the connected Proxmark3`
|
||||||
|
|`hw tearoff `|N |`Program a tearoff hook for the next command supporting tearoff`
|
||||||
|`hw tia `|N |`Trigger a Timing Interval Acquisition to re-adjust the RealTimeCounter divider`
|
|`hw tia `|N |`Trigger a Timing Interval Acquisition to re-adjust the RealTimeCounter divider`
|
||||||
|`hw tune `|N |`Measure antenna tuning`
|
|`hw tune `|N |`Measure antenna tuning`
|
||||||
|`hw version `|N |`Show version information about the connected Proxmark3`
|
|`hw version `|N |`Show version information about the connected Proxmark3`
|
||||||
|
@ -581,17 +584,17 @@ Check column "offline" for their availability.
|
||||||
|`lf em 4x50_wipe `|N |`wipe data from EM4x50`
|
|`lf em 4x50_wipe `|N |`wipe data from EM4x50`
|
||||||
|
|
||||||
|
|
||||||
### lf fdx
|
### lf fdxb
|
||||||
|
|
||||||
{ FDX-B RFIDs... }
|
{ FDX-B RFIDs... }
|
||||||
|
|
||||||
|command |offline |description
|
|command |offline |description
|
||||||
|------- |------- |-----------
|
|------- |------- |-----------
|
||||||
|`lf fdx help `|Y |`this help`
|
|`lf fdxb help `|Y |`this help`
|
||||||
|`lf fdx demod `|Y |`demodulate a FDX-B ISO11784/85 tag from the GraphBuffer`
|
|`lf fdxb demod `|Y |`demodulate a FDX-B ISO11784/85 tag from the GraphBuffer`
|
||||||
|`lf fdx read `|N |`attempt to read at 134kHz and extract tag data`
|
|`lf fdxb read `|N |`attempt to read at 134kHz and extract tag data`
|
||||||
|`lf fdx clone `|N |`clone animal ID tag to T55x7 or Q5/T5555`
|
|`lf fdxb clone `|N |`clone animal ID tag to T55x7 or Q5/T5555`
|
||||||
|`lf fdx sim `|N |`simulate Animal ID tag`
|
|`lf fdxb sim `|N |`simulate Animal ID tag`
|
||||||
|
|
||||||
|
|
||||||
### lf gallagher
|
### lf gallagher
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue