mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 22:03:42 -07:00
Merge branch 'master' into bind
This commit is contained in:
commit
fcad2127e0
3 changed files with 23 additions and 13 deletions
|
@ -4,6 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
||||||
|
|
||||||
## [unreleased][unreleased]
|
## [unreleased][unreleased]
|
||||||
- Added `bind` option for network connections to specify the outbound address and port (@wh201906)
|
- Added `bind` option for network connections to specify the outbound address and port (@wh201906)
|
||||||
|
- Changed `lf em 4x05 dump` - now supports the `--ns` nosave parameter (@iceman1001)
|
||||||
- Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001)
|
- Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001)
|
||||||
- Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001)
|
- Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001)
|
||||||
- Changed mad.json - added entries from the Metrodroid project (@iceman1001)
|
- Changed mad.json - added entries from the Metrodroid project (@iceman1001)
|
||||||
|
|
|
@ -82,16 +82,16 @@ local function main(args)
|
||||||
sd = sd or 2000
|
sd = sd or 2000
|
||||||
ed = ed or 2100
|
ed = ed or 2100
|
||||||
|
|
||||||
if #password ~= 8 then
|
if password ~= '' and #password ~= 8 then
|
||||||
password = ''
|
return oops('password must be 4 hex bytes')
|
||||||
end
|
end
|
||||||
|
|
||||||
if #wr_value ~= 8 then
|
if #wr_value ~= 8 then
|
||||||
wr_value = 'FFFFFFFF'
|
return oops('write value must be 4 hex bytes')
|
||||||
end
|
end
|
||||||
|
|
||||||
if #rd_value ~= 8 then
|
if #rd_value ~= 8 then
|
||||||
rd_value = 'FFFFFFFF'
|
return oops('read value must be 4 hex bytes')
|
||||||
end
|
end
|
||||||
|
|
||||||
if sd > ed then
|
if sd > ed then
|
||||||
|
@ -114,7 +114,7 @@ local function main(args)
|
||||||
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 --addr %s --data %s --pwd %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))
|
||||||
|
|
|
@ -514,6 +514,7 @@ int CmdEM4x05Dump(const char *Cmd) {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
arg_str0("p", "pwd", "<hex>", "password (00000000)"),
|
arg_str0("p", "pwd", "<hex>", "password (00000000)"),
|
||||||
arg_str0("f", "file", "<fn>", "override filename prefix (optional). Default is based on UID"),
|
arg_str0("f", "file", "<fn>", "override filename prefix (optional). Default is based on UID"),
|
||||||
|
arg_lit0(NULL, "ns", "no save to file"),
|
||||||
arg_param_end
|
arg_param_end
|
||||||
};
|
};
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
|
@ -522,6 +523,7 @@ int CmdEM4x05Dump(const char *Cmd) {
|
||||||
int fnlen = 0;
|
int fnlen = 0;
|
||||||
char filename[FILE_PATH_SIZE] = {0};
|
char filename[FILE_PATH_SIZE] = {0};
|
||||||
CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen);
|
CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen);
|
||||||
|
bool nosave = arg_get_lit(ctx, 3);
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
uint8_t addr = 0;
|
uint8_t addr = 0;
|
||||||
|
@ -693,6 +695,13 @@ int CmdEM4x05Dump(const char *Cmd) {
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nosave) {
|
||||||
|
PrintAndLogEx(NORMAL, "");
|
||||||
|
PrintAndLogEx(INFO, "Called with no save option");
|
||||||
|
PrintAndLogEx(NORMAL, "");
|
||||||
|
return PM3_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
// all ok save dump to file
|
// all ok save dump to file
|
||||||
if (success == PM3_SUCCESS) {
|
if (success == PM3_SUCCESS) {
|
||||||
|
|
||||||
|
@ -741,16 +750,16 @@ int CmdEM4x05Read(const char *Cmd) {
|
||||||
bool use_pwd = false;
|
bool use_pwd = false;
|
||||||
|
|
||||||
if (addr > 15) {
|
if (addr > 15) {
|
||||||
PrintAndLogEx(ERR, "Address must be between 0 and 15");
|
PrintAndLogEx(ERR, "Address must be between 0 and 15, got " _RED_("%d"), addr);
|
||||||
return PM3_EINVARG;
|
return PM3_EINVARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inputpwd == 0xFFFFFFFFFFFFFFFF) {
|
if (inputpwd == 0xFFFFFFFFFFFFFFFF) {
|
||||||
PrintAndLogEx(INFO, "Reading address %02u", addr);
|
PrintAndLogEx(INFO, "Reading address " _YELLOW_("%02u"), addr);
|
||||||
} else {
|
} else {
|
||||||
pwd = (inputpwd & 0xFFFFFFFF);
|
pwd = (inputpwd & 0xFFFFFFFF);
|
||||||
use_pwd = true;
|
use_pwd = true;
|
||||||
PrintAndLogEx(INFO, "Reading address %02u using password %08X", addr, pwd);
|
PrintAndLogEx(INFO, "Reading address " _YELLOW_("%02u") " using password " _YELLOW_("%08X"), addr, pwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t word = 0;
|
uint32_t word = 0;
|
||||||
|
@ -818,14 +827,14 @@ int CmdEM4x05Write(const char *Cmd) {
|
||||||
|
|
||||||
if (use_pwd) {
|
if (use_pwd) {
|
||||||
if (protect_operation)
|
if (protect_operation)
|
||||||
PrintAndLogEx(INFO, "Writing protection words data %08X using password %08X", data, pwd);
|
PrintAndLogEx(INFO, "Writing protection words data " _YELLOW_("%08X") " using password " _YELLOW_("%08X"), data, pwd);
|
||||||
else
|
else
|
||||||
PrintAndLogEx(INFO, "Writing address %d data %08X using password %08X", addr, data, pwd);
|
PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X") " using password " _YELLOW_("%08X"), addr, data, pwd);
|
||||||
} else {
|
} else {
|
||||||
if (protect_operation)
|
if (protect_operation)
|
||||||
PrintAndLogEx(INFO, "Writing protection words data %08X", data);
|
PrintAndLogEx(INFO, "Writing protection words data " _YELLOW_("%08X") , data);
|
||||||
else
|
else
|
||||||
PrintAndLogEx(INFO, "Writing address %d data %08X", addr, data);
|
PrintAndLogEx(INFO, "Writing address " _YELLOW_("%d") " data " _YELLOW_("%08X") , addr, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
res = PM3_SUCCESS;
|
res = PM3_SUCCESS;
|
||||||
|
@ -850,7 +859,7 @@ int CmdEM4x05Write(const char *Cmd) {
|
||||||
if (status == PM3_SUCCESS)
|
if (status == PM3_SUCCESS)
|
||||||
PrintAndLogEx(SUCCESS, "Data written and verified");
|
PrintAndLogEx(SUCCESS, "Data written and verified");
|
||||||
else if (status == PM3_EFAILED)
|
else if (status == PM3_EFAILED)
|
||||||
PrintAndLogEx(ERR, "Tag denied %s operation", protect_operation ? "Protect" : "Write");
|
PrintAndLogEx(ERR, "Tag denied " _RED_("%s") " operation", protect_operation ? "Protect" : "Write");
|
||||||
else
|
else
|
||||||
PrintAndLogEx(DEBUG, "No answer from tag");
|
PrintAndLogEx(DEBUG, "No answer from tag");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue