mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 13:00:42 -07:00
make style
This commit is contained in:
parent
fb13d52e7c
commit
186ed6fb07
3 changed files with 75 additions and 75 deletions
108
armsrc/iclass.c
108
armsrc/iclass.c
|
@ -400,7 +400,7 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
int trace_data_size;
|
int trace_data_size;
|
||||||
|
|
||||||
// Respond SOF -- takes 1 bytes
|
// Respond SOF -- takes 1 bytes
|
||||||
uint8_t resp_sof[1] = {0};
|
uint8_t resp_sof[2] = {0};
|
||||||
int resp_sof_len;
|
int resp_sof_len;
|
||||||
|
|
||||||
// Anticollision CSN (rotated CSN)
|
// Anticollision CSN (rotated CSN)
|
||||||
|
@ -2333,7 +2333,7 @@ void iClass_TearBlock(iclass_tearblock_req_t *msg) {
|
||||||
if (memcmp(data_read, ff_data, PICOPASS_BLOCK_SIZE) == 0 &&
|
if (memcmp(data_read, ff_data, PICOPASS_BLOCK_SIZE) == 0 &&
|
||||||
memcmp(data_read_orig, ff_data, PICOPASS_BLOCK_SIZE) != 0) {
|
memcmp(data_read_orig, ff_data, PICOPASS_BLOCK_SIZE) != 0) {
|
||||||
|
|
||||||
if(erase_phase == false){
|
if (erase_phase == false) {
|
||||||
DbpString("");
|
DbpString("");
|
||||||
DbpString(_CYAN_("Erase phase hit... ALL ONES"));
|
DbpString(_CYAN_("Erase phase hit... ALL ONES"));
|
||||||
|
|
||||||
|
@ -2679,44 +2679,44 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
uint8_t original_mac[8] = {0};
|
uint8_t original_mac[8] = {0};
|
||||||
uint8_t mac1[4] = {0};
|
uint8_t mac1[4] = {0};
|
||||||
|
|
||||||
while (!card_select || !card_auth) {
|
while (!card_select || !card_auth) {
|
||||||
|
|
||||||
Iso15693InitReader(); //has to be at the top as it starts tracing
|
Iso15693InitReader(); //has to be at the top as it starts tracing
|
||||||
if (!msg->debug) {
|
if (!msg->debug) {
|
||||||
set_tracing(false); //disable tracing to prevent crashes - set to true for debugging
|
set_tracing(false); //disable tracing to prevent crashes - set to true for debugging
|
||||||
} else {
|
} else {
|
||||||
if (loops == 1) {
|
if (loops == 1) {
|
||||||
clear_trace(); //if we're debugging better to clear the trace but do it only on the first loop
|
clear_trace(); //if we're debugging better to clear the trace but do it only on the first loop
|
||||||
}
|
|
||||||
}
|
|
||||||
//Step0 Card Select Routine
|
|
||||||
eof_time = 0; //reset eof time
|
|
||||||
res = select_iclass_tag(&hdr, false, &eof_time, shallow_mod);
|
|
||||||
if (res) {
|
|
||||||
status_message = 1; //card select successful
|
|
||||||
card_select = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Step1 Authenticate with AA1 using trace
|
|
||||||
if (card_select) {
|
|
||||||
memcpy(original_mac, msg->req.key, 8);
|
|
||||||
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
|
||||||
res = authenticate_iclass_tag(&msg->req, &hdr, &start_time, &eof_time, mac1);
|
|
||||||
if (res) {
|
|
||||||
status_message = 2; //authentication with AA1 macs successful
|
|
||||||
card_auth = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!card_auth || !card_select) {
|
|
||||||
reinit_tentatives++;
|
|
||||||
switch_off();
|
|
||||||
}
|
|
||||||
if (reinit_tentatives == 5) {
|
|
||||||
DbpString("");
|
|
||||||
DbpString(_RED_("Unable to select or authenticate with card multiple times! Stopping."));
|
|
||||||
goto out;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Step0 Card Select Routine
|
||||||
|
eof_time = 0; //reset eof time
|
||||||
|
res = select_iclass_tag(&hdr, false, &eof_time, shallow_mod);
|
||||||
|
if (res) {
|
||||||
|
status_message = 1; //card select successful
|
||||||
|
card_select = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Step1 Authenticate with AA1 using trace
|
||||||
|
if (card_select) {
|
||||||
|
memcpy(original_mac, msg->req.key, 8);
|
||||||
|
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
||||||
|
res = authenticate_iclass_tag(&msg->req, &hdr, &start_time, &eof_time, mac1);
|
||||||
|
if (res) {
|
||||||
|
status_message = 2; //authentication with AA1 macs successful
|
||||||
|
card_auth = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!card_auth || !card_select) {
|
||||||
|
reinit_tentatives++;
|
||||||
|
switch_off();
|
||||||
|
}
|
||||||
|
if (reinit_tentatives == 5) {
|
||||||
|
DbpString("");
|
||||||
|
DbpString(_RED_("Unable to select or authenticate with card multiple times! Stopping."));
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while (bits_found == -1) {
|
while (bits_found == -1) {
|
||||||
|
|
||||||
|
@ -2728,9 +2728,9 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
uint16_t resp_len = 0;
|
uint16_t resp_len = 0;
|
||||||
|
|
||||||
if (BUTTON_PRESS() || loops > msg->loop) {
|
if (BUTTON_PRESS() || loops > msg->loop) {
|
||||||
if(loops > msg->loop){
|
if (loops > msg->loop) {
|
||||||
completed = true;
|
completed = true;
|
||||||
}else{
|
} else {
|
||||||
interrupted = true;
|
interrupted = true;
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -2738,9 +2738,9 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
|
|
||||||
if (msg->test) {
|
if (msg->test) {
|
||||||
Dbprintf(_YELLOW_("*Cycled Reader*") " TEST Index - Loops: "_YELLOW_("%3d / %3d") " *", loops, msg->loop);
|
Dbprintf(_YELLOW_("*Cycled Reader*") " TEST Index - Loops: "_YELLOW_("%3d / %3d") " *", loops, msg->loop);
|
||||||
}else if (msg->debug || (!card_select && !card_auth)){
|
} else if (msg->debug || (!card_select && !card_auth)) {
|
||||||
Dbprintf(_YELLOW_("*Cycled Reader*") " Index: "_RED_("%3d")" Loops: "_YELLOW_("%3d / %3d") " *", index, loops, msg->loop);
|
Dbprintf(_YELLOW_("*Cycled Reader*") " Index: "_RED_("%3d")" Loops: "_YELLOW_("%3d / %3d") " *", index, loops, msg->loop);
|
||||||
}else{
|
} else {
|
||||||
DbprintfEx(FLAG_INPLACE, "[" _BLUE_("#") "] Index: "_CYAN_("%3d")" Loops: "_YELLOW_("%3d / %3d")" ", index, loops, msg->loop);
|
DbprintfEx(FLAG_INPLACE, "[" _BLUE_("#") "] Index: "_CYAN_("%3d")" Loops: "_YELLOW_("%3d / %3d")" ", index, loops, msg->loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2798,7 +2798,7 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(priv_esc && status_message != 3){
|
if (priv_esc && status_message != 3) {
|
||||||
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
||||||
iclass_send_as_reader(read_check_cc, sizeof(read_check_cc), &start_time, &eof_time, shallow_mod);
|
iclass_send_as_reader(read_check_cc, sizeof(read_check_cc), &start_time, &eof_time, shallow_mod);
|
||||||
status_message = 3;
|
status_message = 3;
|
||||||
|
@ -2851,7 +2851,7 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!write_error) {
|
if (write_error == false) {
|
||||||
//Step6 Perform 8 authentication attempts + 1 to verify if we found the weak key
|
//Step6 Perform 8 authentication attempts + 1 to verify if we found the weak key
|
||||||
for (int i = 0; i < 8 ; ++i) {
|
for (int i = 0; i < 8 ; ++i) {
|
||||||
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
||||||
|
@ -2869,7 +2869,7 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
//regardless of bits being found, restore the original key and verify it
|
//regardless of bits being found, restore the original key and verify it
|
||||||
bool reverted = false;
|
bool reverted = false;
|
||||||
uint8_t revert_retries = 0;
|
uint8_t revert_retries = 0;
|
||||||
while (!reverted) {
|
while (reverted == false) {
|
||||||
//Regain privilege escalation with a readcheck
|
//Regain privilege escalation with a readcheck
|
||||||
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER;
|
||||||
iclass_send_as_reader(read_check_cc, sizeof(read_check_cc), &start_time, &eof_time, shallow_mod);
|
iclass_send_as_reader(read_check_cc, sizeof(read_check_cc), &start_time, &eof_time, shallow_mod);
|
||||||
|
@ -2908,28 +2908,28 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(msg->debug){
|
if (msg->debug) {
|
||||||
if(status_message >= 1){
|
if (status_message >= 1) {
|
||||||
DbpString("");
|
DbpString("");
|
||||||
DbpString("Card Select:............."_GREEN_("Ok!"));
|
DbpString("Card Select:............."_GREEN_("Ok!"));
|
||||||
}
|
}
|
||||||
if(status_message >= 2){
|
if (status_message >= 2) {
|
||||||
DbpString("AA1 macs authentication:."_GREEN_("Ok!"));
|
DbpString("AA1 macs authentication:."_GREEN_("Ok!"));
|
||||||
}
|
}
|
||||||
if(status_message >= 3){
|
if (status_message >= 3) {
|
||||||
DbpString("Privilege Escalation:...."_GREEN_("Ok!"));
|
DbpString("Privilege Escalation:...."_GREEN_("Ok!"));
|
||||||
}
|
}
|
||||||
if(status_message >= 4){
|
if (status_message >= 4) {
|
||||||
DbpString("Wrote key: ");
|
DbpString("Wrote key: ");
|
||||||
Dbhexdump(8, genkeyblock, false);
|
Dbhexdump(8, genkeyblock, false);
|
||||||
}
|
}
|
||||||
if(status_message >= 5){
|
if (status_message >= 5) {
|
||||||
DbpString("Key Update:.............."_GREEN_("Verified!"));
|
DbpString("Key Update:.............."_GREEN_("Verified!"));
|
||||||
}
|
}
|
||||||
if(status_message >= 6){
|
if (status_message >= 6) {
|
||||||
DbpString("Original Key Restore:...."_GREEN_("Ok!"));
|
DbpString("Original Key Restore:...."_GREEN_("Ok!"));
|
||||||
}
|
}
|
||||||
if(status_message >= 7){
|
if (status_message >= 7) {
|
||||||
DbpString("Original Key Restore:...."_GREEN_("Verified!"));
|
DbpString("Original Key Restore:...."_GREEN_("Verified!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2939,7 +2939,7 @@ void iClass_Recover(iclass_recover_req_t *msg) {
|
||||||
card_select = false;
|
card_select = false;
|
||||||
card_auth = false;
|
card_auth = false;
|
||||||
priv_esc = false;
|
priv_esc = false;
|
||||||
}else{
|
} else {
|
||||||
loops++;
|
loops++;
|
||||||
index++;
|
index++;
|
||||||
status_message = 2;
|
status_message = 2;
|
||||||
|
@ -2974,7 +2974,7 @@ out:
|
||||||
switch_off();
|
switch_off();
|
||||||
if (completed) {
|
if (completed) {
|
||||||
reply_ng(CMD_HF_ICLASS_RECOVER, PM3_EINVARG, NULL, 0);
|
reply_ng(CMD_HF_ICLASS_RECOVER, PM3_EINVARG, NULL, 0);
|
||||||
} else if (interrupted){
|
} else if (interrupted) {
|
||||||
reply_ng(CMD_HF_ICLASS_RECOVER, PM3_EOPABORTED, NULL, 0);
|
reply_ng(CMD_HF_ICLASS_RECOVER, PM3_EOPABORTED, NULL, 0);
|
||||||
} else {
|
} else {
|
||||||
reply_ng(CMD_HF_ICLASS_RECOVER, PM3_ESOFT, NULL, 0);
|
reply_ng(CMD_HF_ICLASS_RECOVER, PM3_ESOFT, NULL, 0);
|
||||||
|
|
|
@ -704,7 +704,7 @@ static void mem_app_config(const picopass_hdr_t *hdr) {
|
||||||
uint8_t app2_limit = card_app2_limit[type];
|
uint8_t app2_limit = card_app2_limit[type];
|
||||||
uint8_t pagemap = get_pagemap(hdr);
|
uint8_t pagemap = get_pagemap(hdr);
|
||||||
|
|
||||||
PrintAndLogEx(INFO, "-------------------------- " _CYAN_("Memory") " --------------------------");
|
PrintAndLogEx(INFO, "------------------------ " _CYAN_("Memory") " -------------------------");
|
||||||
|
|
||||||
if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) {
|
if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) {
|
||||||
PrintAndLogEx(INFO, " %u KBits ( " _YELLOW_("%u") " bytes )", kb, app2_limit * 8);
|
PrintAndLogEx(INFO, " %u KBits ( " _YELLOW_("%u") " bytes )", kb, app2_limit * 8);
|
||||||
|
@ -733,7 +733,7 @@ static void mem_app_config(const picopass_hdr_t *hdr) {
|
||||||
[=] AA2 blocks 5 { 0x100 - 0xFF (256 - 255) }
|
[=] AA2 blocks 5 { 0x100 - 0xFF (256 - 255) }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PrintAndLogEx(INFO, "------------------------- " _CYAN_("KeyAccess") " ------------------------");
|
PrintAndLogEx(INFO, "----------------------- " _CYAN_("KeyAccess") " -----------------------");
|
||||||
PrintAndLogEx(INFO, " * Kd, Debit key, AA1 Kc, Credit key, AA2 *");
|
PrintAndLogEx(INFO, " * Kd, Debit key, AA1 Kc, Credit key, AA2 *");
|
||||||
uint8_t keyAccess = isset(mem, 0x01);
|
uint8_t keyAccess = isset(mem, 0x01);
|
||||||
if (keyAccess) {
|
if (keyAccess) {
|
||||||
|
@ -754,13 +754,13 @@ static void mem_app_config(const picopass_hdr_t *hdr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_picopass_info(const picopass_hdr_t *hdr) {
|
void print_picopass_info(const picopass_hdr_t *hdr) {
|
||||||
PrintAndLogEx(INFO, "-------------------- " _CYAN_("Card configuration") " --------------------");
|
PrintAndLogEx(INFO, "------------------- " _CYAN_("Card configuration") " ------------------");
|
||||||
fuse_config(hdr);
|
fuse_config(hdr);
|
||||||
mem_app_config(hdr);
|
mem_app_config(hdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_picopass_header(const picopass_hdr_t *hdr) {
|
void print_picopass_header(const picopass_hdr_t *hdr) {
|
||||||
PrintAndLogEx(INFO, "--------------------------- " _CYAN_("Card") " ---------------------------");
|
PrintAndLogEx(INFO, "-------------------------- " _CYAN_("Card") " -------------------------");
|
||||||
PrintAndLogEx(SUCCESS, " CSN... " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn)));
|
PrintAndLogEx(SUCCESS, " CSN... " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn)));
|
||||||
PrintAndLogEx(SUCCESS, " Config... %s card configuration", sprint_hex((uint8_t *)&hdr->conf, sizeof(hdr->conf)));
|
PrintAndLogEx(SUCCESS, " Config... %s card configuration", sprint_hex((uint8_t *)&hdr->conf, sizeof(hdr->conf)));
|
||||||
PrintAndLogEx(SUCCESS, "E-purse... %s card challenge, CC", sprint_hex(hdr->epurse, sizeof(hdr->epurse)));
|
PrintAndLogEx(SUCCESS, "E-purse... %s card challenge, CC", sprint_hex(hdr->epurse, sizeof(hdr->epurse)));
|
||||||
|
@ -768,13 +768,13 @@ void print_picopass_header(const picopass_hdr_t *hdr) {
|
||||||
if (memcmp(hdr->key_d, zeros, sizeof(zeros)) && memcmp(hdr->key_d, empty, sizeof(empty))) {
|
if (memcmp(hdr->key_d, zeros, sizeof(zeros)) && memcmp(hdr->key_d, empty, sizeof(empty))) {
|
||||||
PrintAndLogEx(SUCCESS, " Kd... " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d)));
|
PrintAndLogEx(SUCCESS, " Kd... " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d)));
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(SUCCESS, " Kd... %s debit key ( hidden )", sprint_hex(hdr->key_d, sizeof(hdr->key_d)));
|
PrintAndLogEx(SUCCESS, " Kd... -- -- -- -- -- -- -- -- debit key ( hidden )");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(hdr->key_c, zeros, sizeof(zeros)) && memcmp(hdr->key_c, empty, sizeof(empty))) {
|
if (memcmp(hdr->key_c, zeros, sizeof(zeros)) && memcmp(hdr->key_c, empty, sizeof(empty))) {
|
||||||
PrintAndLogEx(SUCCESS, " Kc... " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c)));
|
PrintAndLogEx(SUCCESS, " Kc... " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c)));
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(SUCCESS, " Kc... %s credit key ( hidden )", sprint_hex(hdr->key_c, sizeof(hdr->key_c)));
|
PrintAndLogEx(SUCCESS, " Kc... -- -- -- -- -- -- -- -- credit key ( hidden )");
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintAndLogEx(SUCCESS, " AIA... %s application issuer area", sprint_hex(hdr->app_issuer_area, sizeof(hdr->app_issuer_area)));
|
PrintAndLogEx(SUCCESS, " AIA... %s application issuer area", sprint_hex(hdr->app_issuer_area, sizeof(hdr->app_issuer_area)));
|
||||||
|
@ -3163,12 +3163,12 @@ static int CmdHFiClass_TearBlock(const char *Cmd) {
|
||||||
bool reread = false;
|
bool reread = false;
|
||||||
bool erase_phase = false;
|
bool erase_phase = false;
|
||||||
|
|
||||||
if (blockno < 3){
|
if (blockno < 3) {
|
||||||
read_auth = false;
|
read_auth = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int res_orig = iclass_read_block_ex(key, blockno, keyType, elite, rawkey, use_replay, verbose, read_auth, shallow_mod, data_read_orig, false);
|
int res_orig = iclass_read_block_ex(key, blockno, keyType, elite, rawkey, use_replay, verbose, read_auth, shallow_mod, data_read_orig, false);
|
||||||
while (reread){
|
while (reread) {
|
||||||
if (res_orig == PM3_SUCCESS && !reread) {
|
if (res_orig == PM3_SUCCESS && !reread) {
|
||||||
if (memcmp(data_read_orig, zeros, 8) == 0) {
|
if (memcmp(data_read_orig, zeros, 8) == 0) {
|
||||||
reread = true;
|
reread = true;
|
||||||
|
@ -3177,25 +3177,25 @@ static int CmdHFiClass_TearBlock(const char *Cmd) {
|
||||||
}
|
}
|
||||||
} else if (res_orig == PM3_SUCCESS && reread) {
|
} else if (res_orig == PM3_SUCCESS && reread) {
|
||||||
reread = false;
|
reread = false;
|
||||||
if (blockno == 2 && memcmp(data_read_orig, zeros, 8) == 0){
|
if (blockno == 2 && memcmp(data_read_orig, zeros, 8) == 0) {
|
||||||
reread = true;
|
reread = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blockno == 2 && data_len == 0){
|
if (blockno == 2 && data_len == 0) {
|
||||||
int value_index = 0; //assuming FFFFFFFF is on the right
|
int value_index = 0; //assuming FFFFFFFF is on the right
|
||||||
if(memcmp(data_read_orig + 4, "\xFF\xFF\xFF\xFF", 4) != 0){ //FFFFFFFF is on the left
|
if (memcmp(data_read_orig + 4, "\xFF\xFF\xFF\xFF", 4) != 0) { //FFFFFFFF is on the left
|
||||||
value_index = 4;
|
value_index = 4;
|
||||||
}
|
}
|
||||||
memcpy(key, iClass_Key_Table[1], PICOPASS_BLOCK_SIZE);
|
memcpy(key, iClass_Key_Table[1], PICOPASS_BLOCK_SIZE);
|
||||||
use_credit_key = true;
|
use_credit_key = true;
|
||||||
auth = true;
|
auth = true;
|
||||||
memcpy(data,data_read_orig,PICOPASS_BLOCK_SIZE);
|
memcpy(data, data_read_orig, PICOPASS_BLOCK_SIZE);
|
||||||
//decrease the debit epurse value by 1
|
//decrease the debit epurse value by 1
|
||||||
if(data_read_orig[value_index] != 0x00){
|
if (data_read_orig[value_index] != 0x00) {
|
||||||
data[value_index]--;
|
data[value_index]--;
|
||||||
}else{
|
} else {
|
||||||
data[value_index + 2]--;
|
data[value_index + 2]--;
|
||||||
data[value_index] = 0xFF;
|
data[value_index] = 0xFF;
|
||||||
}
|
}
|
||||||
|
@ -3369,7 +3369,7 @@ static int CmdHFiClass_TearBlock(const char *Cmd) {
|
||||||
if (memcmp(data_read, ff_data, 8) == 0 &&
|
if (memcmp(data_read, ff_data, 8) == 0 &&
|
||||||
memcmp(data_read_orig, ff_data, 8) != 0) {
|
memcmp(data_read_orig, ff_data, 8) != 0) {
|
||||||
|
|
||||||
if (erase_phase == false){
|
if (erase_phase == false) {
|
||||||
PrintAndLogEx(NORMAL, "");
|
PrintAndLogEx(NORMAL, "");
|
||||||
PrintAndLogEx(SUCCESS, _CYAN_("Erase phase hit... ALL ONES"));
|
PrintAndLogEx(SUCCESS, _CYAN_("Erase phase hit... ALL ONES"));
|
||||||
iclass_cmp_print(data_read_orig, data_read, "Original: ", "Read: ");
|
iclass_cmp_print(data_read_orig, data_read, "Original: ", "Read: ");
|
||||||
|
@ -6018,7 +6018,7 @@ int info_iclass(bool shallow_mod) {
|
||||||
picopass_ns_hdr_t *ns_hdr = &r->header.ns_hdr;
|
picopass_ns_hdr_t *ns_hdr = &r->header.ns_hdr;
|
||||||
|
|
||||||
PrintAndLogEx(NORMAL, "");
|
PrintAndLogEx(NORMAL, "");
|
||||||
PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ----------------------------------------");
|
PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " -------------------------------------");
|
||||||
|
|
||||||
if ((r->status & FLAG_ICLASS_CSN) == FLAG_ICLASS_CSN) {
|
if ((r->status & FLAG_ICLASS_CSN) == FLAG_ICLASS_CSN) {
|
||||||
PrintAndLogEx(SUCCESS, " CSN: " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn)));
|
PrintAndLogEx(SUCCESS, " CSN: " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn)));
|
||||||
|
@ -6042,13 +6042,13 @@ int info_iclass(bool shallow_mod) {
|
||||||
if (memcmp(hdr->key_d, zeros, sizeof(zeros))) {
|
if (memcmp(hdr->key_d, zeros, sizeof(zeros))) {
|
||||||
PrintAndLogEx(SUCCESS, " Kd: " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d)));
|
PrintAndLogEx(SUCCESS, " Kd: " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d)));
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(SUCCESS, " Kd: %s debit key ( hidden )", sprint_hex(hdr->key_d, sizeof(hdr->key_d)));
|
PrintAndLogEx(SUCCESS, " Kd: -- -- -- -- -- -- -- -- debit key ( hidden )");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(hdr->key_c, zeros, sizeof(zeros))) {
|
if (memcmp(hdr->key_c, zeros, sizeof(zeros))) {
|
||||||
PrintAndLogEx(SUCCESS, " Kc: " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c)));
|
PrintAndLogEx(SUCCESS, " Kc: " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c)));
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(SUCCESS, " Kc: %s credit key ( hidden )", sprint_hex(hdr->key_c, sizeof(hdr->key_c)));
|
PrintAndLogEx(SUCCESS, " Kc: -- -- -- -- -- -- -- -- credit key ( hidden )");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6061,7 +6061,7 @@ int info_iclass(bool shallow_mod) {
|
||||||
print_picopass_info(hdr);
|
print_picopass_info(hdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintAndLogEx(INFO, "------------------------ " _CYAN_("Fingerprint") " -----------------------");
|
PrintAndLogEx(INFO, "----------------------- " _CYAN_("Fingerprint") " ---------------------");
|
||||||
|
|
||||||
uint8_t aia[8];
|
uint8_t aia[8];
|
||||||
if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) {
|
if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) {
|
||||||
|
|
|
@ -3745,7 +3745,7 @@
|
||||||
"--sleep <ms> Sleep between each tear",
|
"--sleep <ms> Sleep between each tear",
|
||||||
"--arm Runs the commands on device side and tries to stabilize tears"
|
"--arm Runs the commands on device side and tries to stabilize tears"
|
||||||
],
|
],
|
||||||
"usage": "hf iclass tear [-hv] [-k <hex>] [--ki <dec>] --blk <dec> -d <hex> [-m <hex>] [--credit] [--elite] [--raw] [--nr] [--shallow] -s <dec> [-i <dec>] [-e <dec>] [--loop <dec>] [--sleep <ms>] [--arm]"
|
"usage": "hf iclass tear [-hv] [-k <hex>] [--ki <dec>] --blk <dec> [-d <hex>] [-m <hex>] [--credit] [--elite] [--raw] [--nr] [--shallow] -s <dec> [-i <dec>] [-e <dec>] [--loop <dec>] [--sleep <ms>] [--arm]"
|
||||||
},
|
},
|
||||||
"hf iclass unhash": {
|
"hf iclass unhash": {
|
||||||
"command": "hf iclass unhash",
|
"command": "hf iclass unhash",
|
||||||
|
@ -13372,6 +13372,6 @@
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"commands_extracted": 768,
|
"commands_extracted": 768,
|
||||||
"extracted_by": "PM3Help2JSON v1.00",
|
"extracted_by": "PM3Help2JSON v1.00",
|
||||||
"extracted_on": "2025-05-29T23:30:20"
|
"extracted_on": "2025-06-04T16:02:17"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue