fix cpp warnings

This commit is contained in:
iceman1001 2025-03-21 13:19:01 +01:00
commit a2d10d7910
8 changed files with 82 additions and 62 deletions

View file

@ -1749,7 +1749,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *useruid, uin
bool risky = false; bool risky = false;
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
risky |= orig[i] & ~receivedCmd[2 + i]; risky |= (orig[i] & ~receivedCmd[2 + i]);
} }
if (risky) { if (risky) {

View file

@ -253,7 +253,7 @@ out:
* @param card_select Pointer to the descriptor of the detected card. * @param card_select Pointer to the descriptor of the detected card.
* @return Status code indicating success or failure of the operation. * @return Status code indicating success or failure of the operation.
*/ */
static int sam_set_card_detected_picopass(picopass_hdr_t *card_select) { static int sam_set_card_detected_picopass(const picopass_hdr_t *card_select) {
int res = PM3_SUCCESS; int res = PM3_SUCCESS;
if (g_dbglevel >= DBG_DEBUG) if (g_dbglevel >= DBG_DEBUG)
DbpString("start sam_set_card_detected"); DbpString("start sam_set_card_detected");
@ -379,15 +379,15 @@ int sam_picopass_get_pacs(PacketCommandNG *c) {
print_result("Response data", sam_response, sam_response_len); print_result("Response data", sam_response, sam_response_len);
goto out; goto out;
goto off;
err: err:
res = PM3_ENOPACS; res = PM3_ENOPACS;
reply_ng(CMD_HF_SAM_PICOPASS, res, NULL, 0); reply_ng(CMD_HF_SAM_PICOPASS, res, NULL, 0);
goto off; goto off;
out: out:
reply_ng(CMD_HF_SAM_PICOPASS, PM3_SUCCESS, sam_response, sam_response_len); reply_ng(CMD_HF_SAM_PICOPASS, PM3_SUCCESS, sam_response, sam_response_len);
goto off;
off: off:
if (disconnectAfter) { if (disconnectAfter) {
switch_off(); switch_off();

View file

@ -125,9 +125,11 @@ out:
* @return Status code indicating success or failure of the operation. * @return Status code indicating success or failure of the operation.
*/ */
static int sam_send_request_iso14a(const uint8_t *const request, const uint8_t request_len, uint8_t *response, uint8_t *response_len) { static int sam_send_request_iso14a(const uint8_t *const request, const uint8_t request_len, uint8_t *response, uint8_t *response_len) {
int res = PM3_SUCCESS; int res = PM3_SUCCESS;
if (g_dbglevel >= DBG_DEBUG) if (g_dbglevel >= DBG_DEBUG) {
DbpString("start sam_send_request_iso14a"); DbpString("start sam_send_request_iso14a");
}
uint8_t *buf1 = BigBuf_malloc(ISO7816_MAX_FRAME); uint8_t *buf1 = BigBuf_malloc(ISO7816_MAX_FRAME);
uint8_t *buf2 = BigBuf_malloc(ISO7816_MAX_FRAME); uint8_t *buf2 = BigBuf_malloc(ISO7816_MAX_FRAME);
@ -178,23 +180,13 @@ static int sam_send_request_iso14a(const uint8_t *const request, const uint8_t r
switch_clock_to_countsspclk(); switch_clock_to_countsspclk();
nfc_tx_len = sam_copy_payload_sam2nfc(nfc_tx_buf, sam_rx_buf); nfc_tx_len = sam_copy_payload_sam2nfc(nfc_tx_buf, sam_rx_buf);
nfc_rx_len = iso14_apdu( nfc_rx_len = iso14_apdu(nfc_tx_buf, nfc_tx_len, false, nfc_rx_buf, ISO7816_MAX_FRAME, NULL);
nfc_tx_buf, // iceman: should check nfc_rx_len , if negative something went wrong...
nfc_tx_len,
false,
nfc_rx_buf,
ISO7816_MAX_FRAME,
NULL
);
switch_clock_to_ticks(); switch_clock_to_ticks();
sam_tx_len = sam_copy_payload_nfc2sam(sam_tx_buf, nfc_rx_buf, nfc_rx_len - 2); sam_tx_len = sam_copy_payload_nfc2sam(sam_tx_buf, nfc_rx_buf, nfc_rx_len - 2);
sam_send_payload( sam_send_payload(0x14, 0x0a, 0x14, sam_tx_buf, &sam_tx_len, sam_rx_buf, &sam_rx_len);
0x14, 0x0a, 0x14,
sam_tx_buf, &sam_tx_len,
sam_rx_buf, &sam_rx_len
);
// last SAM->TAG // last SAM->TAG
// c1 61 c1 00 00 a1 02 >>82<< 00 90 00 // c1 61 c1 00 00 a1 02 >>82<< 00 90 00
@ -240,13 +232,15 @@ static int sam_send_request_iso14a(const uint8_t *const request, const uint8_t r
// 07 // 07
// 90 00 // 90 00
if (request_len == 0) { if (request_len == 0) {
if ( if (
!(sam_rx_buf[5] == 0xbd && sam_rx_buf[5 + 2] == 0x8a && sam_rx_buf[5 + 4] == 0x03) !(sam_rx_buf[5] == 0xbd && sam_rx_buf[5 + 2] == 0x8a && sam_rx_buf[5 + 4] == 0x03) &&
&&
!(sam_rx_buf[5] == 0xbd && sam_rx_buf[5 + 2] == 0xb3 && sam_rx_buf[5 + 4] == 0xa0) !(sam_rx_buf[5] == 0xbd && sam_rx_buf[5 + 2] == 0xb3 && sam_rx_buf[5 + 4] == 0xa0)
) { ) {
if (g_dbglevel >= DBG_ERROR)
if (g_dbglevel >= DBG_ERROR) {
Dbprintf("No PACS data in SAM response"); Dbprintf("No PACS data in SAM response");
}
res = PM3_ESOFT; res = PM3_ESOFT;
} }
} }
@ -254,8 +248,6 @@ static int sam_send_request_iso14a(const uint8_t *const request, const uint8_t r
*response_len = sam_rx_buf[5 + 1] + 2; *response_len = sam_rx_buf[5 + 1] + 2;
memcpy(response, sam_rx_buf + 5, *response_len); memcpy(response, sam_rx_buf + 5, *response_len);
goto out;
out: out:
BigBuf_free(); BigBuf_free();
return res; return res;
@ -290,13 +282,13 @@ int sam_seos_get_pacs(PacketCommandNG *c) {
// step 1: ping SAM // step 1: ping SAM
sam_get_version(); sam_get_version();
if (!skipDetect) { if (skipDetect == false) {
// step 2: get card information // step 2: get card information
iso14a_card_select_t card_a_info; iso14a_card_select_t card_a_info;
// implicit StartSspClk() happens here // implicit StartSspClk() happens here
iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD);
if (!iso14443a_select_card(NULL, &card_a_info, NULL, true, 0, false)) { if (iso14443a_select_card(NULL, &card_a_info, NULL, true, 0, false) == 0) {
goto err; goto err;
} }
@ -313,19 +305,21 @@ int sam_seos_get_pacs(PacketCommandNG *c) {
if (res != PM3_SUCCESS) { if (res != PM3_SUCCESS) {
goto err; goto err;
} }
if (g_dbglevel >= DBG_INFO)
if (g_dbglevel >= DBG_INFO) {
print_result("Response data", sam_response, sam_response_len); print_result("Response data", sam_response, sam_response_len);
}
goto out; goto out;
goto off;
err: err:
res = PM3_ENOPACS; res = PM3_ENOPACS;
reply_ng(CMD_HF_SAM_SEOS, res, NULL, 0); reply_ng(CMD_HF_SAM_SEOS, res, NULL, 0);
goto off; goto off;
out: out:
reply_ng(CMD_HF_SAM_SEOS, PM3_SUCCESS, sam_response, sam_response_len); reply_ng(CMD_HF_SAM_SEOS, PM3_SUCCESS, sam_response, sam_response_len);
goto off;
off: off:
if (disconnectAfter) { if (disconnectAfter) {
switch_off(); switch_off();

View file

@ -1839,15 +1839,13 @@ void annotateSeos(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool is
} }
if (memcmp(cmd + pos, "\x00\x87\x00", 3) == 0) { if (memcmp(cmd + pos, "\x00\x87\x00", 3) == 0) {
uint8_t ks = cmd[pos + 3]; uint8_t ks = cmd[pos + 3];
if (memcmp(cmd + pos + 3 + 1, "\x04\x7c\x02\x81\x00", 5) == 0) { if (memcmp(cmd + pos + 3 + 1, "\x04\x7c\x02\x81\x00", 5) == 0) {
snprintf(exp, size, "GET CHALLENGE " _WHITE_("(") " key " _MAGENTA_("%02X") " )", ks); snprintf(exp, size, "GET CHALLENGE " _WHITE_("(") " key " _MAGENTA_("%02X") " )", ks);
return; return;
} }
}
if (memcmp(cmd + pos, "\x00\x87\x00", 3) == 0) {
uint8_t ks = cmd[pos + 3];
if (memcmp(cmd + pos + 3 + 1, "\x2C\x7C\x2A\x82\x28", 5) == 0) { if (memcmp(cmd + pos + 3 + 1, "\x2C\x7C\x2A\x82\x28", 5) == 0) {
snprintf(exp, size, "MUTUAL AUTHENTICATION " _WHITE_("(") " key " _MAGENTA_("%02X") " )", ks); snprintf(exp, size, "MUTUAL AUTHENTICATION " _WHITE_("(") " key " _MAGENTA_("%02X") " )", ks);
} }

View file

@ -705,10 +705,12 @@ static int CmdEM410xClone(const char *Cmd) {
PacketResponseNG resp; PacketResponseNG resp;
if (hts) { if (hts) {
lf_hitag_data_t packet; lf_hitag_data_t packet;
memset(&packet, 0, sizeof(packet)); memset(&packet, 0, sizeof(packet));
for (size_t step = 0; step < 3; step++) { for (size_t step = 0; step < 3; step++) {
switch (step) { switch (step) {
case 0: { case 0: {
hitags_config_t config = {0}; hitags_config_t config = {0};
@ -722,18 +724,21 @@ static int CmdEM410xClone(const char *Cmd) {
config.RES4 = 0x01; config.RES4 = 0x01;
config.RES5 = 0x01; config.RES5 = 0x01;
switch (clk) { switch (clk) {
case 64: case 64: {
// 2 kBit/s // 2 kBit/s
config.TTFDR = 0x02; config.TTFDR = 0x02;
break; break;
case 32: }
case 32: {
// 4 kBit/s // 4 kBit/s
config.TTFDR = 0x00; config.TTFDR = 0x00;
break; break;
case 16: }
case 16: {
// 8 kBit/s // 8 kBit/s
config.TTFDR = 0x01; config.TTFDR = 0x01;
break; break;
}
} }
//TODO: keep other fields? //TODO: keep other fields?
memcpy(packet.data, &config, sizeof(config)); memcpy(packet.data, &config, sizeof(config));
@ -741,30 +746,35 @@ static int CmdEM410xClone(const char *Cmd) {
packet.page = 1; packet.page = 1;
break; break;
} }
case 1: case 1: {
memcpy(packet.data, &data[HITAGS_PAGE_SIZE * 0], HITAGS_PAGE_SIZE); memcpy(packet.data, &data[HITAGS_PAGE_SIZE * 0], HITAGS_PAGE_SIZE);
packet.page = 4; packet.page = 4;
break; break;
case 2: }
case 2: {
memcpy(packet.data, &data[HITAGS_PAGE_SIZE * 1], HITAGS_PAGE_SIZE); memcpy(packet.data, &data[HITAGS_PAGE_SIZE * 1], HITAGS_PAGE_SIZE);
packet.page = 5; packet.page = 5;
break; break;
}
} }
packet.cmd = HTSF_82xx; packet.cmd = HTSF_82xx;
memcpy(packet.pwd, "\xBB\xDD\x33\x99", HITAGS_PAGE_SIZE); memcpy(packet.pwd, "\xBB\xDD\x33\x99", HITAGS_PAGE_SIZE);
packet.mode = HITAGS_UID_REQ_FADV; packet.mode = HITAGS_UID_REQ_FADV;
SendCommandNG(CMD_LF_HITAGS_WRITE, (uint8_t *)&packet, sizeof(packet)); SendCommandNG(CMD_LF_HITAGS_WRITE, (uint8_t *)&packet, sizeof(packet));
if (WaitForResponseTimeout(CMD_LF_HITAGS_WRITE, &resp, 4000) == false) { if (WaitForResponseTimeout(CMD_LF_HITAGS_WRITE, &resp, 4000) == false) {
PrintAndLogEx(WARNING, "timeout while waiting for reply"); PrintAndLogEx(WARNING, "timeout while waiting for reply");
return PM3_ETIMEOUT; return PM3_ETIMEOUT;
} }
if (resp.status != PM3_SUCCESS) { if (resp.status != PM3_SUCCESS) {
PrintAndLogEx(WARNING, "Something went wrong in step %zu", step); PrintAndLogEx(WARNING, "Something went wrong in step %zu", step);
return resp.status; return resp.status;
} }
} }
} else if (htu) { } else if (htu) {
lf_hitag_data_t packet; lf_hitag_data_t packet;
memset(&packet, 0, sizeof(packet)); memset(&packet, 0, sizeof(packet));
@ -774,6 +784,7 @@ static int CmdEM410xClone(const char *Cmd) {
// memcpy(packet.pwd, "\x9A\xC4\x99\x9C", HITAGU_BLOCK_SIZE); // memcpy(packet.pwd, "\x9A\xC4\x99\x9C", HITAGU_BLOCK_SIZE);
for (size_t step = 0; step < 3; step++) { for (size_t step = 0; step < 3; step++) {
switch (step) { switch (step) {
case 0: { case 0: {
// Configure datarate based on clock // Configure datarate based on clock
@ -789,27 +800,32 @@ static int CmdEM410xClone(const char *Cmd) {
config.ttf = 0x01; // enable TTF config.ttf = 0x01; // enable TTF
switch (clk) { switch (clk) {
case 64: case 64: {
break; break;
case 32: }
case 32: {
config.datarate = 0x01; config.datarate = 0x01;
break; break;
case 16: }
case 16: {
config.datarate = 0x02; config.datarate = 0x02;
break; break;
}
} }
packet.data[0] = reflect8(*(uint8_t *)&config); packet.data[0] = reflect8(*(uint8_t *)&config);
packet.page = HITAGU_CONFIG_PADR; // Config block packet.page = HITAGU_CONFIG_PADR; // Config block
break; break;
} }
case 1: case 1: {
memcpy(packet.data, &data[HITAGU_BLOCK_SIZE * 0], HITAGU_BLOCK_SIZE); memcpy(packet.data, &data[HITAGU_BLOCK_SIZE * 0], HITAGU_BLOCK_SIZE);
packet.page = 0; // Start writing EM410x data packet.page = 0; // Start writing EM410x data
break; break;
case 2: }
case 2: {
memcpy(packet.data, &data[HITAGU_BLOCK_SIZE * 1], HITAGU_BLOCK_SIZE); memcpy(packet.data, &data[HITAGU_BLOCK_SIZE * 1], HITAGU_BLOCK_SIZE);
packet.page = 1; // Continue with second block packet.page = 1; // Continue with second block
break; break;
}
} }
SendCommandNG(CMD_LF_HITAGU_WRITE, (uint8_t *)&packet, sizeof(packet)); SendCommandNG(CMD_LF_HITAGU_WRITE, (uint8_t *)&packet, sizeof(packet));
@ -859,7 +875,7 @@ static int CmdEM410xClone(const char *Cmd) {
switch (resp.status) { switch (resp.status) {
case PM3_SUCCESS: { case PM3_SUCCESS: {
PrintAndLogEx(SUCCESS, "Done!"); PrintAndLogEx(SUCCESS, "Done!");
PrintAndLogEx(HINT, "Hint: Try " _YELLOW_("`lf em 410x reader`") " to verify"); PrintAndLogEx(HINT, "Hint: Try `" _YELLOW_("lf em 410x reader") "` to verify");
break; break;
} }
default: { default: {

View file

@ -210,7 +210,6 @@ static int process_hitagu_common_args(CLIParserContext *ctx, lf_hitag_data_t *co
int res = CLIParamHexToBuf(arg_get_str(ctx, 2), key, HITAG_PASSWORD_SIZE, &key_len); int res = CLIParamHexToBuf(arg_get_str(ctx, 2), key, HITAG_PASSWORD_SIZE, &key_len);
if (res != 0) { if (res != 0) {
CLIParserFree(ctx);
return PM3_EINVARG; return PM3_EINVARG;
} }
@ -341,6 +340,7 @@ static int CmdLFHitagURead(const char *Cmd) {
lf_hitag_data_t packet; lf_hitag_data_t packet;
if (process_hitagu_common_args(ctx, &packet) < 0) { if (process_hitagu_common_args(ctx, &packet) < 0) {
CLIParserFree(ctx);
return PM3_EINVARG; return PM3_EINVARG;
} }
@ -613,7 +613,10 @@ static int CmdLFHitagUWrite(const char *Cmd) {
lf_hitag_data_t packet; lf_hitag_data_t packet;
if (process_hitagu_common_args(ctx, &packet) < 0) return PM3_EINVARG; if (process_hitagu_common_args(ctx, &packet) < 0) {
CLIParserFree(ctx);
return PM3_EINVARG;
}
int page = arg_get_int_def(ctx, 3, 0); int page = arg_get_int_def(ctx, 3, 0);

View file

@ -1916,15 +1916,14 @@ void DesfirePrintAppList(DesfireContext_t *dctx, PICCInfo_t *PICCInfo, AppListS
} }
if (appList[i].numberOfKeys > 0) { if (appList[i].numberOfKeys > 0) {
PrintKeySettings(appList[i].keySettings, appList[i].numKeysRaw, true, true); PrintKeySettings(appList[i].keySettings, appList[i].numKeysRaw, true, true);
if (appList[i].numberOfKeys > 0) { PrintAndLogEx(SUCCESS, "Key versions [0..%d] " NOLF, appList[i].numberOfKeys - 1);
PrintAndLogEx(SUCCESS, "Key versions [0..%d] " NOLF, appList[i].numberOfKeys - 1); for (uint8_t keyn = 0; keyn < appList[i].numberOfKeys; keyn++) {
for (uint8_t keyn = 0; keyn < appList[i].numberOfKeys; keyn++) { PrintAndLogEx(NORMAL, "%s %02x" NOLF, (keyn == 0) ? "" : ",", appList[i].keyVersions[keyn]);
PrintAndLogEx(NORMAL, "%s %02x" NOLF, (keyn == 0) ? "" : ",", appList[i].keyVersions[keyn]);
}
PrintAndLogEx(NORMAL, "\n");
} }
PrintAndLogEx(NORMAL, "\n");
if (appList[i].filesReaded) { if (appList[i].filesReaded) {
PrintAndLogEx(SUCCESS, "Application have " _GREEN_("%zu") " files", appList[i].filesCount); PrintAndLogEx(SUCCESS, "Application have " _GREEN_("%zu") " files", appList[i].filesCount);
@ -1935,10 +1934,11 @@ void DesfirePrintAppList(DesfireContext_t *dctx, PICCInfo_t *PICCInfo, AppListS
PrintAndLogEx(SUCCESS, "--------------------------------- " _CYAN_("File %02x") " ----------------------------------", appList[i].fileList[fnum].fileNum); PrintAndLogEx(SUCCESS, "--------------------------------- " _CYAN_("File %02x") " ----------------------------------", appList[i].fileList[fnum].fileNum);
PrintAndLogEx(SUCCESS, "File ID : " _GREEN_("%02x"), appList[i].fileList[fnum].fileNum); PrintAndLogEx(SUCCESS, "File ID : " _GREEN_("%02x"), appList[i].fileList[fnum].fileNum);
if (appList[i].isoPresent) { if (appList[i].isoPresent) {
if (appList[i].fileList[fnum].fileISONum != 0) if (appList[i].fileList[fnum].fileISONum != 0) {
PrintAndLogEx(SUCCESS, "File ISO ID : %04x", appList[i].fileList[fnum].fileISONum); PrintAndLogEx(SUCCESS, "File ISO ID : %04x", appList[i].fileList[fnum].fileISONum);
else } else {
PrintAndLogEx(SUCCESS, "File ISO ID : " _YELLOW_("n/a")); PrintAndLogEx(SUCCESS, "File ISO ID : " _YELLOW_("n/a"));
}
} }
DesfirePrintFileSettingsExtended(&appList[i].fileList[fnum].fileSettings); DesfirePrintFileSettingsExtended(&appList[i].fileList[fnum].fileSettings);
} }
@ -2289,16 +2289,19 @@ static void PrintKeySettingsApp(uint8_t keysettings, uint8_t numkeys, bool print
PrintAndLogEx(SUCCESS, "Application level rights"); PrintAndLogEx(SUCCESS, "Application level rights");
uint8_t rights = ((keysettings >> 4) & 0x0F); uint8_t rights = ((keysettings >> 4) & 0x0F);
switch (rights) { switch (rights) {
case 0x0: case 0x0: {
PrintAndLogEx(SUCCESS, " - AMK authentication is necessary to change any key (default)"); PrintAndLogEx(SUCCESS, " - AMK authentication is necessary to change any key (default)");
break; break;
case 0xE: }
case 0xE: {
PrintAndLogEx(SUCCESS, " - Authentication with the key to be changed (same KeyNo) is necessary to change a key"); PrintAndLogEx(SUCCESS, " - Authentication with the key to be changed (same KeyNo) is necessary to change a key");
break; break;
case 0xF: }
case 0xF: {
PrintAndLogEx(SUCCESS, " - All keys (except AMK,see Bit0) within this application are frozen"); PrintAndLogEx(SUCCESS, " - All keys (except AMK,see Bit0) within this application are frozen");
break; break;
default: }
default: {
PrintAndLogEx(SUCCESS, PrintAndLogEx(SUCCESS,
" - Authentication with the specified key " _YELLOW_("(0x%02x)") " is necessary to change any key.\n" " - Authentication with the specified key " _YELLOW_("(0x%02x)") " is necessary to change any key.\n"
"A change key and a PICC master key (CMK) can only be changed after authentication with the master key.\n" "A change key and a PICC master key (CMK) can only be changed after authentication with the master key.\n"
@ -2306,6 +2309,7 @@ static void PrintKeySettingsApp(uint8_t keysettings, uint8_t numkeys, bool print
rights & 0x0f rights & 0x0f
); );
break; break;
}
} }
PrintAndLogEx(SUCCESS, "[%c...] AMK Configuration changeable : %s", (keysettings & (1 << 3)) ? '1' : '0', (keysettings & (1 << 3)) ? _GREEN_("YES") : _RED_("NO (frozen)")); PrintAndLogEx(SUCCESS, "[%c...] AMK Configuration changeable : %s", (keysettings & (1 << 3)) ? '1' : '0', (keysettings & (1 << 3)) ? _GREEN_("YES") : _RED_("NO (frozen)"));
@ -2324,10 +2328,11 @@ static void PrintKeySettingsApp(uint8_t keysettings, uint8_t numkeys, bool print
} }
void PrintKeySettings(uint8_t keysettings, uint8_t numkeys, bool applevel, bool print2ndbyte) { void PrintKeySettings(uint8_t keysettings, uint8_t numkeys, bool applevel, bool print2ndbyte) {
if (applevel) if (applevel) {
PrintKeySettingsApp(keysettings, numkeys, print2ndbyte); PrintKeySettingsApp(keysettings, numkeys, print2ndbyte);
else } else {
PrintKeySettingsPICC(keysettings, numkeys, print2ndbyte); PrintKeySettingsPICC(keysettings, numkeys, print2ndbyte);
}
} }
static const char *DesfireUnknownStr = "unknown"; static const char *DesfireUnknownStr = "unknown";

View file

@ -503,18 +503,22 @@ uint8_t DesfireKeyAlgoToType(DesfireCryptoAlgorithm keyType) {
void DesfirePrintCardKeyType(uint8_t keyType) { void DesfirePrintCardKeyType(uint8_t keyType) {
switch (keyType) { switch (keyType) {
case 00: case 00: {
PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("2TDEA")); PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("2TDEA"));
break; break;
case 01: }
case 01: {
PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("3TDEA")); PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("3TDEA"));
break; break;
case 02: }
case 02: {
PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("AES")); PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("AES"));
break; break;
default: }
default: {
PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("unknown") " - 0x%02x", keyType); PrintAndLogEx(SUCCESS, "Key type... " _YELLOW_("unknown") " - 0x%02x", keyType);
break; break;
}
} }
} }