This commit is contained in:
iceman1001 2025-02-18 18:42:21 +01:00
commit e5293f1389
4 changed files with 33 additions and 29 deletions

View file

@ -2542,8 +2542,8 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) {
CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen);
int outfnlen = 0; int outfnlen = 0;
char outfilename[127] = {0}; char outfilename[FILE_PATH_SIZE] = {0};
CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)outfilename, 127, &outfnlen); CLIParamStrToBuf(arg_get_str(ctx, 6), (uint8_t *)outfilename, FILE_PATH_SIZE, &outfnlen);
bool slow = arg_get_lit(ctx, 7); bool slow = arg_get_lit(ctx, 7);
@ -4263,8 +4263,9 @@ static int CmdHF14AMfSim(const char *Cmd) {
, (uidlen == 0) ? "n/a" : sprint_hex(uid, uidlen) , (uidlen == 0) ? "n/a" : sprint_hex(uid, uidlen)
); );
PrintAndLogEx(INFO, "Options [ numreads: %d, flags: 0x%04x ]" PrintAndLogEx(INFO, "Options [ numreads: %d, flags: %d (0x%04x) ]"
, exitAfterNReads , exitAfterNReads
, flags
, flags); , flags);
struct { struct {
@ -4299,7 +4300,7 @@ static int CmdHF14AMfSim(const char *Cmd) {
bool keypress = kbd_enter_pressed(); bool keypress = kbd_enter_pressed();
while (keypress == false) { while (keypress == false) {
if (WaitForResponseTimeout(CMD_HF_MIFARE_SIMULATE, &resp, 1500) == 0) { if (WaitForResponseTimeout(CMD_HF_MIFARE_SIMULATE, &resp, 1500) == false) {
keypress = kbd_enter_pressed(); keypress = kbd_enter_pressed();
continue; continue;
} }
@ -9840,7 +9841,7 @@ static int CmdHF14AMfInfo(const char *Cmd) {
res = detect_classic_static_nonce(); res = detect_classic_static_nonce();
if (res == NONCE_STATIC) { if (res == NONCE_STATIC) {
PrintAndLogEx(SUCCESS, "Static nonce......... " _YELLOW_("yes")); PrintAndLogEx(SUCCESS, "Static nonce... " _YELLOW_("yes"));
} }

View file

@ -756,7 +756,7 @@ static int CmdHF14ADesInfo(const char *Cmd) {
if (major == 2 && minor == 2) if (major == 2 && minor == 2)
PrintAndLogEx(INFO, "\t2.2 - DESFire Ev2 XL, Originality check, proximity check, EAL5"); PrintAndLogEx(INFO, "\t2.2 - DESFire Ev2 XL, Originality check, proximity check, EAL5");
if (major == 3 && minor == 0) if (major == 3 && minor == 0)
PrintAndLogEx(INFO, "\t3.0 - DESFire Ev3, Originality check, proximity check, badass EAL6 ?"); PrintAndLogEx(INFO, "\t3.0 - DESFire Ev3, Originality check, proximity check, badass EAL6");
if (major == 0xA0 && minor == 0) if (major == 0xA0 && minor == 0)
PrintAndLogEx(INFO, "\tx.x - DUOX, Originality check, proximity check, EAL6++"); PrintAndLogEx(INFO, "\tx.x - DUOX, Originality check, proximity check, EAL6++");
@ -805,12 +805,16 @@ static int CmdHF14ADesInfo(const char *Cmd) {
} }
if (aidbuflen > 2) { if (aidbuflen > 2) {
uint8_t j = aidbuflen / 3;
PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "");
PrintAndLogEx(SUCCESS, "--- " _CYAN_("AID list")); PrintAndLogEx(SUCCESS, "--- " _CYAN_("AID list") " ( " _YELLOW_("%u") " found )", j);
PrintAndLogEx(SUCCESS, "AIDs: " NOLF);
for (int i = 0; i < aidbuflen; i += 3) j = 0;
PrintAndLogEx(NORMAL, "%s %06x" NOLF, (i == 0) ? "" : ",", DesfireAIDByteToUint(&aidbuf[i])); for (int i = 0; i < aidbuflen; i += 3, j++) {
PrintAndLogEx(NORMAL, "\n"); uint32_t aid = DesfireAIDByteToUint(&aidbuf[i]);
PrintAndLogEx(SUCCESS, _YELLOW_("%06X") ", %s", aid, getAidCommentStr(aid));
}
} }
DesfireFillPICCInfo(&dctx, &PICCInfo, true); DesfireFillPICCInfo(&dctx, &PICCInfo, true);
@ -821,7 +825,7 @@ static int CmdHF14ADesInfo(const char *Cmd) {
PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "");
PrintAndLogEx(INFO, "--- " _CYAN_("Free memory")); PrintAndLogEx(INFO, "--- " _CYAN_("Free memory"));
if (PICCInfo.freemem != 0xffffffff) { if (PICCInfo.freemem != 0xffffffff) {
PrintAndLogEx(SUCCESS, " Available free memory on card : " _GREEN_("%d bytes"), PICCInfo.freemem); PrintAndLogEx(SUCCESS, " Available free memory on card... " _GREEN_("%d") " bytes", PICCInfo.freemem);
} else { } else {
PrintAndLogEx(SUCCESS, " Card doesn't support 'free mem' cmd"); PrintAndLogEx(SUCCESS, " Card doesn't support 'free mem' cmd");
} }
@ -1809,7 +1813,7 @@ static int CmdHF14aDesMAD(const char *Cmd) {
AppListS AppList = {{0}}; AppListS AppList = {{0}};
DesfireFillAppList(&dctx, &PICCInfo, AppList, false, false, false); // no deep scan, no scan files DesfireFillAppList(&dctx, &PICCInfo, AppList, false, false, false); // no deep scan, no scan files
PrintAndLogEx(SUCCESS, "# Applications... " _GREEN_("%zu"), PICCInfo.appCount); PrintAndLogEx(SUCCESS, "# Applications.... " _GREEN_("%zu"), PICCInfo.appCount);
if (PICCInfo.freemem == 0xffffffff) { if (PICCInfo.freemem == 0xffffffff) {
PrintAndLogEx(SUCCESS, "Free memory...... " _YELLOW_("n/a")); PrintAndLogEx(SUCCESS, "Free memory...... " _YELLOW_("n/a"));
} else { } else {
@ -5594,7 +5598,7 @@ static int CmdHF14ADesLsApp(const char *Cmd) {
SetAPDULogging(APDULogging); SetAPDULogging(APDULogging);
CLIParserFree(ctx); CLIParserFree(ctx);
PrintAndLogEx(INPLACE, _YELLOW_("It may take up to 15 seconds. Processing....")); PrintAndLogEx(INFO, "It may take up to " _YELLOW_("15") " seconds. Processing...");
res = DesfireSelectAndAuthenticateEx(&dctx, securechann, 0x000000, noauth, verbose); res = DesfireSelectAndAuthenticateEx(&dctx, securechann, 0x000000, noauth, verbose);
if (res != PM3_SUCCESS) { if (res != PM3_SUCCESS) {
@ -5606,7 +5610,6 @@ static int CmdHF14ADesLsApp(const char *Cmd) {
AppListS AppList = {{0}}; AppListS AppList = {{0}};
DesfireFillAppList(&dctx, &PICCInfo, AppList, !nodeep, scanfiles, true); DesfireFillAppList(&dctx, &PICCInfo, AppList, !nodeep, scanfiles, true);
printf("\33[2K\r"); // clear current line before printing
PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "");
// print zone // print zone

View file

@ -1990,9 +1990,9 @@ int CmdHFMFPNDEFRead(const char *Cmd) {
memcpy(ndefkey, key, 16); memcpy(ndefkey, key, 16);
} }
uint8_t sector0[16 * 4] = {0}; uint8_t sector0[MIFARE_1K_MAXBLOCK] = {0};
uint8_t sector10[16 * 4] = {0}; uint8_t sector10[MIFARE_1K_MAXBLOCK] = {0};
uint8_t data[4096] = {0}; uint8_t data[MIFARE_4K_MAX_BYTES] = {0};
int datalen = 0; int datalen = 0;
if (verbose) if (verbose)
@ -2034,7 +2034,7 @@ int CmdHFMFPNDEFRead(const char *Cmd) {
PrintAndLogEx(INFO, "reading data from tag"); PrintAndLogEx(INFO, "reading data from tag");
for (int i = 0; i < madlen; i++) { for (int i = 0; i < madlen; i++) {
if (ndefAID == mad[i]) { if (ndefAID == mad[i]) {
uint8_t vsector[16 * 4] = {0}; uint8_t vsector[MIFARE_1K_MAXBLOCK] = {0};
if (mfpReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector, false)) { if (mfpReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector, false)) {
PrintAndLogEx(ERR, "error, reading sector %d", i + 1); PrintAndLogEx(ERR, "error, reading sector %d", i + 1);
return PM3_ESOFT; return PM3_ESOFT;

View file

@ -4071,8 +4071,8 @@ static int CmdHF14AMfUCSetUid(const char *Cmd) {
PacketResponseNG resp; PacketResponseNG resp;
clearCommandBuffer(); clearCommandBuffer();
SendCommandMIX(CMD_HF_MIFAREU_READBL, 2, 0, 0, NULL, 0); SendCommandMIX(CMD_HF_MIFAREU_READBL, 2, 0, 0, NULL, 0);
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) {
PrintAndLogEx(WARNING, "command execution time out"); PrintAndLogEx(WARNING, "Command execute timeout");
return PM3_ETIMEOUT; return PM3_ETIMEOUT;
} }
@ -4084,8 +4084,8 @@ static int CmdHF14AMfUCSetUid(const char *Cmd) {
// block 1 write and block2 write // block 1 write and block2 write
hf14a_config config; hf14a_config config;
SendCommandNG(CMD_HF_ISO14443A_GET_CONFIG, NULL, 0); SendCommandNG(CMD_HF_ISO14443A_GET_CONFIG, NULL, 0);
if (!WaitForResponseTimeout(CMD_HF_ISO14443A_GET_CONFIG, &resp, 2000)) { if (WaitForResponseTimeout(CMD_HF_ISO14443A_GET_CONFIG, &resp, 2000) == false) {
PrintAndLogEx(WARNING, "command execution time out"); PrintAndLogEx(WARNING, "command execute timeout");
return PM3_ETIMEOUT; return PM3_ETIMEOUT;
} }
memcpy(&config, resp.data.asBytes, sizeof(hf14a_config)); memcpy(&config, resp.data.asBytes, sizeof(hf14a_config));
@ -4103,8 +4103,8 @@ static int CmdHF14AMfUCSetUid(const char *Cmd) {
data[3] = 0x88 ^ uid[0] ^ uid[1] ^ uid[2]; data[3] = 0x88 ^ uid[0] ^ uid[1] ^ uid[2];
clearCommandBuffer(); clearCommandBuffer();
SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, 0, 0, 0, data, sizeof(data)); SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, 0, 0, 0, data, sizeof(data));
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) {
PrintAndLogEx(WARNING, "command execution time out"); PrintAndLogEx(WARNING, "Command execute timeout");
return PM3_ETIMEOUT; return PM3_ETIMEOUT;
} }
@ -4115,8 +4115,8 @@ static int CmdHF14AMfUCSetUid(const char *Cmd) {
data[3] = uid[6]; data[3] = uid[6];
clearCommandBuffer(); clearCommandBuffer();
SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, 1, 0, 0, data, sizeof(data)); SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, 1, 0, 0, data, sizeof(data));
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) {
PrintAndLogEx(WARNING, "command execution time out"); PrintAndLogEx(WARNING, "Command execute timeout");
return PM3_ETIMEOUT; return PM3_ETIMEOUT;
} }
@ -4127,8 +4127,8 @@ static int CmdHF14AMfUCSetUid(const char *Cmd) {
data[3] = oldblock2[3]; data[3] = oldblock2[3];
clearCommandBuffer(); clearCommandBuffer();
SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, 2, 0, 0, data, sizeof(data)); SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, 2, 0, 0, data, sizeof(data));
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) {
PrintAndLogEx(WARNING, "command execution time out"); PrintAndLogEx(WARNING, "Command execute timeout");
return PM3_ETIMEOUT; return PM3_ETIMEOUT;
} }