This commit is contained in:
iceman1001 committed 2026-09-27 21:15:18 +02:00
1 parent 2630310336
commit 2e2598bca9
43 files changed
+462 -444

No files matched your search

+31 -17
View File
@@ -327,9 +327,9 @@ static int CmdBwmCharge(const char *Cmd) {
"Enable or disable BWM battery charging by clearing/setting the\n"
"AW32001E charge-enable bit (CEB, REG01[3]). PM5 only.\n"
_RED_("One-shot:") " the charger watchdog reverts this after ~160 s unless\n"
"serviced, so charging may stop on its own. Use to nudge a top-up.",
"hw bwm charge off --> disable charging\n"
"hw bwm charge on --> enable charging");
"serviced, so charging may stop on its own. Use to nudge a top-up.",
"hw bwm charge off --> disable charging\n"
"hw bwm charge on --> enable charging");
void *argtable[] = {
arg_param_begin,
arg_param_end
@@ -786,12 +786,18 @@ static int bwm_setting_txn(uint16_t cmd, uint8_t action, uint8_t value, bool has
static const char *bwm_wifi_state_name(uint8_t state) {
switch (state) {
case 0: return "disconnected";
case 1: return "connecting";
case 2: return "connected";
case 3: return "reconnecting";
case 4: return "connect task stopped";
default: return "unknown state";
case 0:
return "disconnected";
case 1:
return "connecting";
case 2:
return "connected";
case 3:
return "reconnecting";
case 4:
return "connect task stopped";
default:
return "unknown state";
}
}
@@ -839,10 +845,14 @@ static int CmdBwmPowerSave(const char *Cmd) {
static const char *bwm_wifi_ps_name(uint8_t mode) {
switch (mode) {
case BWM_WIFI_PS_NONE: return "none";
case BWM_WIFI_PS_MIN: return "min";
case BWM_WIFI_PS_MAX: return "max";
default: return "?";
case BWM_WIFI_PS_NONE:
return "none";
case BWM_WIFI_PS_MIN:
return "min";
case BWM_WIFI_PS_MAX:
return "max";
default:
return "?";
}
}
@@ -911,10 +921,14 @@ static int CmdBwmWifiPower(const char *Cmd) {
static const char *ble_state_str(uint8_t state) {
switch (state) {
case 0: return "off";
case 1: return "advertising, no client";
case 2: return "client connected";
default: return "unknown";
case 0:
return "off";
case 1:
return "advertising, no client";
case 2:
return "client connected";
default:
return "unknown";
}
}
+1 -1
View File
@@ -510,7 +510,7 @@ static int CmdFlashMemSpiFFSWipe(const char *Cmd) {
CLIParserInit(&ctx, "mem spiffs wipe",
_RED_("* * * Warning * * *") " \n"
_CYAN_("This command wipes all files on the device SPIFFS file system"),
"mem spiffs wipe");
"mem spiffs wipe");
void *argtable[] = {
arg_param_begin,
+2 -2
View File
@@ -3254,7 +3254,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) {
int16_t fsci = card.ats[1] & 0x0f;
PrintAndLogEx(INFO, " ..." _YELLOW_("%02X") "............ T0 TA1 is%s present, TB1 is%s present, "
"TC1 is%s present, FSCI is %d (FSC = %d)",
"TC1 is%s present, FSCI is %d (FSC = %d)",
card.ats[1],
(ta1 ? "" : _RED_(" NOT")),
(tb1 ? "" : _RED_(" NOT")),
@@ -3276,7 +3276,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) {
if (strlen(ds) != 0) ds[strlen(ds) - 2] = '\0';
if (strlen(dr) != 0) dr[strlen(dr) - 2] = '\0';
PrintAndLogEx(INFO, " ......" _YELLOW_("%02X") "......... TA1 different divisors are%s supported, "
"DR: [%s], DS: [%s]",
"DR: [%s], DS: [%s]",
card.ats[pos],
((card.ats[pos] & 0x80) ? _RED_(" NOT") : ""),
dr,
+19 -19
View File
@@ -553,10 +553,10 @@ static void print_status_flag1_interpretation(void) {
PrintAndLogEx(INFO, "----+--------------------------------------------------------------------------------------------------------------------");
PrintAndLogEx(INFO, " 00 | Indicates the successful completion of a command.");
PrintAndLogEx(INFO, " FF | If an error occurs during the processing of a command that includes no list in the command packet, \n"
" | or if an error occurs independently of any list, the card returns a response by setting FFh to Status Flag1.");
" | or if an error occurs independently of any list, the card returns a response by setting FFh to Status Flag1.");
PrintAndLogEx(INFO, " XX | If an error occurs while processing a command that includes Service Code List or Block List \n"
" | in the command packet, the card returns a response by setting a number in the list to Status Flag1,\n"
" | indicating the location of the error.");
" | in the command packet, the card returns a response by setting a number in the list to Status Flag1,\n"
" | indicating the location of the error.");
PrintAndLogEx(INFO, "----+--------------------------------------------------------------------------------------------------------------------");
}
@@ -565,28 +565,28 @@ static void print_status_flag2_interpration(void) {
PrintAndLogEx(INFO, "----+--------------------------------------------------------------------------------------------------------------------");
PrintAndLogEx(INFO, " 00 | Indicates the successful completion of a command.");
PrintAndLogEx(INFO, " 01 | The calculated result is either less than zero when the purse data is decremented, or exceeds 4\n"
" | Bytes when the purse data is incremented.");
" | Bytes when the purse data is incremented.");
PrintAndLogEx(INFO, " 02 | The specified data exceeds the value of cashback data at cashback of purse.");
PrintAndLogEx(INFO, " 70 | Memory error (fatal error).");
PrintAndLogEx(INFO, " 71 | The number of memory rewrites exceeds the upper limit (this is only a warning; data writing is performed as normal).\n"
" | The maximum number of rewrites can differ, depending on the product being used.\n"
" | In addition, Status Flag1 is either 00h or FFh depending on the product being used.");
" | The maximum number of rewrites can differ, depending on the product being used.\n"
" | In addition, Status Flag1 is either 00h or FFh depending on the product being used.");
PrintAndLogEx(INFO, " A1 | Illegal Number of Service| Number of Service or Number of Node specified by the command \n"
" | falls outside the range of the prescribed value.");
" | falls outside the range of the prescribed value.");
PrintAndLogEx(INFO, " A2 | Illegal command packet (specified Number of Block) : Number of Block specified by the \n"
" | command falls outside the range of the prescribed values for the product.");
" | command falls outside the range of the prescribed values for the product.");
PrintAndLogEx(INFO, " A3 | Illegal Block List (specified order of Service) : Service Code List Order specified by \n"
" | Block List Element falls outside the Number of Service specified by the command \n"
" | (or the Number of Service specified at the times of mutual authentication).");
" | Block List Element falls outside the Number of Service specified by the command \n"
" | (or the Number of Service specified at the times of mutual authentication).");
PrintAndLogEx(INFO, " A4 | Illegal Service type : Area Attribute specified by the command or Service Attribute of Service Code is incorrect.");
PrintAndLogEx(INFO, " A5 | Access is not allowed : Area or Service specified by the command cannot be accessed.\n"
" | The parameter specified by the command does not satisfy the conditions for success.");
" | The parameter specified by the command does not satisfy the conditions for success.");
PrintAndLogEx(INFO, " A6 | Illegal Service Code List : Target to be accessed, identified by Service Code List Order, specified by Block\n"
" | List Element does not exist. Or, Node specified by Node Code List does not exist.");
" | List Element does not exist. Or, Node specified by Node Code List does not exist.");
PrintAndLogEx(INFO, " A7 | Illegal Block List (Access Mode) : Access Mode specified by Block List Element is incorrect.");
PrintAndLogEx(INFO, " A8 | Illegal Block Number Block Number (access to the specified data is inhibited) :\n"
" | specified by Block List Element exceeds the number of Blocks assigned to Service.");
" | specified by Block List Element exceeds the number of Blocks assigned to Service.");
PrintAndLogEx(INFO, " A9 | Data write failure : This is the error that occurs in issuance commands.");
PrintAndLogEx(INFO, " AA | Key-change failure : Key change failed.");
PrintAndLogEx(INFO, " AB | Illegal Package Parity or illegal Package MAC : This is the error that occurs in issuance commands.");
@@ -594,7 +594,7 @@ static void print_status_flag2_interpration(void) {
PrintAndLogEx(INFO, " AD | Service exists already : This is the error that occurs in issuance commands.");
PrintAndLogEx(INFO, " AE | Illegal System Code : This is the error that occurs in issuance commands.");
PrintAndLogEx(INFO, " AF | Too many simultaneous cyclic write operations : Number of simultaneous write Blocks\n"
" | specified by the command to Cyclic Service exceeds the number of Blocks assigned to Service.");
" | specified by the command to Cyclic Service exceeds the number of Blocks assigned to Service.");
PrintAndLogEx(INFO, " C0 | Illegal Package Identifier : This is the error that occurs in issuance commands.");
PrintAndLogEx(INFO, " C1 | Discrepancy of parameters inside and outside Package : This is the error that occurs in issuance commands.");
PrintAndLogEx(INFO, " C2 | Command is disabled already : This is the error that occurs in issuance commands.");
@@ -618,16 +618,16 @@ static void print_number_of_service_constraints(void) {
static void print_number_of_block_constraints(void) {
PrintAndLogEx(INFO, " - Number of Block: shall be less than or equal to the maximum number of Blocks that can be read simultaneously.\n"
" The maximum number of Blocks that can be read simultaneously can differ, depending on the product being used.\n"
" Use as default 01");
" The maximum number of Blocks that can be read simultaneously can differ, depending on the product being used.\n"
" Use as default 01");
}
static void print_service_code_list_constraints(void) {
PrintAndLogEx(INFO, " - Service Code List: For Service Code List, only Service Code existing in the product shall be specified:");
PrintAndLogEx(INFO, " - Even when Service Code exists in the product, Service Code not referenced from Block List shall not \n"
" be specified to Service Code List.");
" be specified to Service Code List.");
PrintAndLogEx(INFO, " - For existence or nonexistence of Service in a product, please check using the Request Service \n"
" (or Request Service v2) command.");
" (or Request Service v2) command.");
}
/*
@@ -8424,7 +8424,7 @@ static int CmdHFFelicaSim(const char *Cmd) {
arg_param_begin,
arg_str1("f", "file", "<fn>", "JSON dump file"),
arg_str0(NULL, "read-without-encryption-error-location-indication",
"<mask|index|flag>", "Read Without Encryption error location indication (default: mask)"),
"<mask|index|flag>", "Read Without Encryption error location indication (default: mask)"),
arg_lit0("v", "verbose", "verbose output"),
arg_param_end
};
+9 -9
View File
@@ -382,7 +382,7 @@ static int hfgal_create_creds_app(DesfireContext_t *ctx, uint8_t *site_key, uint
// UID is required for key diversification
if (ctx->uidlen == 0) {
PM3_RET_ERR(PM3_EINVARG, "UID is required for key diversification. "
"Please fetch it before calling `hfgal_create_creds_app`");
"Please fetch it before calling `hfgal_create_creds_app`");
}
// Create application
@@ -872,11 +872,11 @@ static int hfgal_read_desfire_card(uint32_t aid, uint8_t *site_key, bool verbose
PM3_RET_IF_ERR_MAYBE_MSG(res, !quiet, "Failed reading card application credentials");
PrintAndLogEx(SUCCESS, "Gallagher (AID %06X) - region: " _GREEN_("%c") " ( " _GREEN_("%u") " )"
", facility: " _GREEN_("%u")
", card number: " _GREEN_("%u")
", issue level: " _GREEN_("%u"),
", facility: " _GREEN_("%u")
", card number: " _GREEN_("%u")
", issue level: " _GREEN_("%u"),
current_aid,
'A' + creds.region_code,
'A' + creds.region_code,
creds.region_code,
creds.facility_code,
creds.card_number,
@@ -1696,10 +1696,10 @@ static int CmdGallagherDecode(const char *cmd) {
gallagher_decode_creds(data_buf, &creds);
PrintAndLogEx(SUCCESS, "Gallagher - region: " _GREEN_("%c") " ( " _GREEN_("%u") " )"
", facility: " _GREEN_("%u")
", card number: " _GREEN_("%u")
", issue level: " _GREEN_("%u"),
'A' + creds.region_code,
", facility: " _GREEN_("%u")
", card number: " _GREEN_("%u")
", issue level: " _GREEN_("%u"),
'A' + creds.region_code,
creds.region_code,
creds.facility_code,
creds.card_number,
+2 -2
View File
@@ -570,7 +570,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff
// for printing the complete segment we need at least wrc + wrp_len + remain_seg_payload_len bytes
if ((i + wrc + wrp_len + remain_seg_payload_len) > card_size) {
PrintAndLogEx(FAILED, "Cannot read segment body, because the input buffer is too small. "
"Please check that the data is correct and properly aligned. ");
"Please check that the data is correct and properly aligned. ");
return_value = PM3_EOUTOFBOUND;
goto out;
}
@@ -654,7 +654,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff
// for printing the complete segment we need at least wrc + wrp_len + remain_seg_payload_len bytes
if ((i + wrc + wrp_len + remain_seg_payload_len) > card_size) {
PrintAndLogEx(FAILED, "Cannot read segment body, because the input buffer is too small. "
"Please check that the data is correct and properly aligned. ");
"Please check that the data is correct and properly aligned. ");
return_value = PM3_EOUTOFBOUND;
goto out;
}
+1 -1
View File
@@ -5239,7 +5239,7 @@ void printKeyTableEx(size_t sectorscnt, sector_t *e_sector, uint8_t start_sector
_YELLOW_("H") ":Hardnested / "
_YELLOW_("C") ":statiCnested / "
_YELLOW_("A") ":keyA "
" )"
" )"
);
if (sectorscnt == 18) {
PrintAndLogEx(INFO, "( " _MAGENTA_("*") " ) These sectors used for signature. Lays outside of user memory");
+1 -1
View File
@@ -1789,7 +1789,7 @@ static int CmdHF14aDesChk(const char *Cmd) {
}
// AID 000000 is the PICC level.
// AID 000000 is the PICC level.
// GetApplicationIDs never lists it, so it has to be seeded manually
memset(app_ids, 0x00, 3);
app_ids_len = 3;
+16 -16
View File
@@ -2733,11 +2733,11 @@ static void fm11_print_key_table(const uint64_t keys_found[FM11RF08S_SECTORS][2]
static void fm11_build_filename(char *dst, size_t dst_len, const iso14a_card_select_t *card, const char *base, const char *suffix) {
snprintf(dst, dst_len, "hf-mf-%s-%s%s%s"
, sprint_hex_inrow(card->uid, card->uidlen)
, base
, (suffix != NULL && suffix[0] != '\0') ? "-" : ""
, (suffix != NULL) ? suffix : ""
);
, sprint_hex_inrow(card->uid, card->uidlen)
, base
, (suffix != NULL && suffix[0] != '\0') ? "-" : ""
, (suffix != NULL) ? suffix : ""
);
}
static int fm11_save_recovery_outputs(const iso14a_card_select_t *card, const iso14a_fm11rf08s_nonces_with_data_t *nonces,
@@ -2886,8 +2886,8 @@ static int fm11_select_mifare_classic(iso14a_card_select_t *card_out) {
return PM3_SUCCESS;
}
int HFMFSENRecover(bool keep_nonces, bool no_oob, bool reader_mode, bool offline_only,
int max_online_candidates, uint8_t parity_mask, bool skip_default_key_check,
int HFMFSENRecover(bool keep_nonces, bool no_oob, bool reader_mode, bool offline_only,
int max_online_candidates, uint8_t parity_mask, bool skip_default_key_check,
const sector_t *known_sectors, size_t known_sector_count, const char *suffix,
bool no_save) {
@@ -2952,10 +2952,10 @@ int HFMFSENRecover(bool keep_nonces, bool no_oob, bool reader_mode, bool offline
uint32_t nonce_count = FM11RF08S_SECTORS * 2;
char activity[80] = {0};
snprintf(activity, sizeof(activity), "Loaded card UID %08X using %s key %s"
, uid
, collected_with_backdoor ? "backdoor" : "dictionary"
, sprint_hex_inrow(active_key, MIFARE_KEY_SIZE)
);
, uid
, collected_with_backdoor ? "backdoor" : "dictionary"
, sprint_hex_inrow(active_key, MIFARE_KEY_SIZE)
);
fm11_sen_progress(nonce_count, activity, 0, 0);
@@ -3103,10 +3103,10 @@ int HFMFSENRecover(bool keep_nonces, bool no_oob, bool reader_mode, bool offline
fm11_prioritize_0000_prefix(&candidates[sec][1]);
}
snprintf(activity, sizeof(activity), "Prepared sec %03u candidates (A %u / B %u)"
, real_sec
, candidates[sec][0].count
, candidates[sec][1].count
);
, real_sec
, candidates[sec][0].count
, candidates[sec][1].count
);
fm11_sen_progress(nonce_count, activity, candidates[sec][0].count + candidates[sec][1].count, 0);
}
@@ -3288,7 +3288,7 @@ int HFMFSENRecover(bool keep_nonces, bool no_oob, bool reader_mode, bool offline
goto out;
}
// find the cheapest unfound, non-exhausted (sec, kt) pair
// find the cheapest unfound, non-exhausted (sec, kt) pair
uint8_t best_sec = 0xFF, best_kt = 0;
uint32_t best_cost = UINT32_MAX;
uint32_t best_count = UINT32_MAX;
+10 -6
View File
@@ -730,8 +730,8 @@ static int ntag424_authenticate_ev2_first(uint8_t keyno, uint8_t *key, ntag424_s
if (memcmp(response.rnd_a, &rnd_a_clear[1], 15) != 0 ||
response.rnd_a[15] != rnd_a_clear[0]) {
PrintAndLogEx(ERR, "Incorrect response from card\n"
"expected: %s\n"
"got: %s"
"expected: %s\n"
"got: %s"
, sprint_hex(rnd_a_clear, 16),
sprint_hex(response.rnd_a, 16));
return PM3_ESOFT;
@@ -865,10 +865,14 @@ static int ntag424_read_data(uint8_t fileno, uint16_t offset, uint16_t num_bytes
static const char *tt_status_str(uint8_t status) {
switch (status) {
case 'C': return "Close";
case 'O': return "Open";
case 'I': return "Invalid";
default: return "Unknown";
case 'C':
return "Close";
case 'O':
return "Open";
case 'I':
return "Invalid";
default:
return "Unknown";
}
}
+5 -5
View File
@@ -476,11 +476,11 @@ static int CmdHFHIDConfigSim(const char *Cmd) {
strncpy(uid_str, sprint_hex_inrow(uid, uidlen), sizeof(uid_str) - 1);
uid_str[sizeof(uid_str) - 1] = '\0';
PrintAndLogEx(INFO, "HID Config Card sim:"
" UID " _YELLOW_("%s")
" AID " _YELLOW_("%s")
" ATS len " _YELLOW_("%d")
" APDU overrides " _YELLOW_("%u")
" default resp " _YELLOW_("%s"),
" UID " _YELLOW_("%s")
" AID " _YELLOW_("%s")
" ATS len " _YELLOW_("%d")
" APDU overrides " _YELLOW_("%u")
" default resp " _YELLOW_("%s"),
uid_str, aid_str, ats_len, apdu_count,
has_default_resp ? sprint_hex_inrow(default_resp, default_resp_len_sz) : "9000 (builtin)");
PrintAndLogEx(INFO, "Press " _GREEN_("pm3 button") " or " _GREEN_("<Enter>") " to abort simulation");
+4 -4
View File
@@ -1894,11 +1894,11 @@ int CmdLFRelay(const char *Cmd) {
" --rdr : Reading device, act as IP client and reads LF tag and sends data\n"
" --tag : Simulation device, act as IP server and simulates relayed data\n",
_WHITE_("Device A, reading LF tag, client") "\n"
"lf relay --rdr --ip 192.168.1.141 -> Client, connect to IP 192.168.1.141:8000\n"
"lf relay --rdr --ip 192.168.1.141 -p 18111 -> Client, connect to IP 192.168.1.141:18111 \n\n"
"lf relay --rdr --ip 192.168.1.141 -> Client, connect to IP 192.168.1.141:8000\n"
"lf relay --rdr --ip 192.168.1.141 -p 18111 -> Client, connect to IP 192.168.1.141:18111 \n\n"
_WHITE_("Device B, simulate LF tag, server") "\n"
"lf relay --tag -p 8111 -> Server listening port 8111, recv 30000 samples\n"
"lf relay --tag -s 10000 -> Server listening port 8000, recv 10000 samples\n"
"lf relay --tag -p 8111 -> Server listening port 8111, recv 30000 samples\n"
"lf relay --tag -s 10000 -> Server listening port 8000, recv 10000 samples\n"
);
void *argtable[] = {
+6 -6
View File
@@ -820,7 +820,7 @@ int T55xxReadBlockEx(uint8_t block, bool page1, bool usepwd, uint8_t override, u
// override = 1 (override and display)
// override = 2 (override and no display)
if (override == 0) {
// A live detect (lf t55xx detect -p) that recovered this password already confirmed the PWD bit is set.
// A live detect (lf t55xx detect -p) that recovered this password already confirmed the PWD bit is set.
bool detect_confirmed_pwd = (config.pwd_known && config.usepwd && config.pwd == password);
if (detect_confirmed_pwd == false) {
@@ -873,9 +873,9 @@ static int CmdT55xxReadBlock(const char *Cmd) {
_CYAN_("Use of read with password on a tag not configured") "\n"
_CYAN_("for a password can damage the tag") "\n"
_RED_(" * * * * * * * * * *"),
"lf t55xx read -b 0 --> read data from block 0\n"
"lf t55xx read -b 0 --pwd 01020304 --> read data from block 0, pwd 01020304\n"
"lf t55xx read -b 0 --pwd 01020304 -o --> read data from block 0, pwd 01020304, override\n"
"lf t55xx read -b 0 --> read data from block 0\n"
"lf t55xx read -b 0 --pwd 01020304 --> read data from block 0, pwd 01020304\n"
"lf t55xx read -b 0 --pwd 01020304 -o --> read data from block 0, pwd 01020304, override\n"
);
// 1 (help) + 4(four user specified params) + (5 T55XX_DLMODE_SINGLE)
@@ -5105,9 +5105,9 @@ out:
return PM3_SUCCESS;
}
// Page-1 trace data opens with allocation class ACL = 0xE0, then a manufacturer code.
// Page-1 trace data opens with allocation class ACL = 0xE0, then a manufacturer code.
// Genuine Atmel silicon carries manufacturer 0x15 / 0x39 (the atmel / silicon preambles).
// Cloned T5577s keep the 0xE0 ACL but use another manufacturer byte,
// Cloned T5577s keep the 0xE0 ACL but use another manufacturer byte,
// also accept a bare 8-bit ACL match
static bool t55xx_trace_preamble_match(void) {
uint8_t preamble_atmel[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1};
+1 -1
View File
@@ -1658,7 +1658,7 @@ int CmdTraceList(const char *Cmd) {
if (protocol == LEGIC)
PrintAndLogEx(INFO, _YELLOW_("LEGIC") " - Reader Mode: Timings are in ticks (1us == 1.5ticks)\n"
" Tag Mode: Timings are in sub carrier periods (1/212 kHz == 4.7us)");
" Tag Mode: Timings are in sub carrier periods (1/212 kHz == 4.7us)");
if (protocol == ISO_14443B || protocol == PROTO_CRYPTORF) {
if (use_us)
+1 -1
View File
@@ -173,7 +173,7 @@ static int build_segs_from_phdrs(flash_file_t *ctx, flash_dev_t *flash_dev) {
offset);
if (filesz != memsz) {
PrintAndLogEx(ERR, "Error: PHDR file size does not equal memory size\n"
"(DATA+BSS PHDRs do not make sense on ROM platforms!)");
"(DATA+BSS PHDRs do not make sense on ROM platforms!)");
return PM3_EFILE;
}
if (paddr < last_end) {
+4 -4
View File
@@ -300,10 +300,10 @@ void print_gallagher_creds(GallagherCredentials_t *creds) {
return;
}
PrintAndLogEx(SUCCESS, "Gallagher - region: " _GREEN_("%c") " ( " _GREEN_("%u") " )"
", facility: " _GREEN_("%u")
", card number: " _GREEN_("%u")
", issue level: " _GREEN_("%u"),
'A' + creds->region_code,
", facility: " _GREEN_("%u")
", card number: " _GREEN_("%u")
", issue level: " _GREEN_("%u"),
'A' + creds->region_code,
creds->region_code,
creds->facility_code,
creds->card_number,
+3 -3
View File
@@ -2756,9 +2756,9 @@ static int _wrap_new_pm3(lua_State *L) {
}
SWIG_Lua_pusherrstring(L, "Wrong arguments for overloaded function 'new_pm3'\n"
" Possible C/C++ prototypes are:\n"
" pm3::pm3()\n"
" pm3::pm3(char *)\n");
" Possible C/C++ prototypes are:\n"
" pm3::pm3()\n"
" pm3::pm3(char *)\n");
lua_error(L);
return 0;
}
+2 -2
View File
@@ -831,7 +831,7 @@ static void show_help(bool showFullHelp, char *exec_name) {
PrintAndLogEx(NORMAL, " -v/--version print client version");
PrintAndLogEx(NORMAL, " -p/--port serial port to connect to");
PrintAndLogEx(NORMAL, " -w/--wait 20sec waiting the serial port to appear in the OS\n"
" with a tcp: port, listen and wait for an incoming connection instead");
" with a tcp: port, listen and wait for an incoming connection instead");
PrintAndLogEx(NORMAL, " -f/--flush output will be flushed after every print");
PrintAndLogEx(NORMAL, " -d/--debug <0|1|2> set debugmode");
PrintAndLogEx(NORMAL, "\nOptions in client mode:");
@@ -945,7 +945,7 @@ static int dumpmem_pm3(char *serial_port_name, const char *filename, uint32_t ad
PrintAndLogEx(INFO, "Device is running the bootloader.");
} else {
PrintAndLogEx(ERR, "Device is running the bootloader, but the bootloader"
" doesn't understand the READ MEM command.");
" doesn't understand the READ MEM command.");
goto finish2;
}
}