hf mf mad - should be available offline too. Added some checks to quit if no device present

This commit is contained in:
iceman1001 2022-08-21 00:52:53 +02:00
commit 643f77996a

View file

@ -172,7 +172,7 @@ static void decode_print_st(uint16_t blockno, uint8_t *data) {
PrintAndLogEx(INFO, " # | Access rights"); PrintAndLogEx(INFO, " # | Access rights");
PrintAndLogEx(INFO, "----+-----------------------------------------------------------------"); PrintAndLogEx(INFO, "----+-----------------------------------------------------------------");
if (! mfValidateAccessConditions(&data[6])) { if (mfValidateAccessConditions(&data[6]) == false) {
PrintAndLogEx(WARNING, _RED_("Invalid Access Conditions")); PrintAndLogEx(WARNING, _RED_("Invalid Access Conditions"));
} }
@ -365,7 +365,7 @@ static int CmdHF14AMfAcl(const char *Cmd) {
if (memcmp(acl, "\xFF\x07\x80", 3) == 0) { if (memcmp(acl, "\xFF\x07\x80", 3) == 0) {
PrintAndLogEx(INFO, "ACL... " _GREEN_("%s") " (transport configuration)", sprint_hex(acl, sizeof(acl))); PrintAndLogEx(INFO, "ACL... " _GREEN_("%s") " (transport configuration)", sprint_hex(acl, sizeof(acl)));
} }
if (! mfValidateAccessConditions(acl)) { if (mfValidateAccessConditions(acl) == false) {
PrintAndLogEx(ERR, _RED_("Invalid Access Conditions, NEVER write these on a card!")); PrintAndLogEx(ERR, _RED_("Invalid Access Conditions, NEVER write these on a card!"));
} }
PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "");
@ -1153,7 +1153,7 @@ static int CmdHF14AMfRestore(const char *Cmd) {
} }
// ensure access right isn't messed up. // ensure access right isn't messed up.
if (! mfValidateAccessConditions(&bldata[6])) { if (mfValidateAccessConditions(&bldata[6]) == false) {
PrintAndLogEx(WARNING, "Invalid Access Conditions on sector %i, replacing by default values", s); PrintAndLogEx(WARNING, "Invalid Access Conditions on sector %i, replacing by default values", s);
memcpy(bldata + 6, "\xFF\x07\x80\x69", 4); memcpy(bldata + 6, "\xFF\x07\x80\x69", 4);
} }
@ -5392,6 +5392,9 @@ static int CmdHF14AMfMAD(const char *Cmd) {
return PM3_SUCCESS; return PM3_SUCCESS;
} }
if (g_session.pm3_present == false)
return PM3_ENOTTY;
uint8_t sector0[16 * 4] = {0}; uint8_t sector0[16 * 4] = {0};
uint8_t sector10[16 * 4] = {0}; uint8_t sector10[16 * 4] = {0};
@ -6422,6 +6425,10 @@ static int CmdHF14AMfValue(const char *Cmd) {
} }
if (action < 3) { if (action < 3) {
if (g_session.pm3_present == false)
return PM3_ENOTTY;
if (action <= 1) { // increment/decrement value if (action <= 1) { // increment/decrement value
memcpy(block, (uint8_t *)&value, 4); memcpy(block, (uint8_t *)&value, 4);
uint8_t cmddata[26]; uint8_t cmddata[26];
@ -6525,7 +6532,7 @@ static command_t CommandTable[] = {
{"auth4", CmdHF14AMfAuth4, IfPm3Iso14443a, "ISO14443-4 AES authentication"}, {"auth4", CmdHF14AMfAuth4, IfPm3Iso14443a, "ISO14443-4 AES authentication"},
{"acl", CmdHF14AMfAcl, AlwaysAvailable, "Decode and print MIFARE Classic access rights bytes"}, {"acl", CmdHF14AMfAcl, AlwaysAvailable, "Decode and print MIFARE Classic access rights bytes"},
{"dump", CmdHF14AMfDump, IfPm3Iso14443a, "Dump MIFARE Classic tag to binary file"}, {"dump", CmdHF14AMfDump, IfPm3Iso14443a, "Dump MIFARE Classic tag to binary file"},
{"mad", CmdHF14AMfMAD, IfPm3Iso14443a, "Checks and prints MAD"}, {"mad", CmdHF14AMfMAD, AlwaysAvailable, "Checks and prints MAD"},
{"ndefread", CmdHFMFNDEFRead, IfPm3Iso14443a, "Prints NDEF records from card"}, {"ndefread", CmdHFMFNDEFRead, IfPm3Iso14443a, "Prints NDEF records from card"},
{"personalize", CmdHFMFPersonalize, IfPm3Iso14443a, "Personalize UID (MIFARE Classic EV1 only)"}, {"personalize", CmdHFMFPersonalize, IfPm3Iso14443a, "Personalize UID (MIFARE Classic EV1 only)"},
{"rdbl", CmdHF14AMfRdBl, IfPm3Iso14443a, "Read MIFARE Classic block"}, {"rdbl", CmdHF14AMfRdBl, IfPm3Iso14443a, "Read MIFARE Classic block"},