mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
remove one test command
This commit is contained in:
parent
33c758421c
commit
0ac28addcb
4 changed files with 95 additions and 98 deletions
|
@ -2485,8 +2485,7 @@ void MifareGen3UID(uint8_t uidlen, uint8_t *uid) {
|
||||||
clear_trace();
|
clear_trace();
|
||||||
set_tracing(true);
|
set_tracing(true);
|
||||||
|
|
||||||
if (!iso14443a_select_card(old_uid, card_info, NULL, true, 0, true)) {
|
if (iso14443a_select_card(old_uid, card_info, NULL, true, 0, true) == false) {
|
||||||
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Card not selected");
|
|
||||||
retval = PM3_ESOFT;
|
retval = PM3_ESOFT;
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
@ -2521,8 +2520,7 @@ void MifareGen3Blk(uint8_t block_len, uint8_t *block) {
|
||||||
clear_trace();
|
clear_trace();
|
||||||
set_tracing(true);
|
set_tracing(true);
|
||||||
|
|
||||||
if (!iso14443a_select_card(uid, card_info, NULL, true, 0, true)) {
|
if (iso14443a_select_card(uid, card_info, NULL, true, 0, true) == false) {
|
||||||
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Card not selected");
|
|
||||||
retval = PM3_ESOFT;
|
retval = PM3_ESOFT;
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
@ -2558,7 +2556,6 @@ void MifareGen3Blk(uint8_t block_len, uint8_t *block) {
|
||||||
|
|
||||||
if (doReselect) {
|
if (doReselect) {
|
||||||
if (!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) {
|
if (!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) {
|
||||||
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Card not selected");
|
|
||||||
retval = PM3_ESOFT;
|
retval = PM3_ESOFT;
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
@ -2575,16 +2572,15 @@ OUT:
|
||||||
}
|
}
|
||||||
|
|
||||||
void MifareGen3Freez(void) {
|
void MifareGen3Freez(void) {
|
||||||
int retval = PM3_SUCCESS;
|
|
||||||
uint8_t freeze_cmd[7] = { 0x90, 0xfd, 0x11, 0x11, 0x00, 0xe7, 0x91 };
|
|
||||||
uint8_t *uid = BigBuf_malloc(10);
|
|
||||||
|
|
||||||
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);
|
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);
|
||||||
clear_trace();
|
clear_trace();
|
||||||
set_tracing(true);
|
set_tracing(true);
|
||||||
|
|
||||||
if (!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) {
|
int retval = PM3_SUCCESS;
|
||||||
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Card not selected");
|
uint8_t freeze_cmd[7] = { 0x90, 0xfd, 0x11, 0x11, 0x00, 0xe7, 0x91 };
|
||||||
|
uint8_t *uid = BigBuf_malloc(10);
|
||||||
|
|
||||||
|
if (iso14443a_select_card(uid, NULL, NULL, true, 0, true) == false) {
|
||||||
retval = PM3_ESOFT;
|
retval = PM3_ESOFT;
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,48 +188,6 @@ static int usage_hf14_decryptbytes(void) {
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usage_hf14_gen3uid(void) {
|
|
||||||
PrintAndLogEx(NORMAL, "Set UID for magic GEN 3 card without manufacturer block changing");
|
|
||||||
PrintAndLogEx(NORMAL, "");
|
|
||||||
PrintAndLogEx(NORMAL, "Usage: hf mf gen3uid [h] <uid>");
|
|
||||||
PrintAndLogEx(NORMAL, "Options:");
|
|
||||||
PrintAndLogEx(NORMAL, " h this help");
|
|
||||||
PrintAndLogEx(NORMAL, " <uid> UID 8/14 hex symbols");
|
|
||||||
PrintAndLogEx(NORMAL, "Examples:");
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3uid 01020304"));
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3uid 01020304050607"));
|
|
||||||
return PM3_SUCCESS;
|
|
||||||
}
|
|
||||||
static int usage_hf14_gen3block(void) {
|
|
||||||
PrintAndLogEx(NORMAL, "Overwrite full manufacturer block for magic GEN 3 card");
|
|
||||||
PrintAndLogEx(NORMAL, "");
|
|
||||||
PrintAndLogEx(NORMAL, "Usage: hf mf gen3blk [h] [block data (up to 32 hex symbols)]");
|
|
||||||
PrintAndLogEx(NORMAL, "Options:");
|
|
||||||
PrintAndLogEx(NORMAL, " h this help");
|
|
||||||
PrintAndLogEx(NORMAL, " [block] manufacturer block data up to 32 hex symbols to write");
|
|
||||||
PrintAndLogEx(NORMAL, " - If block data not specified, it prints current");
|
|
||||||
PrintAndLogEx(NORMAL, " data without changes");
|
|
||||||
PrintAndLogEx(NORMAL, " - You can specify part of manufacturer block as");
|
|
||||||
PrintAndLogEx(NORMAL, " 4/7-bytes for UID change only for example");
|
|
||||||
PrintAndLogEx(NORMAL, " NOTE: BCC, SAK, ATQA will be calculated automatically");
|
|
||||||
PrintAndLogEx(NORMAL, "Examples:");
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3blk 01020304FFFFFFFF0102030405060708"));
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3blk 01020304"));
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3blk 01020304050607"));
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3blk"));
|
|
||||||
return PM3_SUCCESS;
|
|
||||||
}
|
|
||||||
static int usage_hf14_gen3freeze(void) {
|
|
||||||
PrintAndLogEx(NORMAL, "Perma lock further UID changes. No more UID changes available after operation completed");
|
|
||||||
PrintAndLogEx(NORMAL, "");
|
|
||||||
PrintAndLogEx(NORMAL, "Usage: hf mf gen3freeze [h] <y>");
|
|
||||||
PrintAndLogEx(NORMAL, "Options:");
|
|
||||||
PrintAndLogEx(NORMAL, " h this help");
|
|
||||||
PrintAndLogEx(NORMAL, " <y> confirm UID locks operation");
|
|
||||||
PrintAndLogEx(NORMAL, "Examples:");
|
|
||||||
PrintAndLogEx(NORMAL, _YELLOW_(" hf mf gen3freeze y"));
|
|
||||||
return PM3_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int mfc_ev1_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, int signature_len) {
|
int mfc_ev1_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, int signature_len) {
|
||||||
|
|
||||||
|
@ -5079,6 +5037,7 @@ static int CmdHf14AMfNack(const char *Cmd) {
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
static int CmdHF14AMfice(const char *Cmd) {
|
static int CmdHF14AMfice(const char *Cmd) {
|
||||||
CLIParserContext *ctx;
|
CLIParserContext *ctx;
|
||||||
CLIParserInit(&ctx, "hf mf ice",
|
CLIParserInit(&ctx, "hf mf ice",
|
||||||
|
@ -5180,6 +5139,7 @@ out:
|
||||||
SendCommandMIX(CMD_HF_MIFARE_ACQ_NONCES, blockNo + keyType * 0x100, trgBlockNo + trgKeyType * 0x100, 4, NULL, 0);
|
SendCommandMIX(CMD_HF_MIFARE_ACQ_NONCES, blockNo + keyType * 0x100, trgBlockNo + trgKeyType * 0x100, 4, NULL, 0);
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
static int CmdHF14AMfAuth4(const char *Cmd) {
|
static int CmdHF14AMfAuth4(const char *Cmd) {
|
||||||
uint8_t keyn[20] = {0};
|
uint8_t keyn[20] = {0};
|
||||||
|
@ -5592,65 +5552,110 @@ static int CmdHF14AMfList(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CmdHf14AGen3UID(const char *Cmd) {
|
static int CmdHf14AGen3UID(const char *Cmd) {
|
||||||
uint8_t uid[7] = {0x00};
|
CLIParserContext *ctx;
|
||||||
uint8_t oldUid[10] = {0x00};
|
CLIParserInit(&ctx, "hf mf gen3uid",
|
||||||
uint8_t uidlen;
|
"Set UID for magic Gen3 card _without_ changes to manufacturer block 0",
|
||||||
|
"hf mf gen3uid --uid 01020304 --> set 4 byte uid\n"
|
||||||
|
"hf mf gen3uid --uid 01020304050607 --> set 7 byte uid"
|
||||||
|
);
|
||||||
|
void *argtable[] = {
|
||||||
|
arg_param_begin,
|
||||||
|
arg_str0("u", "uid", "<hex>", "UID 4/7 hex bytes"),
|
||||||
|
arg_param_end
|
||||||
|
};
|
||||||
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
|
|
||||||
char ctmp = tolower(param_getchar(Cmd, 0));
|
uint8_t uid[7] = {0};
|
||||||
if (ctmp == 'h') return usage_hf14_gen3uid();
|
int uidlen = 0;
|
||||||
|
CLIGetHexWithReturn(ctx, 1, uid, &uidlen);
|
||||||
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
if (param_gethex(Cmd, 0, uid, 8))
|
// sanity checks
|
||||||
if (param_gethex(Cmd, 0, uid, 14))
|
if (uidlen != 4 && uidlen != 7) {
|
||||||
return usage_hf14_gen3uid();
|
PrintAndLogEx(FAILED, "UID must be 4 or 7 hex bytes. Got %d", uidlen);
|
||||||
else
|
return PM3_EINVARG;
|
||||||
uidlen = 7;
|
}
|
||||||
else
|
|
||||||
uidlen = 4;
|
|
||||||
|
|
||||||
int res = mfGen3UID(uid, uidlen, oldUid);
|
uint8_t old_uid[10] = {0};
|
||||||
if (res) {
|
|
||||||
PrintAndLogEx(ERR, "Can't set UID. Error=%d", res);
|
int res = mfGen3UID(uid, uidlen, old_uid);
|
||||||
|
if (res != PM3_SUCCESS) {
|
||||||
|
PrintAndLogEx(ERR, "Can't set UID");
|
||||||
|
PrintAndLogEx(HINT, "Are you sure your card is a Gen3 ?");
|
||||||
return PM3_ESOFT;
|
return PM3_ESOFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintAndLogEx(SUCCESS, "Old UID : %s", sprint_hex(oldUid, uidlen));
|
PrintAndLogEx(SUCCESS, "Old UID... %s", sprint_hex(old_uid, uidlen));
|
||||||
PrintAndLogEx(SUCCESS, "New UID : %s", sprint_hex(uid, uidlen));
|
PrintAndLogEx(SUCCESS, "New UID... %s", sprint_hex(uid, uidlen));
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CmdHf14AGen3Block(const char *Cmd) {
|
static int CmdHf14AGen3Block(const char *Cmd) {
|
||||||
uint8_t block[16] = {0x00};
|
CLIParserContext *ctx;
|
||||||
int blocklen = 0;
|
CLIParserInit(&ctx, "hf mf gen3blk",
|
||||||
uint8_t newBlock[16] = {0x00};
|
"Overwrite full manufacturer block for magic Gen3 card\n"
|
||||||
|
" - You can specify part of manufacturer block as\n"
|
||||||
|
" 4/7-bytes for UID change only\n"
|
||||||
|
"\n"
|
||||||
|
"NOTE: BCC, SAK, ATQA will be calculated automatically"
|
||||||
|
,
|
||||||
|
"hf mf gen3blk --> print current data\n"
|
||||||
|
"hf mf gen3blk -d 01020304 --> set 4 byte uid\n"
|
||||||
|
"hf mf gen3blk -d 01020304050607 --> set 7 byte uid \n"
|
||||||
|
"hf mf gen3blk -d 01020304FFFFFFFF0102030405060708"
|
||||||
|
|
||||||
char ctmp = tolower(param_getchar(Cmd, 0));
|
);
|
||||||
if (ctmp == 'h') return usage_hf14_gen3block();
|
void *argtable[] = {
|
||||||
|
arg_param_begin,
|
||||||
|
arg_str0("d", "data", "<hex>", "manufacturer block data up to 16 hex bytes"),
|
||||||
|
arg_param_end
|
||||||
|
};
|
||||||
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
|
|
||||||
if (ctmp != '\0' && param_gethex_to_eol(Cmd, 0, block, sizeof(block), &blocklen))
|
uint8_t data[MFBLOCK_SIZE] = {0x00};
|
||||||
return usage_hf14_gen3block();
|
int datalen = 0;
|
||||||
|
CLIGetHexWithReturn(ctx, 1, data, &datalen);
|
||||||
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
int res = mfGen3Block(block, blocklen, newBlock);
|
uint8_t new_block[MFBLOCK_SIZE] = {0x00};
|
||||||
|
int res = mfGen3Block(data, datalen, new_block);
|
||||||
if (res) {
|
if (res) {
|
||||||
PrintAndLogEx(ERR, "Can't change manufacturer block data. Error=%d", res);
|
PrintAndLogEx(ERR, "Can't change manufacturer block data. error %d", res);
|
||||||
return PM3_ESOFT;
|
return PM3_ESOFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintAndLogEx(SUCCESS, "Current Block : %s", sprint_hex(newBlock, 16));
|
PrintAndLogEx(SUCCESS, "Current block... %s", sprint_hex_inrow(new_block, sizeof(new_block)));
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CmdHf14AGen3Freeze(const char *Cmd) {
|
static int CmdHf14AGen3Freeze(const char *Cmd) {
|
||||||
char ctmp = tolower(param_getchar(Cmd, 0));
|
CLIParserContext *ctx;
|
||||||
if (ctmp == 'h') return usage_hf14_gen3freeze();
|
CLIParserInit(&ctx, "hf mf gen3freeze",
|
||||||
if (ctmp != 'y') return usage_hf14_gen3freeze();
|
"Perma lock further UID changes. No more UID changes available after operation completed\n"
|
||||||
|
"\nNote: operation is " _RED_("! irreversible !"),
|
||||||
|
|
||||||
|
"hf mf gen3freeze -y"
|
||||||
|
);
|
||||||
|
void *argtable[] = {
|
||||||
|
arg_param_begin,
|
||||||
|
arg_lit1("y", "yes", "confirm UID lock operation"),
|
||||||
|
arg_param_end
|
||||||
|
};
|
||||||
|
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
||||||
|
bool confirm = arg_get_lit(ctx, 1);
|
||||||
|
CLIParserFree(ctx);
|
||||||
|
if (confirm == false) {
|
||||||
|
PrintAndLogEx(INFO, "please confirm that you want to perma lock the card");
|
||||||
|
return PM3_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
int res = mfGen3Freeze();
|
int res = mfGen3Freeze();
|
||||||
if (res) {
|
if (res != PM3_SUCCESS) {
|
||||||
PrintAndLogEx(ERR, "Can't lock UID changes. Error=%d", res);
|
PrintAndLogEx(ERR, "Can't lock UID changes. error %d", res);
|
||||||
return PM3_ESOFT;
|
} else {
|
||||||
|
PrintAndLogEx(SUCCESS, "MFC Gen3 UID card is now perma-locked");
|
||||||
}
|
}
|
||||||
PrintAndLogEx(SUCCESS, "MFC Gen3 UID permalocked");
|
return res;
|
||||||
return PM3_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void des_decrypt(void *out, const void *in, const void *key) {
|
static void des_decrypt(void *out, const void *in, const void *key) {
|
||||||
|
@ -6038,12 +6043,12 @@ static command_t CommandTable[] = {
|
||||||
{"cview", CmdHF14AMfCView, IfPm3Iso14443a, "View card"},
|
{"cview", CmdHF14AMfCView, IfPm3Iso14443a, "View card"},
|
||||||
{"cwipe", CmdHF14AMfCWipe, IfPm3Iso14443a, "Wipe card to default UID/Sectors/Keys"},
|
{"cwipe", CmdHF14AMfCWipe, IfPm3Iso14443a, "Wipe card to default UID/Sectors/Keys"},
|
||||||
{"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("magic gen3") " -----------------------"},
|
{"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("magic gen3") " -----------------------"},
|
||||||
{"gen3uid", CmdHf14AGen3UID, IfPm3Iso14443a, "Set UID without manufacturer block"},
|
{"gen3uid", CmdHf14AGen3UID, IfPm3Iso14443a, "Set UID without changing manufacturer block"},
|
||||||
{"gen3blk", CmdHf14AGen3Block, IfPm3Iso14443a, "Overwrite full manufacturer block"},
|
{"gen3blk", CmdHf14AGen3Block, IfPm3Iso14443a, "Overwrite manufacturer block"},
|
||||||
{"gen3freeze", CmdHf14AGen3Freeze, IfPm3Iso14443a, "Perma lock further UID changes"},
|
{"gen3freeze", CmdHf14AGen3Freeze, IfPm3Iso14443a, "Perma lock UID changes. irreversible"},
|
||||||
|
|
||||||
{"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("i") " -----------------------"},
|
// {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("i") " -----------------------"},
|
||||||
{"ice", CmdHF14AMfice, IfPm3Iso14443a, "collect MIFARE Classic nonces to file"},
|
// {"ice", CmdHF14AMfice, IfPm3Iso14443a, "collect MIFARE Classic nonces to file"},
|
||||||
{NULL, NULL, NULL, NULL}
|
{NULL, NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,6 @@ hf mf rdsc
|
||||||
hf mf restore
|
hf mf restore
|
||||||
hf mf setmod
|
hf mf setmod
|
||||||
hf mf wrbl
|
hf mf wrbl
|
||||||
hf mf gen3uid
|
|
||||||
hf mf gen3blk
|
|
||||||
hf mf gen3freeze
|
|
||||||
lf hitag reader
|
lf hitag reader
|
||||||
lf hitag writer
|
lf hitag writer
|
||||||
lf hitag dump
|
lf hitag dump
|
||||||
|
|
|
@ -427,7 +427,6 @@ Check column "offline" for their availability.
|
||||||
|`hf mf gen3uid `|N |`Set UID without manufacturer block`
|
|`hf mf gen3uid `|N |`Set UID without manufacturer block`
|
||||||
|`hf mf gen3blk `|N |`Overwrite full manufacturer block`
|
|`hf mf gen3blk `|N |`Overwrite full manufacturer block`
|
||||||
|`hf mf gen3freeze `|N |`Perma lock further UID changes`
|
|`hf mf gen3freeze `|N |`Perma lock further UID changes`
|
||||||
|`hf mf ice `|N |`collect MIFARE Classic nonces to file`
|
|
||||||
|
|
||||||
|
|
||||||
### hf mfp
|
### hf mfp
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue