From 4df743c2a0ce9b26c47bbd4bfd7a28ac2fc3d086 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 15 Jan 2024 13:08:55 +0100 Subject: [PATCH] style --- armsrc/iso14443b.c | 16 +- armsrc/iso14443b.h | 2 +- armsrc/iso15693.c | 2 +- client/luascripts/hf_mf_uid_downgrade.lua | 4 +- client/src/cmddata.c | 24 +- client/src/cmdhf14b.c | 24 +- client/src/cmdhf15.c | 86 +- client/src/cmdhfmfu.c | 6 +- client/src/cmdhfwaveshare.c | 8 +- client/src/cmdhfxerox.c | 108 +- client/src/emv/cmdemv.c | 2 +- client/src/imgutils.c | 18 +- client/src/imgutils.h | 2 +- client/src/pm3line_vocabulary.h | 11 +- client/src/preferences.c | 38 +- client/src/scripting.c | 2 +- doc/commands.json | 1722 +++++++++++---------- doc/commands.md | 11 +- 18 files changed, 1080 insertions(+), 1006 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 512976d30..49d4320b8 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -819,7 +819,7 @@ void SimulateIso14443bTag(const uint8_t *pupi) { // WUP in HALTED state if (len == 5) { if ((receivedCmd[0] == ISO14443B_REQB && (receivedCmd[2] & 0x8) == 0x8 && cardSTATE == SIM_HALTED) || - receivedCmd[0] == ISO14443B_REQB) { + receivedCmd[0] == ISO14443B_REQB) { LogTrace(receivedCmd, len, 0, 0, NULL, true); cardSTATE = SIM_SELECTING; @@ -1653,7 +1653,7 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // retrieve the result again (with increased timeout) eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - + if (Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time, &len) != PM3_SUCCESS) { FpgaDisableTracing(); return PM3_ECARDEXCHANGE; @@ -1670,8 +1670,8 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // current block number, toggle the current block number if ((len >= 3) && // PCB + CRC = 3 bytes - (((data_bytes[0] & 0xC0) == 0) || (data_bytes[0] & 0xD0) == 0x80) && // I-Block OR R-Block with ACK bit set to 0 - ((data_bytes[0] & 0x01) == iso14b_pcb_blocknum)) { // equal block numbers + (((data_bytes[0] & 0xC0) == 0) || (data_bytes[0] & 0xD0) == 0x80) && // I-Block OR R-Block with ACK bit set to 0 + ((data_bytes[0] & 0x01) == iso14b_pcb_blocknum)) { // equal block numbers iso14b_pcb_blocknum ^= 1; @@ -1725,7 +1725,7 @@ static int iso14443b_select_cts_card(iso14b_cts_card_select_t *card) { if (Get14443bAnswerFromTag(r, sizeof(r), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { goto out; } - + FpgaDisableTracing(); if (retlen != 4) { @@ -1803,7 +1803,7 @@ static int iso14443b_select_srx_card(iso14b_card_select_t *card) { eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; uint16_t retlen = 0; if (Get14443bAnswerFromTag(r_init, sizeof(r_init), iso14b_timeout, &eof_time, &retlen) != PM3_SUCCESS) { - FpgaDisableTracing(); + FpgaDisableTracing(); return PM3_ECARDEXCHANGE; } FpgaDisableTracing(); @@ -2526,12 +2526,12 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { } else { responselen = MIN(responselen, PM3_CMD_DATA_SIZE); - iso14b_raw_apdu_response_t *payload = (iso14b_raw_apdu_response_t *)BigBuf_calloc( sizeof(iso14b_raw_apdu_response_t) + responselen); + iso14b_raw_apdu_response_t *payload = (iso14b_raw_apdu_response_t *)BigBuf_calloc(sizeof(iso14b_raw_apdu_response_t) + responselen); payload->response_byte = response_byte; payload->datalen = responselen; memcpy(payload->data, buf, payload->datalen); - reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t*)payload, sizeof(iso14b_raw_apdu_response_t) + responselen); + reply_ng(CMD_HF_ISO14443B_COMMAND, status, (uint8_t *)payload, sizeof(iso14b_raw_apdu_response_t) + responselen); BigBuf_free_keep_EM(); } } diff --git a/armsrc/iso14443b.h b/armsrc/iso14443b.h index 14da377d3..fab9c3455 100644 --- a/armsrc/iso14443b.h +++ b/armsrc/iso14443b.h @@ -35,7 +35,7 @@ #endif void iso14443b_setup(void); -int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res, int * responselen); +int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void *rxdata, uint16_t rxmaxlen, uint8_t *res, int *responselen); int iso14443b_select_card(iso14b_card_select_t *card); diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index d66047d01..61b77fa99 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -2461,7 +2461,7 @@ void SendRawCommand15693(iso15_raw_cmd_t *packet) { // This is part of ISO15693 protocol definitions where the following commands needs to request option. // note: // it seem like previous we just guessed and never followed the fISO145_REQ_OPTION flag if it was set / not set from client side. - // this is a problem. Since without this the response from the tag is one byte shorter. And a lot of client side functions has been + // this is a problem. Since without this the response from the tag is one byte shorter. And a lot of client side functions has been // hardcoded to assume for the extra byte in the response. bool request_answer = false; diff --git a/client/luascripts/hf_mf_uid_downgrade.lua b/client/luascripts/hf_mf_uid_downgrade.lua index 1829e835a..97988fd1b 100644 --- a/client/luascripts/hf_mf_uid_downgrade.lua +++ b/client/luascripts/hf_mf_uid_downgrade.lua @@ -10,8 +10,8 @@ copyright = '' author = "Adam Foster (evildaemond)" version = 'v0.0.1' desc = [[ -Convert a facility code and card number to a Mifare Classic UID, which can be used as part of a downgrade attack. -This abuses the fact that some controllers interpret the UID for Mifare Classic cards as a CN and FN, it requires the controller to interpret the wiegand payload in this way. +Convert a facility code and card number to a Mifare Classic UID, which can be used as part of a downgrade attack. +This abuses the fact that some controllers interpret the UID for Mifare Classic cards as a CN and FN, it requires the controller to interpret the wiegand payload in this way. The example of FC 146 CN 5 would be read by the reader and send as a payload like 0920005, where 9200 is dec 146 and 05 is interpreted as 5 diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 619f060a4..d1316ae7b 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2025,7 +2025,7 @@ int CmdTuneSamples(const char *Cmd) { // Q measure with Vlr=Q*(2*Vdd/pi) double lfq2 = (double)package->peak_v * 3.14 / 2 / vdd; - PrintAndLogEx(SUCCESS, "Peak voltage............ " _YELLOW_("%.1lf") , lfq2); + PrintAndLogEx(SUCCESS, "Peak voltage............ " _YELLOW_("%.1lf"), lfq2); // cross-check results if (lfq1 > 3) { double approx_vdd = (double)package->peak_v * 3.14 / 2 / lfq1; @@ -2073,7 +2073,7 @@ int CmdTuneSamples(const char *Cmd) { if (package->v_hf >= HF_UNUSABLE_V) { // Q measure with Vlr=Q*(2*Vdd/pi) double hfq = (double)package->v_hf * 3.14 / 2 / vdd; - PrintAndLogEx(SUCCESS, "peak voltage............ " _YELLOW_("%.1lf") , hfq); + PrintAndLogEx(SUCCESS, "peak voltage............ " _YELLOW_("%.1lf"), hfq); } if (package->v_hf < HF_UNUSABLE_V) @@ -2098,13 +2098,13 @@ int CmdTuneSamples(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-------- " _CYAN_("LF tuning graph") " ---------"); PrintAndLogEx(SUCCESS, "Blue line Divisor %d / %.2f kHz" - , LF_DIVISOR_134 - , LF_DIV2FREQ(LF_DIVISOR_134) - ); + , LF_DIVISOR_134 + , LF_DIV2FREQ(LF_DIVISOR_134) + ); PrintAndLogEx(SUCCESS, "Red line Divisor %d / %.2f kHz\n\n" - , LF_DIVISOR_125 - , LF_DIV2FREQ(LF_DIVISOR_125) - ); + , LF_DIVISOR_125 + , LF_DIV2FREQ(LF_DIVISOR_125) + ); g_GraphTraceLen = 256; g_CursorCPos = LF_DIVISOR_125; g_CursorDPos = LF_DIVISOR_134; @@ -3208,7 +3208,7 @@ static int CmdDiff(const char *Cmd) { PrintAndLogEx(INFO, "inB null"); } - + char hdr0[400] = {0}; int hdr_sln = (width * 4) + 2; @@ -3224,13 +3224,13 @@ static int CmdDiff(const char *Cmd) { fnlenB = strlen(filenameB); } - if (fnlenA && fnlenB ) { - + if (fnlenA && fnlenB) { + snprintf(hdr0, sizeof(hdr0) - 1, " # | " _CYAN_("%.*s"), max_fn_space, filenameA); // add space if needed int padding_len = (hdr_sln - fnlenA - 1); - if ( padding_len > 0 ) { + if (padding_len > 0) { memset(hdr0 + strlen(hdr0), ' ', padding_len); } snprintf(hdr0 + strlen(hdr0), sizeof(hdr0) - 1 - strlen(hdr0), "| " _CYAN_("%.*s"), max_fn_space, filenameB); diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 7c416fb86..473e4f5cd 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -99,7 +99,7 @@ static void hf14b_aid_search(bool verbose) { uint8_t vaid[200] = {0}; int vaidlen = 0; - if ((AIDGetFromElm(data, vaid, sizeof(vaid), &vaidlen) == false) || (vaidlen == 0 )) { + if ((AIDGetFromElm(data, vaid, sizeof(vaid), &vaidlen) == false) || (vaidlen == 0)) { continue; } @@ -210,7 +210,7 @@ static bool wait_14b_response(bool only_first, uint8_t *datalen, uint8_t *data) return false; } - // treat first reponse as same. + // treat first reponse as same. if (only_first) { if (datalen) { @@ -219,7 +219,7 @@ static bool wait_14b_response(bool only_first, uint8_t *datalen, uint8_t *data) if (data) { memcpy(data, resp.data.asBytes, resp.length); - } + } return true; } @@ -659,7 +659,7 @@ static const char *get_st25_chip_model(uint8_t id) { return "ST25TB512-AC"; case 0x33: return "ST25TB512-AT"; - case 0x3F: + case 0x3F: return "ST25TB02K"; case 0x1F: return "ST25TB04K"; @@ -846,7 +846,7 @@ static uint8_t get_st_cardsize(const uint8_t *uid) { switch (chipid) { case 0x0: case 0x3: - case 0x7: + case 0x7: return SR_SIZE_4K; case 0x4: case 0x6: @@ -1137,9 +1137,9 @@ static int write_sr_block(uint8_t blockno, uint8_t datalen, uint8_t *data) { free(packet); if (wait_14b_response(true, NULL, NULL) == false) { - PrintAndLogEx(FAILED, "SRx write block ( " _RED_("failed") " )" ); + PrintAndLogEx(FAILED, "SRx write block ( " _RED_("failed") " )"); return PM3_ESOFT; - } + } return PM3_SUCCESS; } @@ -1163,7 +1163,7 @@ static bool HF14B_st_reader(bool verbose) { } switch (resp.status) { - case PM3_SUCCESS:{ + case PM3_SUCCESS: { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); @@ -1297,7 +1297,7 @@ static bool HF14B_other_reader(bool verbose) { SendCommandNG(CMD_HF_ISO14443B_COMMAND, (uint8_t *)packet, sizeof(iso14b_raw_cmd_t) + packet->rawlen); // wait for the select message and wait for response - if (wait_14b_response(false, NULL, NULL) ) { + if (wait_14b_response(false, NULL, NULL)) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command"); switch_off_field_14b(); @@ -1508,7 +1508,7 @@ static int CmdHF14BWriteSri(const char *Cmd) { status = read_sr_block(blockno, out); if (status == PM3_SUCCESS) { if (memcmp(data, out, 4) == 0) { - PrintAndLogEx(SUCCESS, "SRx write block ( " _GREEN_("ok") " )" ); + PrintAndLogEx(SUCCESS, "SRx write block ( " _GREEN_("ok") " )"); } } else { PrintAndLogEx(INFO, "Verifying block ( " _RED_("failed") " )"); @@ -1927,7 +1927,7 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, return PM3_ETIMEOUT; } - if ( resp.status != PM3_SUCCESS) { + if (resp.status != PM3_SUCCESS) { PrintAndLogEx(ERR, "APDU: no APDU response"); return resp.status; } @@ -1959,7 +1959,7 @@ static int handle_14b_apdu(bool chainingin, uint8_t *datain, int datainlen, PrintAndLogEx(ERR, "APDU: small APDU response, len " _RED_("%d"), apdu->datalen); return PM3_ESOFT; } - + // copy to output array memcpy(dataout, apdu->data, dlen); diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index d6d2fccf1..1768f5ca3 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -482,7 +482,7 @@ static int getUID(bool verbose, bool loop, uint8_t *buf) { int res = PM3_ESOFT; do { clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000)) { @@ -716,7 +716,7 @@ static int NxpTestEAS(uint8_t *uid) { return PM3_EMALLOC; } - // params + // params packet->raw[packet->rawlen++] = (ISO15_REQ_SUBCARRIER_SINGLE | ISO15_REQ_DATARATE_HIGH | ISO15_REQ_NONINVENTORY | ISO15_REQ_ADDRESS); packet->raw[packet->rawlen++] = ISO15693_EAS_ALARM; packet->raw[packet->rawlen++] = 0x04; // IC manufacturer code @@ -730,7 +730,7 @@ static int NxpTestEAS(uint8_t *uid) { packet->flags = (ISO15_CONNECT | ISO15_HIGH_SPEED | ISO15_READ_RESPONSE); clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -756,7 +756,7 @@ static int NxpCheckSig(uint8_t *uid) { if (uid == NULL) { return PM3_EINVARG; } - + uint8_t approxlen = 13; iso15_raw_cmd_t *packet = (iso15_raw_cmd_t *)calloc(1, sizeof(iso15_raw_cmd_t) + approxlen); if (packet == NULL) { @@ -764,7 +764,7 @@ static int NxpCheckSig(uint8_t *uid) { return PM3_EMALLOC; } - // params + // params // Check if we can also read the signature packet->raw[packet->rawlen++] = (ISO15_REQ_SUBCARRIER_SINGLE | ISO15_REQ_DATARATE_HIGH | ISO15_REQ_NONINVENTORY | ISO15_REQ_ADDRESS); packet->raw[packet->rawlen++] = ISO15693_READ_SIGNATURE; @@ -777,9 +777,9 @@ static int NxpCheckSig(uint8_t *uid) { packet->rawlen += 2; packet->flags = (ISO15_CONNECT | ISO15_HIGH_SPEED | ISO15_READ_RESPONSE); - + clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; @@ -822,7 +822,7 @@ static int NxpSysInfo(uint8_t *uid) { return PM3_EMALLOC; } - // params + // params packet->raw[packet->rawlen++] = (ISO15_REQ_SUBCARRIER_SINGLE | ISO15_REQ_DATARATE_HIGH | ISO15_REQ_NONINVENTORY | ISO15_REQ_ADDRESS); packet->raw[packet->rawlen++] = ISO15693_GET_NXP_SYSTEM_INFO; packet->raw[packet->rawlen++] = 0x04; // IC manufacturer code @@ -836,7 +836,7 @@ static int NxpSysInfo(uint8_t *uid) { packet->flags = (ISO15_CONNECT | ISO15_HIGH_SPEED | ISO15_READ_RESPONSE); clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -961,7 +961,7 @@ static int CmdHF15Info(const char *Cmd) { return PM3_EMALLOC; } - // ISO15693 protocol params + // ISO15693 protocol params packet->raw[packet->rawlen++] = arg_get_raw_flag(uidlen, unaddressed, scan, add_option); packet->raw[packet->rawlen++] = ISO15693_GET_SYSTEM_INFO; @@ -989,7 +989,7 @@ static int CmdHF15Info(const char *Cmd) { } clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -1617,7 +1617,7 @@ static int CmdHF15WriteDsfid(const char *Cmd) { return PM3_EMALLOC; } - // params + // params packet->raw[packet->rawlen++] = arg_get_raw_flag(uidlen, unaddressed, scan, add_option); packet->raw[packet->rawlen++] = ISO15693_WRITE_DSFID; @@ -1651,7 +1651,7 @@ static int CmdHF15WriteDsfid(const char *Cmd) { } clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -1684,9 +1684,9 @@ static int CmdHF15Dump(const char *Cmd) { void *argtable[6 + 5] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_str0("f", "file", "", "Specify a filename for dump file"), - argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), - argtable[arglen++] = arg_lit0(NULL, "ns", "no save to file"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), + argtable[arglen++] = arg_lit0(NULL, "ns", "no save to file"), + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1801,7 +1801,7 @@ static int CmdHF15Dump(const char *Cmd) { } clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000)) { @@ -1846,7 +1846,7 @@ static int CmdHF15Dump(const char *Cmd) { // copy read data memcpy(mem[blocknum].block, d + 1 + offset, blklen); memcpy(data + (blocknum * 4), d + 1 + offset, 4); - + retry = 0; blocknum++; @@ -1930,7 +1930,7 @@ static int CmdHF15Raw(const char *Cmd) { arg_lit0("r", NULL, "do not read response"), arg_str1("d", "data", "", "raw bytes to send"), arg_lit0("w", "wait", "wait longer for response. For writes etc."), - arg_lit0("a", NULL, "activate field"), + arg_lit0("a", NULL, "activate field"), arg_param_end }; @@ -1994,9 +1994,9 @@ static int CmdHF15Raw(const char *Cmd) { memcpy(packet->raw, data, datalen); clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(datalen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(datalen)); free(packet); - + if (read_respone) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000)) { @@ -2038,7 +2038,7 @@ static int CmdHF15Readmulti(const char *Cmd) { argtable[arglen++] = arg_int1("b", NULL, "", "first page number (0-255)"); argtable[arglen++] = arg_int1(NULL, "cnt", "", "number of pages (1-6)"); argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -2133,7 +2133,7 @@ static int CmdHF15Readmulti(const char *Cmd) { } clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -2194,7 +2194,7 @@ static int CmdHF15Readblock(const char *Cmd) { uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_int1("b", "blk", "", "page number (0-255)"); argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -2281,7 +2281,7 @@ static int CmdHF15Readblock(const char *Cmd) { } clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -2313,20 +2313,20 @@ static int CmdHF15Readblock(const char *Cmd) { PrintAndLogEx(INFO, "#%3d |lck| ascii", blockno); PrintAndLogEx(INFO, "------------+---+------"); PrintAndLogEx(INFO, "%s| %s | %s" - , sprint_hex(d + offset, 8) - , lck - , sprint_ascii(d + offset, 8) - ); + , sprint_hex(d + offset, 8) + , lck + , sprint_ascii(d + offset, 8) + ); PrintAndLogEx(INFO, "------------+---+------"); } else { PrintAndLogEx(INFO, "#%3d |lck| ascii", blockno); PrintAndLogEx(INFO, "------------+---+------"); PrintAndLogEx(INFO, "%s| %s | %s" - , sprint_hex(d + offset, 4) - , lck - , sprint_ascii(d + offset, 4) - ); + , sprint_hex(d + offset, 4) + , lck + , sprint_ascii(d + offset, 4) + ); PrintAndLogEx(INFO, "------------+---+------"); } @@ -2345,10 +2345,10 @@ static int hf_15_write_blk(uint8_t *pm3flags, uint16_t flags, uint8_t *uid, bool return PM3_EMALLOC; } - // ISO15693 protocol params + // ISO15693 protocol params packet->raw[packet->rawlen++] = flags; packet->raw[packet->rawlen++] = ISO15693_WRITEBLOCK; - + // add UID if (uid) { memcpy(packet->raw + packet->rawlen, uid, HF15_UID_LENGTH); @@ -2364,7 +2364,7 @@ static int hf_15_write_blk(uint8_t *pm3flags, uint16_t flags, uint8_t *uid, bool packet->rawlen += 2; // PM3 params - if (pm3flags ) { + if (pm3flags) { packet->flags = *pm3flags; } else { packet->flags = (ISO15_CONNECT | ISO15_READ_RESPONSE | ISO15_LONG_WAIT); @@ -2374,7 +2374,7 @@ static int hf_15_write_blk(uint8_t *pm3flags, uint16_t flags, uint8_t *uid, bool } clearCommandBuffer(); - SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t*)packet, ISO15_RAW_LEN(packet->rawlen)); + SendCommandNG(CMD_HF_ISO15693_COMMAND, (uint8_t *)packet, ISO15_RAW_LEN(packet->rawlen)); free(packet); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { @@ -2487,9 +2487,9 @@ static int CmdHF15Restore(const char *Cmd) { void *argtable[6 + 5] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_str0("f", "file", "", "Specify a filename for dump file"), - argtable[arglen++] = arg_int0("r", "retry", "", "number of retries (def 3)"), - argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_int0("r", "retry", "", "number of retries (def 3)"), + argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -2584,7 +2584,7 @@ static int CmdHF15Restore(const char *Cmd) { size_t bytes = 0; uint16_t i = 0; while (bytes < bytes_read) { - + uint8_t data[blocksize]; // copy over the data to the request @@ -2635,7 +2635,7 @@ static int CmdHF15Restore(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(HINT, "try `" _YELLOW_("hf 15 dump --ns") "` to read your card to verify"); - PrintAndLogEx(INFO, "Done!"); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } @@ -3224,7 +3224,7 @@ static int CmdHF15Wipe(const char *Cmd) { void *argtable[6 + 3] = {0}; uint8_t arglen = arg_add_default(argtable); argtable[arglen++] = arg_int0(NULL, "bs", "", "block size (def 4)"), - argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); + argtable[arglen++] = arg_lit0("v", "verbose", "verbose output"); argtable[arglen++] = arg_param_end; CLIExecWithReturn(ctx, Cmd, argtable, true); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 60a7130fe..7d4e24f1e 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -829,9 +829,9 @@ static int ulev1_print_configuration(uint64_t tagtype, uint8_t *data, uint8_t st break; } PrintAndLogEx(INFO, " mirror start page %02X | byte pos %02X - %s" - , mirror_page, mirror_byte - , (mirror_page >= 0x4 && ((mirror_user_mem_start_byte + bytes_required_for_mirror_data) <= 144)) ? _GREEN_("ok") : _YELLOW_("Invalid value") - ); + , mirror_page, mirror_byte + , (mirror_page >= 0x4 && ((mirror_user_mem_start_byte + bytes_required_for_mirror_data) <= 144)) ? _GREEN_("ok") : _YELLOW_("Invalid value") + ); } } else if (tagtype & (MFU_TT_NTAG_213_F | MFU_TT_NTAG_216_F)) { diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index cc220b55d..c4ede2b3c 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -81,11 +81,11 @@ static model_t models[] = { static int CmdHelp(const char *Cmd); -static uint8_t * map8to1(gdImagePtr img, int color) { +static uint8_t *map8to1(gdImagePtr img, int color) { // Calculate width rounding up uint16_t width8 = (gdImageSX(img) + 7) / 8; - uint8_t * colormap8 = calloc(width8 * gdImageSY(img), sizeof(uint8_t)); + uint8_t *colormap8 = calloc(width8 * gdImageSY(img), sizeof(uint8_t)); if (!colormap8) { return NULL; } @@ -668,14 +668,14 @@ static int CmdHF14AWSLoad(const char *Cmd) { } } - uint8_t * black_plane = map8to1(pal_img, 1); + uint8_t *black_plane = map8to1(pal_img, 1); if (!black_plane) { PrintAndLogEx(WARNING, "Could not convert image to bit plane"); gdImageDestroy(pal_img); return PM3_EMALLOC; } - uint8_t * red_plane = NULL; + uint8_t *red_plane = NULL; if (model_has_red) { red_plane = map8to1(pal_img, 2); if (!red_plane) { diff --git a/client/src/cmdhfxerox.c b/client/src/cmdhfxerox.c index af9e5b268..5a918d61b 100644 --- a/client/src/cmdhfxerox.c +++ b/client/src/cmdhfxerox.c @@ -441,23 +441,23 @@ static void xerox_generate_partno(const uint8_t *data, char *pn) { } static void xerox_print_hdr(void) { - PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "block# | data | ascii"); PrintAndLogEx(INFO, "---------+--------------+----------"); } static void xerox_print(uint8_t *data, uint16_t datalen) { - uint16_t blockno = datalen / XEROX_BLOCK_SIZE; + uint16_t blockno = datalen / XEROX_BLOCK_SIZE; for (int i = 0; i < blockno; i++) { PrintAndLogEx(INFO, - "%3d/0x%02X | %s | %s", - i, - i, - sprint_hex(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE), - sprint_ascii(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE) - ); + "%3d/0x%02X | %s | %s", + i, + i, + sprint_hex(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE), + sprint_ascii(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE) + ); } } @@ -477,43 +477,43 @@ typedef struct { // https://gist.github.com/JeroenSteen/4b45886b8d87fa0530af9b0364e6b277 static const xerox_part_t xerox_part_mappings[] = { - {"cyan", "006R01532" , "DMO", "sold"}, - {"cyan", "006R01660", "DMO", "sold"}, - {"cyan", "006R01739", "DMO", "sold"}, - {"cyan", "006R01524", "WW", "metered"}, - {"cyan", "006R01528", "NA/ESG", "sold"}, - {"cyan", "006R01656", "NA/ESG", "sold"}, - {"cyan", "006R01735", "NA/ESG", "sold"}, + {"cyan", "006R01532", "DMO", "sold"}, + {"cyan", "006R01660", "DMO", "sold"}, + {"cyan", "006R01739", "DMO", "sold"}, + {"cyan", "006R01524", "WW", "metered"}, + {"cyan", "006R01528", "NA/ESG", "sold"}, + {"cyan", "006R01656", "NA/ESG", "sold"}, + {"cyan", "006R01735", "NA/ESG", "sold"}, - {"magenta", "006R01531", "DMO", "sold"}, - {"magenta", "006R01661", "DMO", "sold"}, - {"magenta", "006R01740", "DMO", "sold"}, - {"magenta", "006R01523", "WW", "metered"}, - {"magenta", "006R01527", "NA/ESG", "sold"}, - {"magenta", "006R01657", "NA/ESG", "sold"}, - {"magenta", "006R01736", "NA/ESG", "sold"}, + {"magenta", "006R01531", "DMO", "sold"}, + {"magenta", "006R01661", "DMO", "sold"}, + {"magenta", "006R01740", "DMO", "sold"}, + {"magenta", "006R01523", "WW", "metered"}, + {"magenta", "006R01527", "NA/ESG", "sold"}, + {"magenta", "006R01657", "NA/ESG", "sold"}, + {"magenta", "006R01736", "NA/ESG", "sold"}, - {"yellow", "006R01530", "DMO", "sold"}, - {"yellow", "006R01662", "DMO", "sold"}, - {"yellow", "006R01741", "DMO", "sold"}, - {"yellow", "006R01522", "WW", "metered"}, - {"yellow", "006R01526", "NA/ESG", "sold"}, - {"yellow", "006R01658", "NA/ESG", "sold"}, - {"yellow", "006R01737", "NA/ESG", "sold"}, + {"yellow", "006R01530", "DMO", "sold"}, + {"yellow", "006R01662", "DMO", "sold"}, + {"yellow", "006R01741", "DMO", "sold"}, + {"yellow", "006R01522", "WW", "metered"}, + {"yellow", "006R01526", "NA/ESG", "sold"}, + {"yellow", "006R01658", "NA/ESG", "sold"}, + {"yellow", "006R01737", "NA/ESG", "sold"}, - {"black", "006R01529", "DMO", "sold"}, - {"black", "006R01659", "DMO", "sold"}, - {"black", "006R01738", "DMO", "sold"}, - {"black", "006R01521", "WW", "metered"}, - {"black", "006R01525", "NA/ESG", "sold"}, - {"black", "006R01655", "NA/ESG", "sold"}, - {"black", "006R01734", "NA/ESG", "sold"}, - {"", "", "", ""} // must be the last entry + {"black", "006R01529", "DMO", "sold"}, + {"black", "006R01659", "DMO", "sold"}, + {"black", "006R01738", "DMO", "sold"}, + {"black", "006R01521", "WW", "metered"}, + {"black", "006R01525", "NA/ESG", "sold"}, + {"black", "006R01655", "NA/ESG", "sold"}, + {"black", "006R01734", "NA/ESG", "sold"}, + {"", "", "", ""} // must be the last entry }; // get a product description based on the UID // returns description of the best match -static const xerox_part_t *get_xerox_part_info(const char* pn) { +static const xerox_part_t *get_xerox_part_info(const char *pn) { for (int i = 0; i < ARRAYLEN(xerox_part_mappings); ++i) { if (str_startswith(pn, xerox_part_mappings[i].partnumber) == 0) { return &xerox_part_mappings[i]; @@ -533,8 +533,8 @@ int read_xerox_uid(bool loop, bool verbose) { if (status != PM3_SUCCESS) { continue; } - } - + } + if (status == PM3_SUCCESS) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " UID..... %s", sprint_hex(card.uid, card.uidlen)); @@ -686,14 +686,14 @@ static int CmdHFXeroxInfo(const char *Cmd) { if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Fuji/Xerox tag read failed"); break; - } + } } switch_off_field(); char pn[13]; xerox_generate_partno(data, pn); - PrintAndLogEx(INFO, "-------- " _CYAN_("tag memory") " ---------"); + PrintAndLogEx(INFO, "-------- " _CYAN_("tag memory") " ---------"); PrintAndLogEx(SUCCESS, " PartNo... %s", pn); PrintAndLogEx(SUCCESS, " Date..... %02d.%02d.%02d", data[8], data[9], data[10]); PrintAndLogEx(SUCCESS, " Serial... %d", (data[14] << 16) | (data[13] << 8) | data[12]); @@ -704,7 +704,7 @@ static int CmdHFXeroxInfo(const char *Cmd) { PrintAndLogEx(SUCCESS, "Color..... %s", item->color); PrintAndLogEx(SUCCESS, "Region.... %s", item->region); PrintAndLogEx(SUCCESS, "M/s....... %s", item->ms); - } + } PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -722,7 +722,7 @@ static int CmdHFXeroxDump(const char *Cmd) { arg_str0("f", "file", "", "filename to save dump to"), arg_lit0("d", "decrypt", "decrypt secret blocks"), arg_lit0(NULL, "ns", "no save to file"), - arg_lit0("v", "verbose", "verbose output"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -757,7 +757,7 @@ static int CmdHFXeroxDump(const char *Cmd) { uint8_t data[256 * XEROX_BLOCK_SIZE] = {0}; // set up the read command - packet->flags = ( ISO14B_CONNECT | ISO14B_APPEND_CRC | ISO14B_RAW ); + packet->flags = (ISO14B_CONNECT | ISO14B_APPEND_CRC | ISO14B_RAW); packet->raw[packet->rawlen++] = 0x02; // add one for command byte @@ -783,7 +783,7 @@ static int CmdHFXeroxDump(const char *Cmd) { resp.cmd, resp.length, resp.magic, resp.status, resp.crc, resp.oldarg[0], resp.oldarg[1], resp.oldarg[2], resp.data.asBytes[0], resp.data.asBytes[1], resp.data.asBytes[2], resp.ng ? 't' : 'f'); */ - + if (resp.length < 7) { PrintAndLogEx(FAILED, "retrying one more time"); continue; @@ -902,10 +902,10 @@ static int CmdHFXeroxDump(const char *Cmd) { PrintAndLogEx(INFO, "Using UID as filename"); fptr += snprintf(fptr, sizeof(filename), "hf-xerox-"); FillFileNameByUID(fptr - , SwapEndian64(card.uid, card.uidlen, 8) - , (decrypt) ? "-dump-dec" : "-dump" - , card.uidlen - ); + , SwapEndian64(card.uid, card.uidlen, 8) + , (decrypt) ? "-dump-dec" : "-dump" + , card.uidlen + ); } pm3_save_dump(filename, data, blockno * XEROX_BLOCK_SIZE, jsf14b_v2); @@ -956,7 +956,7 @@ static int CmdHFXeroxView(const char *Cmd) { char pn[13]; xerox_generate_partno(tmp, pn); - + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-------- " _CYAN_("tag memory") " ---------"); PrintAndLogEx(SUCCESS, " PartNo... %s", pn); @@ -969,9 +969,9 @@ static int CmdHFXeroxView(const char *Cmd) { PrintAndLogEx(SUCCESS, "Color..... %s", item->color); PrintAndLogEx(SUCCESS, "Region.... %s", item->region); PrintAndLogEx(SUCCESS, "M/s....... %s", item->ms); - } + } xerox_print_hdr(); - xerox_print(dump, bytes_read); + xerox_print(dump, bytes_read); xerox_print_footer(); free(dump); @@ -985,7 +985,7 @@ static int CmdHFXeroxList(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdHFXeroxList, AlwaysAvailable, "List ISO-14443B history"}, - {"--------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("general") " -----------------------"}, + {"--------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("general") " -----------------------"}, {"info", CmdHFXeroxInfo, IfPm3Iso14443b, "Short info on Fuji/Xerox tag"}, {"dump", CmdHFXeroxDump, IfPm3Iso14443b, "Read all memory pages of an Fuji/Xerox tag, save to file"}, {"reader", CmdHFXeroxReader, IfPm3Iso14443b, "Act like a Fuji/Xerox reader"}, diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index af7255575..107d97362 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2890,7 +2890,7 @@ static int CmdEMVReader(const char *Cmd) { } while (continuous); DropFieldEx(channel); - + SetAPDULogging(old_logging); return PM3_SUCCESS; } diff --git a/client/src/imgutils.c b/client/src/imgutils.c index 4b396c0ac..09f70faf5 100644 --- a/client/src/imgutils.c +++ b/client/src/imgutils.c @@ -8,7 +8,7 @@ struct ycbcr_t { int cr; }; -static void rgb_to_ycbcr(int rgb, struct ycbcr_t * ycbcr) { +static void rgb_to_ycbcr(int rgb, struct ycbcr_t *ycbcr) { int r = gdTrueColorGetRed(rgb); int g = gdTrueColorGetGreen(rgb); int b = gdTrueColorGetBlue(rgb); @@ -25,7 +25,7 @@ static void rgb_to_ycbcr(int rgb, struct ycbcr_t * ycbcr) { ycbcr->cr = (r * 32768 + g * -27439 + b * -5329) / 65536 + 128; } -static inline void cap_comp(int * x) { +static inline void cap_comp(int *x) { if (*x < 0) { *x = 0; } else if (*x > 255) { @@ -33,7 +33,7 @@ static inline void cap_comp(int * x) { } } -gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { +gdImagePtr img_palettize(gdImagePtr rgb, int *palette, int palette_size) { assert(rgb != NULL); assert(palette != NULL); assert(palette_size >= 2 && palette_size < 256); @@ -45,7 +45,7 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { } // Allocate space for palette in YCbCr - struct ycbcr_t * pal_ycbcr = calloc(palette_size, sizeof(struct ycbcr_t)); + struct ycbcr_t *pal_ycbcr = calloc(palette_size, sizeof(struct ycbcr_t)); if (!pal_ycbcr) { gdImageDestroy(res); return NULL; @@ -60,7 +60,7 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { * To reduce shifts and increase accuracy, each entry is stored with 16x times the error, * and gets divided by that amount when it is read. */ - struct ycbcr_t * forward = calloc(gdImageSX(rgb) + 2, sizeof(struct ycbcr_t)); + struct ycbcr_t *forward = calloc(gdImageSX(rgb) + 2, sizeof(struct ycbcr_t)); if (!forward) { free(pal_ycbcr); gdImageDestroy(res); @@ -108,10 +108,10 @@ gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size) { }; int can_score = ( - can_err.y * can_err.y + - can_err.cb * can_err.cb + - can_err.cr * can_err.cr - ); + can_err.y * can_err.y + + can_err.cb * can_err.cb + + can_err.cr * can_err.cr + ); if (can_score < best_score) { best_idx = can_idx; diff --git a/client/src/imgutils.h b/client/src/imgutils.h index ff619a5e1..d38f02d04 100644 --- a/client/src/imgutils.h +++ b/client/src/imgutils.h @@ -28,7 +28,7 @@ * * A comparison can be found at https://twitter.com/Socram4x8/status/1733157380097995205/photo/1. */ -gdImagePtr img_palettize(gdImagePtr rgb, int * palette, int palette_size); +gdImagePtr img_palettize(gdImagePtr rgb, int *palette, int palette_size); /* * This function scales and crops the image to the given size. diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 17c9c03e7..6f8f07a7f 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -182,6 +182,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf 15 restore" }, { 0, "hf 15 samples" }, { 1, "hf 15 view" }, + { 0, "hf 15 wipe" }, { 0, "hf 15 wrbl" }, { 0, "hf 15 sim" }, { 0, "hf 15 eload" }, @@ -223,11 +224,11 @@ const static vocabulary_t vocabulary[] = { { 1, "hf emrtd list" }, { 1, "hf felica help" }, { 1, "hf felica list" }, - { 0, "hf felica reader" }, { 0, "hf felica info" }, - { 0, "hf felica sniff" }, { 0, "hf felica raw" }, { 0, "hf felica rdbl" }, + { 0, "hf felica reader" }, + { 0, "hf felica sniff" }, { 0, "hf felica wrbl" }, { 0, "hf felica rqservice" }, { 0, "hf felica rqresponse" }, @@ -502,11 +503,13 @@ const static vocabulary_t vocabulary[] = { { 0, "hf vas reader" }, { 1, "hf vas decrypt" }, { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, + { 1, "hf waveshare load" }, { 1, "hf xerox help" }, + { 1, "hf xerox list" }, { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, { 0, "hf xerox dump" }, + { 0, "hf xerox reader" }, + { 1, "hf xerox view" }, { 1, "hw help" }, { 0, "hw break" }, { 0, "hw bootloader" }, diff --git a/client/src/preferences.c b/client/src/preferences.c index 09521cab4..af0100148 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -391,7 +391,7 @@ static const char *pref_show_status_msg(prefShowOpt_t opt) { } } -static const char *pref_show_value(prefShowOpt_t opt, const char* msg) { +static const char *pref_show_value(prefShowOpt_t opt, const char *msg) { static char s[128] = {0}; switch (opt) { @@ -403,7 +403,7 @@ static const char *pref_show_value(prefShowOpt_t opt, const char* msg) { sprintf(s, _GREEN_("%s"), msg); return s; case prefShowNone: - if ((strncmp(msg, "off", 3) == 0) || (strncmp(msg, "normal", 6) ==0)) { + if ((strncmp(msg, "off", 3) == 0) || (strncmp(msg, "normal", 6) == 0)) { sprintf(s, _WHITE_("%s"), msg); } else { sprintf(s, _GREEN_("%s"), msg); @@ -446,9 +446,9 @@ static void showEmojiState(prefShowOpt_t opt) { static void showColorState(prefShowOpt_t opt) { PrintAndLogEx(INFO, " %s color................... %s " - , pref_show_status_msg(opt) - , (g_session.supports_colors) ? pref_show_value(opt, "ansi") : pref_show_value(opt, "off") - ); + , pref_show_status_msg(opt) + , (g_session.supports_colors) ? pref_show_value(opt, "ansi") : pref_show_value(opt, "off") + ); } static void showClientDebugState(prefShowOpt_t opt) { @@ -461,7 +461,7 @@ static void showClientDebugState(prefShowOpt_t opt) { PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(opt, "simple")); break; case cdbFULL: - PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(opt,"full")); + PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(opt, "full")); break; default: PrintAndLogEx(INFO, " %s client debug............ %s", pref_show_status_msg(opt), pref_show_value(prefShowUnknown, "unknown")); @@ -545,40 +545,40 @@ static void showOverlayPosState(void) { static void showHintsState(prefShowOpt_t opt) { PrintAndLogEx(INFO, " %s hints................... %s" - , pref_show_status_msg(opt) - , (g_session.show_hints) ? pref_show_value(opt,"on") : pref_show_value(opt,"off") - ); + , pref_show_status_msg(opt) + , (g_session.show_hints) ? pref_show_value(opt, "on") : pref_show_value(opt, "off") + ); } static void showPlotSliderState(prefShowOpt_t opt) { PrintAndLogEx(INFO, " %s show plot sliders....... %s" - , pref_show_status_msg(opt) - , (g_session.overlay_sliders) ? pref_show_value(opt,"on") : pref_show_value(opt,"off") - ); + , pref_show_status_msg(opt) + , (g_session.overlay_sliders) ? pref_show_value(opt, "on") : pref_show_value(opt, "off") + ); } static void showBarModeState(prefShowOpt_t opt) { switch (g_session.bar_mode) { case STYLE_BAR: - PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt,"bar")); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt, "bar")); break; case STYLE_MIXED: - PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt,"mixed")); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt, "mixed")); break; case STYLE_VALUE: - PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt,"value")); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(opt, "value")); break; default: - PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(prefShowUnknown,"unknown")); + PrintAndLogEx(INFO, " %s barmode................. %s", pref_show_status_msg(opt), pref_show_value(prefShowUnknown, "unknown")); } } static void showOutputState(prefShowOpt_t opt) { PrintAndLogEx(INFO, " %s output.................. %s" - , pref_show_status_msg(opt) - , (g_session.dense_output) ? pref_show_value(opt,"dense") : pref_show_value(opt,"normal") - ); + , pref_show_status_msg(opt) + , (g_session.dense_output) ? pref_show_value(opt, "dense") : pref_show_value(opt, "normal") + ); } static void showClientExeDelayState(void) { diff --git a/client/src/scripting.c b/client/src/scripting.c index 7f277378c..d35c6cf99 100644 --- a/client/src/scripting.c +++ b/client/src/scripting.c @@ -1265,7 +1265,7 @@ static int l_set_iso_dep_state(lua_State *L) { size_t state = luaL_checknumber(L, 1); switch (state) { - case 0: + case 0: SetISODEPState(ISODEP_INACTIVE); break; case 1: diff --git a/doc/commands.json b/doc/commands.json index a4c474801..f16af3fa5 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -95,9 +95,9 @@ ], "usage": "analyse freq [-h] [-F ] [-L ] [-C ]" }, - "analyse lcr": { - "command": "analyse lcr", - "description": "Specifying the bytes of a UID with a known LRC will find the last byte value needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.", + "analyse help": { + "command": "analyse help", + "description": "help This help lcr Generate final byte for XOR LRC crc Stub method for CRC evaluations chksum Checksum with adding, masking and one's complement dates Look for datestamps in a given array of bytes lfsr LFSR tests a num bits test nuid create NUID from 7byte UID demodbuff Load binary string to DemodBuffer freq Calc wave lengths foo muxer units convert ETU <> US <> SSP_CLK (3.39MHz) --------------------------------------------------------------------------------------- analyse lcr available offline: yes Specifying the bytes of a UID with a known LRC will find the last byte value needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.", "notes": [ "analyse lcr -d 04008064BA -> Target (BA) requires final LRC XOR byte value: 5A" ], @@ -152,19 +152,6 @@ ], "usage": "analyse units [-ht] [--etu ] [--us ]" }, - "auto": { - "command": "auto", - "description": "Run LF SEARCH / HF SEARCH / DATA PLOT / DATA SAVE", - "notes": [ - "auto" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-c Continue searching even after a first hit" - ], - "usage": "auto [-hc]" - }, "clear": { "command": "clear", "description": "Clear the Proxmark3 client terminal screen", @@ -247,22 +234,6 @@ ], "usage": "data bin2hex [-h] -d " }, - "data biphaserawdecode": { - "command": "data biphaserawdecode", - "description": "Biphase decode binary stream in DemodBuffer Converts 10 or 01 -> 1 and 11 or 00 -> 0 - must have binary sequence in DemodBuffer (run `data rawdemod --ar` before) - invert for Conditional Dephase Encoding (CDP) AKA Differential Manchester", - "notes": [ - "data biphaserawdecode -> decode biphase bitstream from the DemodBuffer", - "data biphaserawdecode -oi -> decode biphase bitstream from the DemodBuffer, adjust offset, and invert output" - ], - "offline": true, - "options": [ - "-h, --help This help", - "-o, --offset set to adjust decode start position", - "-i, --inv invert output", - "--err set max errors tolerated (def 20)" - ], - "usage": "data biphaserawdecode [-hoi] [--err ]" - }, "data bitsamples": { "command": "data bitsamples", "description": "Get raw samples from device as bitstring", @@ -450,6 +421,22 @@ ], "usage": "data grid [-h] [-x ] [-y ]" }, + "data help": { + "command": "data help", + "description": "help This help ----------- ------------------------- Modulation------------------------- biphaserawdecode Biphase decode bin stream in DemodBuffer detectclock Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer fsktonrz Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) manrawdecode Manchester decode binary stream in DemodBuffer modulation Identify LF signal for clock and modulation rawdemod Demodulate the data in the GraphBuffer and output binary ----------- ------------------------- Graph------------------------- askedgedetect Adjust Graph for manual ASK demod autocorr Autocorrelation over window dirthreshold Max rising higher up-thres/ Min falling lower down-thres decimate Decimate samples envelope Generate square envelope of samples undecimate Un-decimate samples hide Hide graph window hpf Remove DC offset from trace iir Apply IIR buttersworth filter on plot data grid overlay grid on graph window ltrim Trim samples from left of trace mtrim Trim out samples from the specified start to the specified stop norm Normalize max/min to +/-128 plot Show graph window cthreshold Average out all values between rtrim Trim samples from right of trace setgraphmarkers Set blue and orange marker in graph window shiftgraphzero Shift 0 for Graphed wave + or - shift value timescale Set cursor display timescale zerocrossings Count time between zero-crossings convertbitstream Convert GraphBuffer's 0/1 values to 127 / -127 getbitstream Convert GraphBuffer's >=1 values to 1 and <1 to 0 ----------- ------------------------- General------------------------- asn1 ASN1 decoder atr ATR lookup bin2hex Converts binary to hexadecimal bmap Convert hex value according a binary template clear Clears bigbuf on deviceside and graph window diff Diff of input files hex2bin Converts hexadecimal to binary load Load contents of file into graph window num Converts dec/hex/bin print Print the data in the DemodBuffer save Save signal trace data (from graph window) setdebugmode Set Debugging Level on client side --------------------------------------------------------------------------------------- data biphaserawdecode available offline: yes Biphase decode binary stream in DemodBuffer Converts 10 or 01 -> 1 and 11 or 00 -> 0 - must have binary sequence in DemodBuffer (run `data rawdemod --ar` before) - invert for Conditional Dephase Encoding (CDP) AKA Differential Manchester", + "notes": [ + "data biphaserawdecode -> decode biphase bitstream from the DemodBuffer", + "data biphaserawdecode -oi -> decode biphase bitstream from the DemodBuffer, adjust offset, and invert output" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-o, --offset set to adjust decode start position", + "-i, --inv invert output", + "--err set max errors tolerated (def 20)" + ], + "usage": "data biphaserawdecode [-hoi] [--err ]" + }, "data hex2bin": { "command": "data hex2bin", "description": "This function converts hexadecimal to binary. It will ignore all non-hexadecimal characters but stop reading on whitespace", @@ -893,6 +880,27 @@ ], "usage": "emv gpo [-hkpmatw] []..." }, + "emv help": { + "command": "emv help", + "description": "----------- ----------------------- general ----------------------- help This help list List ISO7816 history test Crypto logic test --------------------------------------------------------------------------------------- emv list available offline: yes Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "emv list --frame -> show frame delay times", + "emv list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "emv list [-h1crux] [--frame] [-f ]" + }, "emv intauth": { "command": "emv intauth", "description": "Generate Internal Authenticate command. Usually needs 4-byte random number. It returns data in TLV format . Needs a EMV applet to be selected and GPO to be executed.", @@ -914,27 +922,6 @@ ], "usage": "emv intauth [-hkpmatw] []..." }, - "emv list": { - "command": "emv list", - "description": "Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", - "notes": [ - "emv list --frame -> show frame delay times", - "emv list -1 -> use trace buffer" - ], - "offline": true, - "options": [ - "-h, --help This help", - "-1, --buffer use data from trace buffer", - "--frame show frame delay times", - "-c mark CRC bytes", - "-r show relative times (gap and duration)", - "-u display times in microseconds instead of clock cycles", - "-x show hexdump to convert to pcap(ng)", - "or to import into Wireshark using encapsulation type \"ISO 14443\"", - "-f, --file filename of dictionary" - ], - "usage": "emv list [-h1crux] [--frame] [-f ]" - }, "emv pse": { "command": "emv pse", "description": "Executes PSE/PPSE select command. It returns list of applet on the card:", @@ -1095,6 +1082,19 @@ ], "usage": "quit [-h]" }, + "help": { + "command": "help", + "description": "help Use ` help` for details of a command prefs { Edit client/device preferences... } -------- ----------------------- Technology ----------------------- analyse { Analyse utils... } data { Plot window / data buffer manipulation... } emv { EMV ISO-14443 / ISO-7816... } hf { High frequency commands... } hw { Hardware commands... } lf { Low frequency commands... } nfc { NFC commands... } piv { PIV commands... } reveng { CRC calculations from RevEng software... } smart { Smart card ISO-7816 commands... } script { Scripting commands... } trace { Trace manipulation... } wiegand { Wiegand format manipulation... } -------- ----------------------- General ----------------------- clear Clear screen hints Turn hints on / off msleep Add a pause in milliseconds rem Add a text line in log file quit exit Exit program --------------------------------------------------------------------------------------- auto available offline: no Run LF SEARCH / HF SEARCH / DATA PLOT / DATA SAVE", + "notes": [ + "auto" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-c Continue searching even after a first hit" + ], + "usage": "auto [-hc]" + }, "hf 14a antifuzz": { "command": "hf 14a antifuzz", "description": "Tries to fuzz the ISO14443a anticollision phase", @@ -1184,24 +1184,9 @@ ], "usage": "hf 14a cuids [-h] [-n ]" }, - "hf 14a info": { - "command": "hf 14a info", - "description": "This command makes more extensive tests against a ISO14443a tag in order to collect information", - "notes": [ - "hf 14a info -nsv -> shows full information about the card" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-v, --verbose adds some information to results", - "-n, --nacktest test for nack bug", - "-s, --aidsearch checks if AIDs from aidlist.json is present on the card and prints information about found AIDs" - ], - "usage": "hf 14a info [-hvns]" - }, - "hf 14a list": { - "command": "hf 14a list", - "description": "Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "hf 14a help": { + "command": "hf 14a help", + "description": "----------- ----------------------- General ----------------------- help This help list List ISO 14443-a history --------------------------------------------------------------------------------------- hf 14a list available offline: yes Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 14a list --frame -> show frame delay times", "hf 14a list -1 -> use trace buffer" @@ -1220,6 +1205,21 @@ ], "usage": "hf 14a list [-h1crux] [--frame] [-f ]" }, + "hf 14a info": { + "command": "hf 14a info", + "description": "This command makes more extensive tests against a ISO14443a tag in order to collect information", + "notes": [ + "hf 14a info -nsv -> shows full information about the card" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-v, --verbose adds some information to results", + "-n, --nacktest test for nack bug", + "-s, --aidsearch checks if AIDs from aidlist.json is present on the card and prints information about found AIDs" + ], + "usage": "hf 14a info [-hvns]" + }, "hf 14a ndefformat": { "command": "hf 14a ndefformat", "description": "Format ISO14443-a Tag as a NFC tag with Data Exchange Format (NDEF)", @@ -1358,31 +1358,6 @@ ], "usage": "hf 14a sniff [-hcr]" }, - "hf 14b apdu": { - "command": "hf 14b apdu", - "description": "Sends an ISO 7816-4 APDU via ISO 14443-4 block transmission protocol (T=CL). works with all apdu types from ISO 7816-4:2013", - "notes": [ - "hf 14b apdu -s -d 94a40800043f000002", - "hf 14b apdu -s --decode -d 00A404000E325041592E5359532E444446303100 -> decode apdu", - "hf 14b apdu -sm 00A40400 -l 256 -d 325041592E5359532E4444463031 -> encode standard apdu", - "hf 14b apdu -sm 00A40400 -el 65536 -d 325041592E5359532E4444463031 -> encode extended apdu" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-s, --select activate field and select card", - "-k, --keep leave the signal field ON after receive response", - "-t, --tlv executes TLV decoder if it possible", - "--decode decode apdu request if it possible", - "-m, --make make apdu with head from this field and data from data field.", - "must be 4 bytes: ", - "-e, --extended make extended length apdu if `m` parameter included", - "-l, --le Le apdu parameter if `m` parameter included", - "-d, --data if `m` parameter included", - "--timeout timeout in ms" - ], - "usage": "hf 14b apdu [-hskte] [--decode] [-m ] [-l ] -d [--timeout ]" - }, "hf 14b dump": { "command": "hf 14b dump", "description": "This command dumps the contents of a ISO-14443-B tag and save it to file Tries to autodetect cardtype, memory size defaults to SRI4K", @@ -1398,6 +1373,31 @@ ], "usage": "hf 14b dump [-h] [-f ] [--ns]" }, + "hf 14b help": { + "command": "hf 14b help", + "description": "help This help list List ISO-14443-B history view Display content from tag dump file --------------------------------------------------------------------------------------- hf 14b apdu available offline: no Sends an ISO 7816-4 APDU via ISO 14443-4 block transmission protocol (T=CL). works with all apdu types from ISO 7816-4:2013", + "notes": [ + "hf 14b apdu -s -d 94a40800043f000002", + "hf 14b apdu -s --decode -d 00A404000E325041592E5359532E444446303100 -> decode apdu", + "hf 14b apdu -sm 00A40400 -l 256 -d 325041592E5359532E4444463031 -> encode standard apdu", + "hf 14b apdu -sm 00A40400 -el 65536 -d 325041592E5359532E4444463031 -> encode extended apdu" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-s, --select activate field and select card", + "-k, --keep leave the signal field ON after receive response", + "-t, --tlv executes TLV decoder if it possible", + "--decode decode apdu request if it possible", + "-m, --make make apdu with head from this field and data from data field.", + "must be 4 bytes: ", + "-e, --extended make extended length apdu if `m` parameter included", + "-l, --le Le apdu parameter if `m` parameter included", + "-d, --data if `m` parameter included", + "--timeout timeout in ms" + ], + "usage": "hf 14b apdu [-hskte] [--decode] [-m ] [-l ] -d [--timeout ]" + }, "hf 14b info": { "command": "hf 14b info", "description": "Tag information for ISO/IEC 14443 type B based tags", @@ -1414,7 +1414,7 @@ }, "hf 14b list": { "command": "hf 14b list", - "description": "Alias of `trace list -t 14b` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t 14b -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 14b list --frame -> show frame delay times", "hf 14b list -1 -> use trace buffer" @@ -1527,7 +1527,7 @@ }, "hf 14b sriwrite": { "command": "hf 14b sriwrite", - "description": "Write data to a SRI512 or SRIX4K block", + "description": "Write data to a SRI512 or SRIX4K block If writing to a block out-of-range, use --force to override checks", "notes": [ "hf 14b sriwrite --4k -b 100 -d 11223344", "hf 14b sriwrite --4k --sb -d 11223344 -> special block write", @@ -1541,13 +1541,14 @@ "-d, --data 4 hex bytes", "--512 target SRI 512 tag", "--4k target SRIX 4k tag", - "--sb special block write at end of memory (0xFF)" + "--sb special block write at end of memory (0xFF)", + "--force overrides block range checks" ], - "usage": "hf 14b sriwrite [-h] [-b ] -d [--512] [--4k] [--sb]" + "usage": "hf 14b sriwrite [-h] [-b ] -d [--512] [--4k] [--sb] [--force]" }, "hf 14b view": { "command": "hf 14b view", - "description": "Print a ISO14443-B dump file (bin/eml/json)", + "description": "Print a ISO14443-B dump file (bin/eml/json) note: - command expects the filename to contain a UID which is needed to determine card memory type", "notes": [ "hf 14b view -f hf-14b-01020304-dump.bin" ], @@ -1568,9 +1569,9 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid <8b hex> UID eg E011223344556677" + "-u, --uid UID, 8 hex bytes" ], - "usage": "hf 15 csetuid [-h] -u <8b hex>" + "usage": "hf 15 csetuid [-h] -u " }, "hf 15 demod": { "command": "hf 15 demod", @@ -1595,25 +1596,28 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID (8 hex bytes)", "--ua unaddressed mode", "-* scan for tag", "-2 use slower '1 out of 256' mode", "-o, --opt set OPTION Flag (needed for TI)", - "-f, --file Specify a filename for dump file" + "-f, --file Specify a filename for dump file", + "--bs block size (def 4)", + "--ns no save to file", + "-v, --verbose verbose output" ], - "usage": "hf 15 dump [-h*2o] [-u ] [--ua] [-f ]" + "usage": "hf 15 dump [-h*2ov] [-u ] [--ua] [-f ] [--bs ] [--ns]" }, "hf 15 eload": { "command": "hf 15 eload", - "description": "Load memory image from file to be used with 'hf 15 sim'", + "description": "Load memory dump from file to be used with 'hf 15 sim'", "notes": [ "hf 15 eload -f hf-15-01020304.bin" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file filename of image" + "-f, --file filename of dump" ], "usage": "hf 15 eload [-h] -f " }, @@ -1627,8 +1631,8 @@ "options": [ "-h, --help This help", "-f, --file Specify a filename for dump file", - "--bsize block size, defaults to 4", - "-c, --count number of blocks to export, defaults to all" + "--bsize block size (def 4)", + "-c, --count number of blocks to export (def all)" ], "usage": "hf 15 esave [-h] -f [--bsize ] [-c ]" }, @@ -1642,8 +1646,8 @@ "offline": false, "options": [ "-h, --help This help", - "-b, --blocksize block size, defaults to 4", - "-c, --count number of blocks to display, defaults to all" + "-b, --blocksize block size (def 4)", + "-c, --count number of blocks to display (def all)" ], "usage": "hf 15 eview [-h] [-b ] [-c ]" }, @@ -1654,33 +1658,15 @@ "hf 15 findafi" ], "offline": false, - "options": [ - "-h, --help This help" - ], - "usage": "hf 15 findafi [-h]" - }, - "hf 15 info": { - "command": "hf 15 info", - "description": "Uses the optional command `get_systeminfo` 0x2B to try and extract information", - "notes": [ - "hf 15 info", - "hf 15 info -*", - "hf 15 info -u E011223344556677" - ], - "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", - "--ua unaddressed mode", - "-* scan for tag", - "-2 use slower '1 out of 256' mode", - "-o, --opt set OPTION Flag (needed for TI)" + "-2 use slower '1 out of 256' mode" ], - "usage": "hf 15 info [-h*2o] [-u ] [--ua]" + "usage": "hf 15 findafi [-h2]" }, - "hf 15 list": { - "command": "hf 15 list", - "description": "Alias of `trace list -t 15` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "hf 15 help": { + "command": "hf 15 help", + "description": "help This help list List ISO-15693 history ----------- ----------------------- general ----------------------- demod Demodulate ISO-15693 from tag view Display content from tag dump file --------------------------------------------------------------------------------------- hf 15 list available offline: yes Alias of `trace list -t 15 -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 15 list --frame -> show frame delay times", "hf 15 list -1 -> use trace buffer" @@ -1699,6 +1685,25 @@ ], "usage": "hf 15 list [-h1crux] [--frame] [-f ]" }, + "hf 15 info": { + "command": "hf 15 info", + "description": "Uses the optional command `get_systeminfo` 0x2B to try and extract information", + "notes": [ + "hf 15 info", + "hf 15 info -*", + "hf 15 info -u E011223344556677" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-u, --uid full UID (8 hex bytes)", + "--ua unaddressed mode", + "-* scan for tag", + "-2 use slower '1 out of 256' mode", + "-o, --opt set OPTION Flag (needed for TI)" + ], + "usage": "hf 15 info [-h*2o] [-u ] [--ua]" + }, "hf 15 passprotectafi": { "command": "hf 15 passprotectafi", "description": "This command enables the password protect of AFI. *** OBS! This action can not be undone! ***", @@ -1708,7 +1713,7 @@ "offline": false, "options": [ "-h, --help This help", - "-p, --pwd EAS/AFI password, 8 hex bytes", + "-p, --pwd EAS/AFI password, 4 hex bytes", "--force Force execution of command (irreversible)" ], "usage": "hf 15 passprotectafi [-h] -p [--force]" @@ -1722,7 +1727,7 @@ "offline": false, "options": [ "-h, --help This help", - "-p, --pwd EAS/AFI password, 8 hex bytes", + "-p, --pwd EAS/AFI password, 4 hex bytes", "--force Force execution of command (irreversible)" ], "usage": "hf 15 passprotecteas [-h] -p [--force]" @@ -1731,8 +1736,8 @@ "command": "hf 15 raw", "description": "Sends raw bytes over ISO-15693 to card", "notes": [ - "hf 15 raw -c -d 260100 -> add crc", - "hf 15 raw -krc -d 260100 -> add crc, keep field on, skip response" + "hf 15 raw -sc -d 260100 -> add crc", + "hf 15 raw -skrc -d 260100 -> add crc, keep field on, skip response" ], "offline": false, "options": [ @@ -1741,9 +1746,11 @@ "-c, --crc calculate and append CRC", "-k keep signal field ON after receive", "-r do not read response", - "-d, --data raw bytes to send" + "-d, --data raw bytes to send", + "-w, --wait wait longer for response. For writes etc.", + "-a activate field" ], - "usage": "hf 15 raw [-h2ckr] -d " + "usage": "hf 15 raw [-h2ckrwa] -d " }, "hf 15 rdbl": { "command": "hf 15 rdbl", @@ -1755,14 +1762,16 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID (8 hex bytes)", "--ua unaddressed mode", "-* scan for tag", "-2 use slower '1 out of 256' mode", "-o, --opt set OPTION Flag (needed for TI)", - "-b, --blk page number (0-255)" + "-b, --blk page number (0-255)", + "--bs block size (def 4)", + "-v, --verbose verbose output" ], - "usage": "hf 15 rdbl [-h*2o] [-u ] [--ua] -b " + "usage": "hf 15 rdbl [-h*2ov] [-u ] [--ua] -b [--bs ]" }, "hf 15 rdmulti": { "command": "hf 15 rdmulti", @@ -1774,15 +1783,17 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID (8 hex bytes)", "--ua unaddressed mode", "-* scan for tag", "-2 use slower '1 out of 256' mode", "-o, --opt set OPTION Flag (needed for TI)", "-b first page number (0-255)", - "--cnt number of pages (1-6)" + "--cnt number of pages (1-6)", + "--bs block size (def 4)", + "-v, --verbose verbose output" ], - "usage": "hf 15 rdmulti [-h*2o] [-u ] [--ua] -b --cnt " + "usage": "hf 15 rdmulti [-h*2ov] [-u ] [--ua] -b --cnt [--bs ]" }, "hf 15 reader": { "command": "hf 15 reader", @@ -1809,7 +1820,7 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID (8 hex bytes)", "--ua unaddressed mode", "-* scan for tag", "-2 use slower '1 out of 256' mode", @@ -1842,10 +1853,10 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid <8b hex> UID eg E011223344556677", - "-b, --blocksize block size, defaults to 4" + "-u, --uid UID, 8 hex bytes", + "-b, --blocksize block size (def 4)" ], - "usage": "hf 15 sim [-h] -u <8b hex> [-b ]" + "usage": "hf 15 sim [-h] -u [-b ]" }, "hf 15 slixeasdisable": { "command": "hf 15 slixeasdisable", @@ -1856,7 +1867,7 @@ "offline": false, "options": [ "-h, --help This help", - "-p, --pwd optional password, 8 hex bytes" + "-p, --pwd optional password, 4 hex bytes" ], "usage": "hf 15 slixeasdisable [-h] [-p ]" }, @@ -1869,7 +1880,7 @@ "offline": false, "options": [ "-h, --help This help", - "-p, --pwd optional password, 8 hex bytes" + "-p, --pwd optional password, 4 hex bytes" ], "usage": "hf 15 slixeasenable [-h] [-p ]" }, @@ -1877,12 +1888,12 @@ "command": "hf 15 slixprivacydisable", "description": "Disable privacy mode on SLIX ISO-15693 tag", "notes": [ - "hf 15 slixdisable -p 0F0F0F0F" + "hf 15 slixprivacydisable -p 0F0F0F0F" ], "offline": false, "options": [ "-h, --help This help", - "-p, --pwd password, 8 hex bytes" + "-p, --pwd password, 4 hex bytes" ], "usage": "hf 15 slixprivacydisable [-h] -p " }, @@ -1890,12 +1901,12 @@ "command": "hf 15 slixprivacyenable", "description": "Enable privacy mode on SLIX ISO-15693 tag", "notes": [ - "hf 15 slixenable -p 0F0F0F0F" + "hf 15 slixprivacyenable -p 0F0F0F0F" ], "offline": false, "options": [ "-h, --help This help", - "-p, --pwd password, 8 hex bytes" + "-p, --pwd password, 4 hex bytes" ], "usage": "hf 15 slixprivacyenable [-h] -p " }, @@ -1909,8 +1920,8 @@ "options": [ "-h, --help This help", "-t, --type which password field to write to", - "-o, --old old password (if present), 8 hex bytes", - "-n, --new new password, 8 hex bytes" + "-o, --old old password (if present), 4 hex bytes", + "-n, --new new password, 4 hex bytes" ], "usage": "hf 15 slixwritepwd [-h] -t [-o ] -n " }, @@ -1939,6 +1950,25 @@ ], "usage": "hf 15 view [-h] -f " }, + "hf 15 wipe": { + "command": "hf 15 wipe", + "description": "Wipe a ISO-15693 tag by filled memory with zeros", + "notes": [ + "hf 15 wipe" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-u, --uid full UID (8 hex bytes)", + "--ua unaddressed mode", + "-* scan for tag", + "-2 use slower '1 out of 256' mode", + "-o, --opt set OPTION Flag (needed for TI)", + "--bs block size (def 4)", + "-v, --verbose verbose output" + ], + "usage": "hf 15 wipe [-h*2ov] [-u ] [--ua] [--bs ]" + }, "hf 15 wrbl": { "command": "hf 15 wrbl", "description": "Write block on ISO-15693 tag", @@ -1949,7 +1979,7 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID (8 hex bytes)", "--ua unaddressed mode", "-* scan for tag", "-2 use slower '1 out of 256' mode", @@ -1970,7 +2000,7 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID, 8 hex bytes", "--afi AFI number (0-255)", "-p, --pwd optional AFI/EAS password" ], @@ -1986,14 +2016,15 @@ "offline": false, "options": [ "-h, --help This help", - "-u, --uid full UID, 8 bytes", + "-u, --uid full UID (8 hex bytes)", "--ua unaddressed mode", "-* scan for tag", "-2 use slower '1 out of 256' mode", "-o, --opt set OPTION Flag (needed for TI)", - "--dsfid DSFID number (0-255)" + "--dsfid DSFID number (0-255)", + "-v, --verbose verbose output" ], - "usage": "hf 15 writedsfid [-h*2o] [-u ] [--ua] --dsfid " + "usage": "hf 15 writedsfid [-h*2ov] [-u ] [--ua] --dsfid " }, "hf cipurse aread": { "command": "hf cipurse aread", @@ -2162,13 +2193,13 @@ ], "usage": "hf cipurse formatall [-hav] [-n ] [-k ] [--sreq ] [--sresp ] [--no-auth]" }, - "hf cipurse info": { - "command": "hf cipurse info", - "description": "Get info from CIPURSE tags", + "hf cipurse help": { + "command": "hf cipurse help", + "description": "help This help. test Regression tests --------------------------------------------------------------------------------------- hf cipurse info available offline: no Get info from CIPURSE tags", "notes": [ "hf cipurse info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -2314,15 +2345,15 @@ ], "usage": "hf cipurse write [-hav] [-n ] [-k ] [--aid ] [--fid ] [-o ] [--noauth] [--sreq ] [--sresp ] [-d ] [--commit]" }, - "hf emrtd dump": { - "command": "hf emrtd dump", - "description": "Dump all files on an eMRTD", + "hf emrtd help": { + "command": "hf emrtd help", + "description": "help This help info Display info about an eMRTD list List ISO 14443A/7816 history --------------------------------------------------------------------------------------- hf emrtd dump available offline: no Dump all files on an eMRTD", "notes": [ "hf emrtd dump", "hf emrtd dump --dir ../dump", "hf emrtd dump -n 123456789 -d 890101 -e 250401" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-n, --doc document number, up to 9 chars", @@ -2375,13 +2406,13 @@ ], "usage": "hf emrtd list [-h1crux] [--frame] [-f ]" }, - "hf epa cnonces": { - "command": "hf epa cnonces", - "description": "Tries to collect nonces when doing part of PACE protocol.", + "hf epa help": { + "command": "hf epa help", + "description": "help This help --------------------------------------------------------------------------------------- hf epa cnonces available offline: no Tries to collect nonces when doing part of PACE protocol.", "notes": [ "hf epa cnonces --size 4 --num 4 --delay 1" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "--size nonce size", @@ -2461,21 +2492,9 @@ ], "usage": "hf felica auth2 [-hv] [-i ] [-c ] [-k ]" }, - "hf felica info": { - "command": "hf felica info", - "description": "Reader for FeliCa based tags", - "notes": [ - "hf felica info" - ], - "offline": false, - "options": [ - "-h, --help This help" - ], - "usage": "hf felica info [-h]" - }, - "hf felica list": { - "command": "hf felica list", - "description": "Alias of `trace list -t felica` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "hf felica help": { + "command": "hf felica help", + "description": "help This help list List ISO 18092/FeliCa history ----------- ----------------------- General ----------------------- ----------- ----------------------- FeliCa Standard ----------------------- ----------- ----------------------- FeliCa Light ----------------------- --------------------------------------------------------------------------------------- hf felica list available offline: yes Alias of `trace list -t felica` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf felica list --frame -> show frame delay times", "hf felica list -1 -> use trace buffer" @@ -2494,6 +2513,18 @@ ], "usage": "hf felica list [-h1crux] [--frame] [-f ]" }, + "hf felica info": { + "command": "hf felica info", + "description": "Reader for FeliCa based tags", + "notes": [ + "hf felica info" + ], + "offline": false, + "options": [ + "-h, --help This help" + ], + "usage": "hf felica info [-h]" + }, "hf felica litedump": { "command": "hf felica litedump", "description": "Dump ISO/18092 FeliCa Lite tag. It will timeout after 200sec", @@ -2747,21 +2778,9 @@ ], "usage": "hf fido auth [-havuc] default mode: [-f ] [-k ] [--kh ] [--cp ] [--ap ] [--cpx ] [--apx ]" }, - "hf fido info": { - "command": "hf fido info", - "description": "Get info from Fido tags", - "notes": [ - "hf fido info" - ], - "offline": false, - "options": [ - "-h, --help This help" - ], - "usage": "hf fido info [-h]" - }, - "hf fido list": { - "command": "hf fido list", - "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "hf fido help": { + "command": "hf fido help", + "description": "help This help. list List ISO 14443A history --------------------------------------------------------------------------------------- hf fido list available offline: yes Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf fido list --frame -> show frame delay times", "hf fido list -1 -> use trace buffer" @@ -2780,6 +2799,18 @@ ], "usage": "hf fido list [-h1crux] [--frame] [-f ]" }, + "hf fido info": { + "command": "hf fido info", + "description": "Get info from Fido tags", + "notes": [ + "hf fido info" + ], + "offline": false, + "options": [ + "-h, --help This help" + ], + "usage": "hf fido info [-h]" + }, "hf fido make": { "command": "hf fido make", "description": "Execute a FIDO2 Make Credential command. Needs json file with parameters. Sample file `fido2_defparams.json` in `client/resources/`. - for yubikey there must be only one option `\"rk\": true` or false", @@ -2834,6 +2865,21 @@ ], "usage": "hf fudan dump [-h] [-f ]" }, + "hf fudan help": { + "command": "hf fudan help", + "description": "help This help view Display content from tag dump file --------------------------------------------------------------------------------------- hf fudan reader available offline: no Read a fudan tag", + "notes": [ + "hf fudan reader", + "hf fudan reader -@ -> continuous reader mode" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-v, --verbose verbose output", + "-@ optional - continuous reader mode" + ], + "usage": "hf fudan reader [-hv@]" + }, "hf fudan rdbl": { "command": "hf fudan rdbl", "description": "Read fudan block", @@ -2850,21 +2896,6 @@ ], "usage": "hf fudan rdbl [-hv] --blk [-k ]" }, - "hf fudan reader": { - "command": "hf fudan reader", - "description": "Read a fudan tag", - "notes": [ - "hf fudan reader", - "hf fudan reader -@ -> continuous reader mode" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-v, --verbose verbose output", - "-@ optional - continuous reader mode" - ], - "usage": "hf fudan reader [-hv@]" - }, "hf fudan view": { "command": "hf fudan view", "description": "Print a FUDAN dump file (bin/eml/json)", @@ -2968,14 +2999,14 @@ ], "usage": "hf gallagher diversify [-h] --aid [--keynum ] [--uid ] [--sitekey ] [--apdu]" }, - "hf gallagher reader": { - "command": "hf gallagher reader", - "description": "Read a Gallagher DESFire tag from the Card Application Directory, CAD Specify site key is required if using non-default key", + "hf gallagher help": { + "command": "hf gallagher help", + "description": "help This help diversifykey Diversify Gallagher key decode Decode Gallagher credential block --------------------------------------------------------------------------------------- hf gallagher reader available offline: no Read a Gallagher DESFire tag from the Card Application Directory, CAD Specify site key is required if using non-default key", "notes": [ "hf gallagher reader -@ -> continuous reader mode", "hf gallagher reader --aid 2081f4 --sitekey 00112233445566778899aabbccddeeff -> skip CAD" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "--aid Application ID to read (3 bytes). If specified, the CAD is not used", @@ -2986,6 +3017,27 @@ ], "usage": "hf gallagher reader [-h@v] [--aid ] [--sitekey ] [--apdu]" }, + "hf help": { + "command": "hf help", + "description": "-------- ----------------------- High Frequency ----------------------- 14a { ISO14443A RFIDs... } 14b { ISO14443B RFIDs... } 15 { ISO15693 RFIDs... } cipurse { Cipurse transport Cards... } epa { German Identification Card... } emrtd { Machine Readable Travel Document... } felica { ISO18092 / FeliCa RFIDs... } fido { FIDO and FIDO2 authenticators... } fudan { Fudan RFIDs... } gallagher { Gallagher DESFire RFIDs... } ksx6924 { KS X 6924 (T-Money, Snapper+) RFIDs } jooki { Jooki RFIDs... } iclass { ICLASS RFIDs... } legic { LEGIC RFIDs... } lto { LTO Cartridge Memory RFIDs... } mf { MIFARE RFIDs... } mfp { MIFARE Plus RFIDs... } mfu { MIFARE Ultralight RFIDs... } mfdes { MIFARE Desfire RFIDs... } ntag424 { NXP NTAG 4242 DNA RFIDs... } seos { SEOS RFIDs... } st25ta { ST25TA RFIDs... } tesla { TESLA Cards... } texkom { Texkom RFIDs... } thinfilm { Thinfilm RFIDs... } topaz { TOPAZ (NFC Type 1) RFIDs... } vas { Apple Value Added Service } waveshare { Waveshare NFC ePaper... } xerox { Fuji/Xerox cartridge RFIDs... } ----------- --------------------- General --------------------- help This help list List protocol data in trace buffer search Search for known HF tags --------------------------------------------------------------------------------------- hf list available offline: yes Alias of `trace list -t raw` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf list --frame -> show frame delay times", + "hf list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf list [-h1crux] [--frame] [-f ]" + }, "hf iclass calcnewkey": { "command": "hf iclass calcnewkey", "description": "Calculate new keys for updating (blocks 3 & 4)", @@ -3218,22 +3270,9 @@ ], "usage": "hf iclass eview [-hvz] [-s <256|2048>]" }, - "hf iclass info": { - "command": "hf iclass info", - "description": "Act as a iCLASS reader. Reads / fingerprints a iCLASS tag.", - "notes": [ - "hf iclass info" - ], - "offline": false, - "options": [ - "-h, --help This help", - "--shallow use shallow (ASK) reader modulation instead of OOK" - ], - "usage": "hf iclass info [-h] [--shallow]" - }, - "hf iclass list": { - "command": "hf iclass list", - "description": "Alias of `trace list -t iclass -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "hf iclass help": { + "command": "hf iclass help", + "description": "help This help list List iclass history ----------- --------------------- general --------------------- view Display content from tag dump file ----------- --------------------- recovery -------------------- loclass Use loclass to perform bruteforce reader attack lookup Uses authentication trace to check for key in dictionary file ----------- ---------------------- utils ---------------------- calcnewkey Calc diversified keys (blocks 3 & 4) to write new keys encode Encode binary wiegand to block 7 encrypt Encrypt given block data decrypt Decrypt given block data or tag dump file managekeys Manage keys to use with iclass commands permutekey Permute function from 'heart of darkness' paper --------------------------------------------------------------------------------------- hf iclass list available offline: yes Alias of `trace list -t iclass -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf iclass list --frame -> show frame delay times", "hf iclass list -1 -> use trace buffer" @@ -3252,6 +3291,19 @@ ], "usage": "hf iclass list [-h1crux] [--frame] [-f ]" }, + "hf iclass info": { + "command": "hf iclass info", + "description": "Act as a iCLASS reader. Reads / fingerprints a iCLASS tag.", + "notes": [ + "hf iclass info" + ], + "offline": false, + "options": [ + "-h, --help This help", + "--shallow use shallow (ASK) reader modulation instead of OOK" + ], + "usage": "hf iclass info [-h] [--shallow]" + }, "hf iclass loclass": { "command": "hf iclass loclass", "description": "Execute the offline part of loclass attack An iclass dumpfile is assumed to consist of an arbitrary number of malicious CSNs, and their protocol responses The binary format of the file is expected to be as follows: <8 byte CSN><8 byte CC><4 byte NR><4 byte MAC> <8 byte CSN><8 byte CC><4 byte NR><4 byte MAC> <8 byte CSN><8 byte CC><4 byte NR><4 byte MAC> ... totalling N*24 bytes", @@ -3475,22 +3527,6 @@ ], "usage": "hf iclass wrbl [-hv] [-k ] [--ki ] --blk -d [-m ] [--credit] [--elite] [--raw] [--nr] [--shallow]" }, - "hf jooki clone": { - "command": "hf jooki clone", - "description": "Write a Jooki token to a Ultralight or NTAG tag", - "notes": [ - "hf jooki clone -d -> where hex is raw NDEF", - "hf jooki clone --b64 7WzlgEzqLgwTnWNy -> using base64 url parameter" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-b, --b64 base64 url parameter", - "-d, --data raw NDEF bytes", - "-p, --pwd password for authentication (EV1/NTAG 4 bytes)" - ], - "usage": "hf jooki clone [-h] [-b ] [-d ] [-p ]" - }, "hf jooki decode": { "command": "hf jooki decode", "description": "Decode a base64-encode Jooki token in NDEF URI format", @@ -3539,6 +3575,22 @@ ], "usage": "hf jooki encode [-hrtv] [-u ] [--dragon] [--fox] [--ghost] [--knight] [--whale] [--blackdragon] [--blackfox] [--blackknight] [--blackwhale] [--whitedragon] [--whitefox] [--whiteknight] [--whitewhale] [--tid ] [--fid ]" }, + "hf jooki help": { + "command": "hf jooki help", + "description": "help This help decode Decode Jooki token encode Encode Jooki token --------------------------------------------------------------------------------------- hf jooki clone available offline: no Write a Jooki token to a Ultralight or NTAG tag", + "notes": [ + "hf jooki clone -d -> where hex is raw NDEF", + "hf jooki clone --b64 7WzlgEzqLgwTnWNy -> using base64 url parameter" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-b, --b64 base64 url parameter", + "-d, --data raw NDEF bytes", + "-p, --pwd password for authentication (EV1/NTAG 4 bytes)" + ], + "usage": "hf jooki clone [-h] [-b ] [-d ] [-p ]" + }, "hf jooki sim": { "command": "hf jooki sim", "description": "Simulate a Jooki token. Either `hf mfu eload` before or use `-d` param", @@ -3567,6 +3619,19 @@ ], "usage": "hf ksx6924 balance [-hka]" }, + "hf ksx6924 help": { + "command": "hf ksx6924 help", + "description": "help This help --------------------------------------------------------------------------------------- hf ksx6924 select available offline: no Selects KS X 6924 application, and leaves field up", + "notes": [ + "hf ksx6924 select" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-a, --apdu Show APDU requests and responses" + ], + "usage": "hf ksx6924 select [-ha]" + }, "hf ksx6924 info": { "command": "hf ksx6924 info", "description": "Get info about a KS X 6924 transit card. This application is used by T-Money (South Korea) and Snapper+ (Wellington, New Zealand).", @@ -3609,19 +3674,6 @@ ], "usage": "hf ksx6924 prec [-hka] " }, - "hf ksx6924 select": { - "command": "hf ksx6924 select", - "description": "Selects KS X 6924 application, and leaves field up", - "notes": [ - "hf ksx6924 select" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-a, --apdu Show APDU requests and responses" - ], - "usage": "hf ksx6924 select [-ha]" - }, "hf legic crc": { "command": "hf legic crc", "description": "Calculates the legic crc8/crc16 on the given data", @@ -3638,22 +3690,6 @@ ], "usage": "hf legic crc [-h] -d [--mcc ] [-t ]" }, - "hf legic dump": { - "command": "hf legic dump", - "description": "Read all memory from LEGIC Prime tags and saves to (bin/json) dump file It autodetects card type (MIM22, MIM256, MIM1024)", - "notes": [ - "hf legic dump -> use UID as filename", - "hf legic dump -f myfile", - "hf legic dump --de -> use UID as filename and deobfuscate data" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-f, --file Dump filename", - "--de deobfuscate dump data (xor with MCC)" - ], - "usage": "hf legic dump [-h] [-f ] [--de]" - }, "hf legic einfo": { "command": "hf legic einfo", "description": "It decodes and displays emulator memory", @@ -3721,6 +3757,22 @@ ], "usage": "hf legic eview [-hv] [--22] [--256] [--1024]" }, + "hf legic help": { + "command": "hf legic help", + "description": "----------- --------------------- operations --------------------- help This help list List LEGIC history ----------- --------------------- simulation --------------------- ----------- --------------------- utils --------------------- crc Calculate Legic CRC over given bytes view Display deobfuscated and decoded content from tag dump file --------------------------------------------------------------------------------------- hf legic dump available offline: no Read all memory from LEGIC Prime tags and saves to (bin/json) dump file It autodetects card type (MIM22, MIM256, MIM1024)", + "notes": [ + "hf legic dump -> use UID as filename", + "hf legic dump -f myfile", + "hf legic dump --de -> use UID as filename and deobfuscate data" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-f, --file Dump filename", + "--de deobfuscate dump data (xor with MCC)" + ], + "usage": "hf legic dump [-h] [-f ] [--de]" + }, "hf legic info": { "command": "hf legic info", "description": "Gets information from a LEGIC Prime tag like systemarea, user areas, etc", @@ -3857,34 +3909,13 @@ ], "usage": "hf legic wrbl [-h] -o -d [--danger]" }, - "hf list": { - "command": "hf list", - "description": "Alias of `trace list -t raw` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", - "notes": [ - "hf list --frame -> show frame delay times", - "hf list -1 -> use trace buffer" - ], - "offline": true, - "options": [ - "-h, --help This help", - "-1, --buffer use data from trace buffer", - "--frame show frame delay times", - "-c mark CRC bytes", - "-r show relative times (gap and duration)", - "-u display times in microseconds instead of clock cycles", - "-x show hexdump to convert to pcap(ng)", - "or to import into Wireshark using encapsulation type \"ISO 14443\"", - "-f, --file filename of dictionary" - ], - "usage": "hf list [-h1crux] [--frame] [-f ]" - }, - "hf lto dump": { - "command": "hf lto dump", - "description": "Dump data from LTO tag", + "hf lto help": { + "command": "hf lto help", + "description": "help This help list List LTO-CM history --------------------------------------------------------------------------------------- hf lto dump available offline: no Dump data from LTO tag", "notes": [ "hf lto dump -f myfile" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-f, --file specify a filename for dumpfile" @@ -4707,6 +4738,27 @@ ], "usage": "hf mf hardnested [-habrstw] [-k ] [--blk ] [--tblk ] [--ta] [--tb] [--tk ] [-u ] [-f ] [--in] [--im] [--is] [--ia] [--i2] [--i5]" }, + "hf mf help": { + "command": "hf mf help", + "description": "help This help list List MIFARE history hardnested Nested attack for hardened MIFARE Classic cards decrypt Decrypt Crypto1 data from sniff or trace acl Decode and print MIFARE Classic access rights bytes mad Checks and prints MAD value Value blocks view Display content from tag dump file --------------------------------------------------------------------------------------- hf mf list available offline: yes Alias of `trace list -t mf -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf mf list --frame -> show frame delay times", + "hf mf list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf mf list [-h1crux] [--frame] [-f ]" + }, "hf mf info": { "command": "hf mf info", "description": "Information and check vulnerabilities in a MIFARE Classic card Some cards in order to extract information you need to specify key and/or specific keys in the command line", @@ -4726,27 +4778,6 @@ ], "usage": "hf mf info [-habnv] [--blk ] [-k ]" }, - "hf mf list": { - "command": "hf mf list", - "description": "Alias of `trace list -t mf -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", - "notes": [ - "hf mf list --frame -> show frame delay times", - "hf mf list -1 -> use trace buffer" - ], - "offline": true, - "options": [ - "-h, --help This help", - "-1, --buffer use data from trace buffer", - "--frame show frame delay times", - "-c mark CRC bytes", - "-r show relative times (gap and duration)", - "-u display times in microseconds instead of clock cycles", - "-x show hexdump to convert to pcap(ng)", - "or to import into Wireshark using encapsulation type \"ISO 14443\"", - "-f, --file filename of dictionary" - ], - "usage": "hf mf list [-h1crux] [--frame] [-f ]" - }, "hf mf mad": { "command": "hf mf mad", "description": "Checks and prints MIFARE Application Directory (MAD)", @@ -5926,13 +5957,13 @@ ], "usage": "hf mfdes getuid [-hav] [-n ] [-t ] [-k ] [--kdf ] [-i ] [-m ] [-c ] [--schann ] [--aid ] [--isoid ]" }, - "hf mfdes info": { - "command": "hf mfdes info", - "description": "Get info from MIFARE DESfire tags", + "hf mfdes help": { + "command": "hf mfdes help", + "description": "help This help list List DESFire (ISO 14443A) history test Regression crypto tests --------------------------------------------------------------------------------------- hf mfdes info available offline: no Get info from MIFARE DESfire tags", "notes": [ "hf mfdes info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -6370,6 +6401,27 @@ ], "usage": "hf mfp dump [-hv] [-f ] [-k ] [--ns]" }, + "hf mfp help": { + "command": "hf mfp help", + "description": "help This help list List MIFARE Plus history --------------------------------------------------------------------------------------- hf mfp list available offline: yes Alias of `trace list -t mfp -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf mfp list --frame -> show frame delay times", + "hf mfp list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf mfp list [-h1crux] [--frame] [-f ]" + }, "hf mfp info": { "command": "hf mfp info", "description": "Get info from MIFARE Plus tags", @@ -6397,27 +6449,6 @@ ], "usage": "hf mfp initp [-hv] [-k ]" }, - "hf mfp list": { - "command": "hf mfp list", - "description": "Alias of `trace list -t mfp -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", - "notes": [ - "hf mfp list --frame -> show frame delay times", - "hf mfp list -1 -> use trace buffer" - ], - "offline": true, - "options": [ - "-h, --help This help", - "-1, --buffer use data from trace buffer", - "--frame show frame delay times", - "-c mark CRC bytes", - "-r show relative times (gap and duration)", - "-u display times in microseconds instead of clock cycles", - "-x show hexdump to convert to pcap(ng)", - "or to import into Wireshark using encapsulation type \"ISO 14443\"", - "-f, --file filename of dictionary" - ], - "usage": "hf mfp list [-h1crux] [--frame] [-f ]" - }, "hf mfp mad": { "command": "hf mfp mad", "description": "Checks and prints MIFARE Application Directory (MAD)", @@ -6660,6 +6691,27 @@ ], "usage": "hf mfu eview [-h] [-e ]" }, + "hf mfu help": { + "command": "hf mfu help", + "description": "help This help list List MIFARE Ultralight / NTAG history keygen Generate 3DES MIFARE diversified keys pwdgen Generate pwd from known algos view Display content from tag dump file --------------------------------------------------------------------------------------- hf mfu list available offline: yes Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf 14a list --frame -> show frame delay times", + "hf 14a list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf 14a list [-h1crux] [--frame] [-f ]" + }, "hf mfu info": { "command": "hf mfu info", "description": "Get info about MIFARE Ultralight Family styled tag. Sometimes the tags are locked down, and you may need a key to be able to read the information", @@ -6691,27 +6743,6 @@ ], "usage": "hf mfu keygen [-hr] [-u ]" }, - "hf mfu list": { - "command": "hf mfu list", - "description": "Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", - "notes": [ - "hf 14a list --frame -> show frame delay times", - "hf 14a list -1 -> use trace buffer" - ], - "offline": true, - "options": [ - "-h, --help This help", - "-1, --buffer use data from trace buffer", - "--frame show frame delay times", - "-c mark CRC bytes", - "-r show relative times (gap and duration)", - "-u display times in microseconds instead of clock cycles", - "-x show hexdump to convert to pcap(ng)", - "or to import into Wireshark using encapsulation type \"ISO 14443\"", - "-f, --file filename of dictionary" - ], - "usage": "hf 14a list [-h1crux] [--frame] [-f ]" - }, "hf mfu ndefread": { "command": "hf mfu ndefread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -6976,13 +7007,13 @@ ], "usage": "hf ntag424 getfs [-h] --fileno " }, - "hf ntag424 info": { - "command": "hf ntag424 info", - "description": "Get info about NXP NTAG424 DNA Family styled tag.", + "hf ntag424 help": { + "command": "hf ntag424 help", + "description": "help This help view Display content from tag dump file --------------------------------------------------------------------------------------- hf ntag424 info available offline: no Get info about NXP NTAG424 DNA Family styled tag.", "notes": [ "hf ntag424 info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -7067,13 +7098,13 @@ ], "usage": "hf search [-hv]" }, - "hf seos info": { - "command": "hf seos info", - "description": "Get info from SEOS tags", + "hf seos help": { + "command": "hf seos help", + "description": "help This help list List SEOS history --------------------------------------------------------------------------------------- hf seos info available offline: no Get info from SEOS tags", "notes": [ "hf seos info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -7081,7 +7112,7 @@ }, "hf seos list": { "command": "hf seos list", - "description": "Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t seos -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf seos list --frame -> show frame delay times", "hf seos list -1 -> use trace buffer" @@ -7117,13 +7148,13 @@ ], "usage": "hf sniff [-h] [--sp ] [--st ] [--smode [none|drop|min|max|avg]] [--sratio ]" }, - "hf st25ta info": { - "command": "hf st25ta info", - "description": "Get info about ST25TA tag", + "hf st25ta help": { + "command": "hf st25ta help", + "description": "help This help list List ISO 14443A/7816 history ndefread read NDEF file on tag --------------------------------------------------------------------------------------- hf st25ta info available offline: no Get info about ST25TA tag", "notes": [ "hf st25ta info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -7214,13 +7245,13 @@ ], "usage": "hf st25ta sim [-h] -u " }, - "hf tesla info": { - "command": "hf tesla info", - "description": "Get info about TESLA Key tag", + "hf tesla help": { + "command": "hf tesla help", + "description": "help This help list List ISO 14443A/7816 history --------------------------------------------------------------------------------------- hf tesla info available offline: no Get info about TESLA Key tag", "notes": [ "hf tesla info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -7247,14 +7278,14 @@ ], "usage": "hf tesla list [-h1crux] [--frame] [-f ]" }, - "hf texkom reader": { - "command": "hf texkom reader", - "description": "Read a texkom tag", + "hf texkom help": { + "command": "hf texkom help", + "description": "help This help --------------------------------------------------------------------------------------- hf texkom reader available offline: no Read a texkom tag", "notes": [ "hf texkom reader", "hf texkom reader -@ -> continuous reader mode" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-1 Use data from Graphbuffer (offline mode)", @@ -7284,13 +7315,13 @@ ], "usage": "hf texkom sim [-hvt] [--raw ] [--id ] [--timeout ]" }, - "hf thinfilm info": { - "command": "hf thinfilm info", - "description": "Get info from Thinfilm tags", + "hf thinfilm help": { + "command": "hf thinfilm help", + "description": "help This help list List NFC Barcode / Thinfilm history - not correct --------------------------------------------------------------------------------------- hf thinfilm info available offline: no Get info from Thinfilm tags", "notes": [ "hf thinfilm info" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help" ], @@ -7345,24 +7376,9 @@ ], "usage": "hf topaz dump [-h] [-f ] [--ns]" }, - "hf topaz info": { - "command": "hf topaz info", - "description": "Get info from Topaz tags", - "notes": [ - "hf topaz info", - "hf topaz info -f myfilename -> save raw NDEF to file" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-f, --file save raw NDEF to file", - "-v, --verbose verbose output" - ], - "usage": "hf topaz info [-hv] [-f ]" - }, - "hf topaz list": { - "command": "hf topaz list", - "description": "Alias of `trace list -t topaz -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "hf topaz help": { + "command": "hf topaz help", + "description": "help This help list List Topaz history view Display content from tag dump file --------------------------------------------------------------------------------------- hf topaz list available offline: yes Alias of `trace list -t topaz -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf topaz list --frame -> show frame delay times", "hf topaz list -1 -> use trace buffer" @@ -7381,6 +7397,21 @@ ], "usage": "hf topaz list [-h1crux] [--frame] [-f ]" }, + "hf topaz info": { + "command": "hf topaz info", + "description": "Get info from Topaz tags", + "notes": [ + "hf topaz info", + "hf topaz info -f myfilename -> save raw NDEF to file" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-f, --file save raw NDEF to file", + "-v, --verbose verbose output" + ], + "usage": "hf topaz info [-hv] [-f ]" + }, "hf topaz raw": { "command": "hf topaz raw", "description": "Send raw hex data to Topaz tags", @@ -7504,14 +7535,14 @@ ], "usage": "hf vas decrypt [-h] [--pid ] [-f ] [-d ]" }, - "hf vas reader": { - "command": "hf vas reader", - "description": "Read and decrypt Value Added Services (VAS) message", + "hf vas help": { + "command": "hf vas help", + "description": "-------- ----------- Value Added Service ----------- help This help -------- ----------------- General ----------------- decrypt Decrypt a previously captured VAS cryptogram --------------------------------------------------------------------------------------- hf vas reader available offline: no Read and decrypt Value Added Services (VAS) message", "notes": [ "hf vas reader --url https://example.com -> URL Only mode", "hf vas reader --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -@" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "--pid PID, pass type id", @@ -7522,31 +7553,31 @@ ], "usage": "hf vas reader [-h@v] [--pid ] [-f ] [--url ]" }, - "hf waveshare loadbmp": { - "command": "hf waveshare loadbmp", - "description": "Load BMP file to Waveshare NFC ePaper.", + "hf waveshare help": { + "command": "hf waveshare help", + "description": "help This help load Load image file to Waveshare NFC ePaper --------------------------------------------------------------------------------------- hf waveshare load available offline: yes Load image file to Waveshare NFC ePaper", "notes": [ - "hf waveshare loadbmp -f myfile -m 0 -> 2.13 inch e-paper ( 122, 250 )", - "hf waveshare loadbmp -f myfile -m 1 -> 2.9 inch e-paper ( 296, 128 )", - "hf waveshare loadbmp -f myfile -m 2 -> 4.2 inch e-paper ( 400, 300 )", - "hf waveshare loadbmp -f myfile -m 3 -> 7.5 inch e-paper ( 800, 480 )", - "hf waveshare loadbmp -f myfile -m 4 -> 2.7 inch e-paper ( 176, 276 )", - "hf waveshare loadbmp -f myfile -m 5 -> 2.13 inch e-paper B (with red) ( 104, 212 )", - "hf waveshare loadbmp -f myfile -m 6 -> 1.54 inch e-paper B (with red) ( 200, 200 )", - "hf waveshare loadbmp -f myfile -m 7 -> 7.5 inch e-paper HD ( 880, 528 )" + "hf waveshare load -f myfile -m 0 -> 2.13 inch e-paper ( 122, 250 )", + "hf waveshare load -f myfile -m 1 -> 2.9 inch e-paper ( 296, 128 )", + "hf waveshare load -f myfile -m 2 -> 4.2 inch e-paper ( 400, 300 )", + "hf waveshare load -f myfile -m 3 -> 7.5 inch e-paper ( 800, 480 )", + "hf waveshare load -f myfile -m 4 -> 2.7 inch e-paper ( 176, 276 )", + "hf waveshare load -f myfile -m 5 -> 2.13 inch e-paper B (with red) ( 104, 212 )", + "hf waveshare load -f myfile -m 6 -> 1.54 inch e-paper B (with red) ( 200, 200 )", + "hf waveshare load -f myfile -m 7 -> 7.5 inch e-paper HD ( 880, 528 )" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-m model number [0 - 7] of your tag", - "-s, --save save dithered version in filename-[n].bmp, only for RGB BMP", - "-f, --file specify filename[.bmp] to upload to tag" + "-f, --file specify image to upload to tag", + "-s, --save save paletized version in file" ], - "usage": "hf waveshare loadbmp [-hs] -m -f " + "usage": "hf waveshare load [-h] -m -f [-s ]" }, "hf xerox dump": { "command": "hf xerox dump", - "description": "Dump all memory from a Fuji/Xerox tag", + "description": "Dump all memory from a Fuji/Xerox tag ISO/IEC 14443 type B based communications", "notes": [ "hf xerox dump" ], @@ -7554,13 +7585,36 @@ "options": [ "-h, --help This help", "-f, --file filename to save dump to", - "-d, --decrypt decrypt secret blocks" + "-d, --decrypt decrypt secret blocks", + "--ns no save to file", + "-v, --verbose verbose output" ], - "usage": "hf xerox dump [-hd] [-f ]" + "usage": "hf xerox dump [-hdv] [-f ] [--ns]" + }, + "hf xerox help": { + "command": "hf xerox help", + "description": "help This help list List ISO-14443B history -------- ----------------------- general ----------------------- view Display content from tag dump file --------------------------------------------------------------------------------------- hf xerox list available offline: yes Alias of `trace list -t 14b -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf 14b list --frame -> show frame delay times", + "hf 14b list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf 14b list [-h1crux] [--frame] [-f ]" }, "hf xerox info": { "command": "hf xerox info", - "description": "Tag information for ISO/IEC 14443 type B / XEROX based tags", + "description": "Tag information for Fuji Xerox based tags ISO/IEC 14443 type B based communications", "notes": [ "hf xerox info" ], @@ -7573,7 +7627,7 @@ }, "hf xerox reader": { "command": "hf xerox reader", - "description": "Act as a 14443B reader to identify a tag", + "description": "Act as a 14443B reader to identify a Fuji Xerox based tag ISO/IEC 14443 type B based communications", "notes": [ "hf xerox reader", "hf xerox reader -@" @@ -7586,6 +7640,20 @@ ], "usage": "hf xerox reader [-hv@]" }, + "hf xerox view": { + "command": "hf xerox view", + "description": "Print a Fuji/Xerox dump file (bin/eml/json) note: - command expects the filename to contain a UID which is needed to determine card memory type", + "notes": [ + "hf xerox view -f hf-xerox-0102030405060708-dump.bin" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-f, --file Specify a filename for dump file", + "-v, --verbose verbose output" + ], + "usage": "hf xerox view [-hv] -f " + }, "hints": { "command": "hints", "description": "Turn on/off hints", @@ -7613,18 +7681,6 @@ ], "usage": "hw bootloader [-h]" }, - "hw break": { - "command": "hw break", - "description": "send break loop package", - "notes": [ - "hw break" - ], - "offline": false, - "options": [ - "-h, --help This help" - ], - "usage": "hw break [-h]" - }, "hw connect": { "command": "hw connect", "description": "Connects to a Proxmark3 device via specified serial port. Baudrate here is only for physical UART or UART-BT, NOT for USB-CDC or blue shark add-on", @@ -7684,6 +7740,18 @@ ], "usage": "hw fpgaoff [-h]" }, + "hw help": { + "command": "hw help", + "description": "------------- ----------------------- Hardware ----------------------- help This help connect Connect Proxmark3 to serial port timeout Set the communication timeout on the client side version Show version information about the client and the connected Proxmark3, if any --------------------------------------------------------------------------------------- hw break available offline: no send break loop package", + "notes": [ + "hw break" + ], + "offline": true, + "options": [ + "-h, --help This help" + ], + "usage": "hw break [-h]" + }, "hw lcd": { "command": "hw lcd", "description": "Send command/data to LCD", @@ -7914,9 +7982,9 @@ ], "usage": "lf awid clone [-h] --fmt --fc --cn [--q5] [--em]" }, - "lf awid demod": { - "command": "lf awid demod", - "description": "Try to find AWID Prox preamble, if found decode / descramble data", + "lf awid help": { + "command": "lf awid help", + "description": "help this help demod demodulate an AWID FSK tag from the GraphBuffer --------------------------------------------------------------------------------------- lf awid demod available offline: yes Try to find AWID Prox preamble, if found decode / descramble data", "notes": [ "lf awid demod" ], @@ -7992,35 +8060,9 @@ ], "usage": "lf cmdread [-hvk@] [-d ] [-c <0|1|...>] [-e ]... [-o ] [-z ] [-s ] [--crc-ht]" }, - "lf config": { - "command": "lf config", - "description": "Get/Set config for LF sampling, bit/sample, decimation, frequency These changes are temporary, will be reset after a power cycle. - use `lf read` performs a read (active field) - use `lf sniff` performs a sniff (no active field)", - "notes": [ - "lf config -> shows current config", - "lf config -b 8 --125 -> samples at 125 kHz, 8 bps", - "lf config -b 4 --134 --dec 3 -> samples at 134 kHz, averages three samples into one, stored with a resolution of 4 bits per sample", - "lf config --trig 20 -s 10000 -> trigger sampling when above 20, skip 10 000 first samples after triggered", - "lf config --reset -> reset back to default values" - ], - "offline": false, - "options": [ - "-h, --help This help", - "--125 125 kHz frequency", - "--134 134 kHz frequency", - "-a, --avg <0|1> averaging - if set, will average the stored sample value when decimating (default 1)", - "-b, --bps <1-8> sets resolution of bits per sample (default 8)", - "--dec <1-8> sets decimation. A value of N saves only 1 in N samples (default 1)", - "--divisor <19-255> Manually set freq divisor. 88 -> 134 kHz, 95 -> 125 kHz", - "-f, --freq <47-600> manually set frequency in kHz", - "-r, --reset reset values to defaults", - "-s, --skip sets a number of samples to skip before capture (default 0)", - "-t, --trig <0-128> sets trigger threshold. 0 means no threshold" - ], - "usage": "lf config [-hr] [--125] [--134] [-a <0|1>] [-b <1-8>] [--dec <1-8>] [--divisor <19-255>] [-f <47-600>] [-s ] [-t <0-128>]" - }, - "lf cotag demod": { - "command": "lf cotag demod", - "description": "Try to find COTAG preamble, if found decode / descramble data", + "lf cotag help": { + "command": "lf cotag help", + "description": "help This help demod demodulate an COTAG tag --------------------------------------------------------------------------------------- lf cotag demod available offline: yes Try to find COTAG preamble, if found decode / descramble data", "notes": [ "lf cotag demod" ], @@ -8063,9 +8105,9 @@ ], "usage": "lf destron clone [-h] -u [--q5] [--em]" }, - "lf destron demod": { - "command": "lf destron demod", - "description": "Try to find Destron preamble, if found decode / descramble data", + "lf destron help": { + "command": "lf destron help", + "description": "help This help demod demodulate an Destron tag from the GraphBuffer --------------------------------------------------------------------------------------- lf destron demod available offline: yes Try to find Destron preamble, if found decode / descramble data", "notes": [ "lf destron demod" ], @@ -8137,27 +8179,6 @@ ], "usage": "lf em 410x clone [-h] [--clk ] --id [--q5] [--em]" }, - "lf em 410x demod": { - "command": "lf em 410x demod", - "description": "Try to find EM 410x preamble, if found decode / descramble data", - "notes": [ - "lf em 410x demod -> demod an EM410x Tag ID from GraphBuffer", - "lf em 410x demod --clk 32 -> demod an EM410x Tag ID from GraphBuffer using a clock of RF/32", - "lf em 410x demod --clk 32 -i -> demod an EM410x Tag ID from GraphBuffer using a clock of RF/32 and inverting data", - "lf em 410x demod -i -> demod an EM410x Tag ID from GraphBuffer while inverting data", - "lf em 410x demod --clk 64 -i --err 0 -> demod an EM410x Tag ID from GraphBuffer using a clock of RF/64 and inverting data and allowing 0 demod errors" - ], - "offline": true, - "options": [ - "-h, --help This help", - "--clk clock (default autodetect)", - "--err maximum allowed errors (default 100)", - "--len maximum length", - "-i, --invert invert output", - "-a, --amp amplify signal" - ], - "usage": "lf em 410x demod [-hia] [--clk ] [--err ] [--len ]" - }, "lf em 410x reader": { "command": "lf em 410x reader", "description": "read EM 410x tag", @@ -8224,22 +8245,6 @@ ], "usage": "lf em 410x watch [-h]" }, - "lf em 4x05 brute": { - "command": "lf em 4x05 brute", - "description": "This command tries to bruteforce the password of a EM4205/4305/4469/4569 The loop is running on device side, press Proxmark3 button to abort", - "notes": [ - "Note: if you get many false positives, change position on the antennalf em 4x05 brute", - "lf em 4x05 brute -n 1 -> stop after first candidate found", - "lf em 4x05 brute -s 000022AA -> start at 000022AA" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-s, --start Start bruteforce enumeration from this password value", - "-n Stop after having found n candidates. Default: 0 (infinite)" - ], - "usage": "lf em 4x05 brute [-h] [-s ] [-n ]" - }, "lf em 4x05 chk": { "command": "lf em 4x05 chk", "description": "This command uses a dictionary attack against EM4205/4305/4469/4569", @@ -8285,6 +8290,22 @@ ], "usage": "lf em 4x05 dump [-h] [-p ] [-f ] [--ns]" }, + "lf em 4x05 help": { + "command": "lf em 4x05 help", + "description": "help This help demod Demodulate a EM4x05/EM4x69 tag from the GraphBuffer sniff Attempt to recover em4x05 commands from sample buffer --------------------------------------------------------------------------------------- lf em 4x05 brute available offline: no This command tries to bruteforce the password of a EM4205/4305/4469/4569 The loop is running on device side, press Proxmark3 button to abort", + "notes": [ + "Note: if you get many false positives, change position on the antennalf em 4x05 brute", + "lf em 4x05 brute -n 1 -> stop after first candidate found", + "lf em 4x05 brute -s 000022AA -> start at 000022AA" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-s, --start Start bruteforce enumeration from this password value", + "-n Stop after having found n candidates. Default: 0 (infinite)" + ], + "usage": "lf em 4x05 brute [-h] [-s ] [-n ]" + }, "lf em 4x05 info": { "command": "lf em 4x05 info", "description": "Tag information EM4205/4305/4469//4569 tags. Tag must be on antenna.", @@ -8386,24 +8407,6 @@ ], "usage": "lf em 4x05 write [-h] [-a ] -d [-p ] [--po]" }, - "lf em 4x50 brute": { - "command": "lf em 4x50 brute", - "description": "Tries to bruteforce the password of a EM4x50 card. Function can be stopped by pressing pm3 button.", - "notes": [ - "lf em 4x50 brute --mode range --begin 12330000 --end 12340000 -> tries pwds from 0x12330000 to 0x12340000", - "lf em 4x50 brute --mode charset --digits --uppercase -> tries all combinations of ASCII codes for digits and uppercase letters" - ], - "offline": false, - "options": [ - "-h, --help This help", - "--mode Bruteforce mode (range|charset)", - "--begin Range mode - start of the key range", - "--end Range mode - end of the key range", - "--digits Charset mode - include ASCII codes for digits", - "--uppercase Charset mode - include ASCII codes for uppercase letters" - ], - "usage": "lf em 4x50 brute [-h] --mode [--begin ] [--end ] [--digits] [--uppercase]" - }, "lf em 4x50 chk": { "command": "lf em 4x50 chk", "description": "Run dictionary key recovery against EM4x50 card.", @@ -8474,6 +8477,24 @@ ], "usage": "lf em 4x50 eview [-h]" }, + "lf em 4x50 help": { + "command": "lf em 4x50 help", + "description": "help This help ----------- --------------------- operations --------------------- ----------- --------------------- simulation --------------------- --------------------------------------------------------------------------------------- lf em 4x50 brute available offline: no Tries to bruteforce the password of a EM4x50 card. Function can be stopped by pressing pm3 button.", + "notes": [ + "lf em 4x50 brute --mode range --begin 12330000 --end 12340000 -> tries pwds from 0x12330000 to 0x12340000", + "lf em 4x50 brute --mode charset --digits --uppercase -> tries all combinations of ASCII codes for digits and uppercase letters" + ], + "offline": true, + "options": [ + "-h, --help This help", + "--mode Bruteforce mode (range|charset)", + "--begin Range mode - start of the key range", + "--end Range mode - end of the key range", + "--digits Charset mode - include ASCII codes for digits", + "--uppercase Charset mode - include ASCII codes for uppercase letters" + ], + "usage": "lf em 4x50 brute [-h] --mode [--begin ] [--end ] [--digits] [--uppercase]" + }, "lf em 4x50 info": { "command": "lf em 4x50 info", "description": "Tag information EM4x50.", @@ -8622,13 +8643,13 @@ ], "usage": "lf em 4x70 auth [-h] [--par] --rnd --frn " }, - "lf em 4x70 brute": { - "command": "lf em 4x70 brute", - "description": "Optimized partial key-update attack of 16-bit key block 7, 8 or 9 of an EM4x70 This attack does NOT write anything to the tag. Before starting this attack, 0000 must be written to the 16-bit key block: 'lf em 4x70 write -b 9 -d 0000'. After success, the 16-bit key block have to be restored with the key found: 'lf em 4x70 write -b 9 -d c0de'", + "lf em 4x70 help": { + "command": "lf em 4x70 help", + "description": "help This help --------------------------------------------------------------------------------------- lf em 4x70 brute available offline: no Optimized partial key-update attack of 16-bit key block 7, 8 or 9 of an EM4x70 This attack does NOT write anything to the tag. Before starting this attack, 0000 must be written to the 16-bit key block: 'lf em 4x70 write -b 9 -d 0000'. After success, the 16-bit key block have to be restored with the key found: 'lf em 4x70 write -b 9 -d c0de'", "notes": [ "lf em 4x70 brute -b 9 --rnd 45F54ADA252AAC --frn 4866BB70 -> bruteforcing key bits k95...k80" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "--par Add parity bit when sending commands", @@ -8713,6 +8734,27 @@ ], "usage": "lf em 4x70 writepin [-h] [--par] -p " }, + "lf em help": { + "command": "lf em help", + "description": "help This help 410x { EM 4102 commands... } 4x05 { EM 4205 / 4305 / 4369 / 4469 commands... } 4x50 { EM 4350 / 4450 commands... } 4x70 { EM 4070 / 4170 commands... } ======================================================================================= lf em 410x { EM 4102 commands... } --------------------------------------------------------------------------------------- lf em 410x help available offline: yes help This help demod demodulate a EM410x tag from the GraphBuffer --------------------------------------------------------------------------------------- lf em 410x demod available offline: yes Try to find EM 410x preamble, if found decode / descramble data", + "notes": [ + "lf em 410x demod -> demod an EM410x Tag ID from GraphBuffer", + "lf em 410x demod --clk 32 -> demod an EM410x Tag ID from GraphBuffer using a clock of RF/32", + "lf em 410x demod --clk 32 -i -> demod an EM410x Tag ID from GraphBuffer using a clock of RF/32 and inverting data", + "lf em 410x demod -i -> demod an EM410x Tag ID from GraphBuffer while inverting data", + "lf em 410x demod --clk 64 -i --err 0 -> demod an EM410x Tag ID from GraphBuffer using a clock of RF/64 and inverting data and allowing 0 demod errors" + ], + "offline": true, + "options": [ + "-h, --help This help", + "--clk clock (default autodetect)", + "--err maximum allowed errors (default 100)", + "--len maximum length", + "-i, --invert invert output", + "-a, --amp amplify signal" + ], + "usage": "lf em 410x demod [-hia] [--clk ] [--err ] [--len ]" + }, "lf fdxb clone": { "command": "lf fdxb clone", "description": "clone a FDX-B tag to a T55x7, Q5/T5555 or EM4305/4469 tag.", @@ -8734,9 +8776,9 @@ ], "usage": "lf fdxb clone [-ha] -c -n [--extended ] [--q5] [--em]" }, - "lf fdxb demod": { - "command": "lf fdxb demod", - "description": "Try to find FDX-B preamble, if found decode / descramble data", + "lf fdxb help": { + "command": "lf fdxb help", + "description": "help this help demod demodulate a FDX-B ISO11784/85 tag from the GraphBuffer --------------------------------------------------------------------------------------- lf fdxb demod available offline: yes Try to find FDX-B preamble, if found decode / descramble data", "notes": [ "lf fdxb demod" ], @@ -8798,9 +8840,9 @@ ], "usage": "lf gallagher clone [-h] [-r ] [--q5] [--em] [--rc ] [--fc ] [--cn ] [--il ]" }, - "lf gallagher demod": { - "command": "lf gallagher demod", - "description": "Try to find GALLAGHER preamble, if found decode / descramble data", + "lf gallagher help": { + "command": "lf gallagher help", + "description": "help This help demod demodulate an GALLAGHER tag from the GraphBuffer --------------------------------------------------------------------------------------- lf gallagher demod available offline: yes Try to find GALLAGHER preamble, if found decode / descramble data", "notes": [ "lf gallagher demod" ], @@ -8861,9 +8903,9 @@ ], "usage": "lf gproxii clone [-h] --xor --fmt --fc --cn [--q5] [--em]" }, - "lf gproxii demod": { - "command": "lf gproxii demod", - "description": "Try to find Guardall Prox-II preamble, if found decode / descramble data", + "lf gproxii help": { + "command": "lf gproxii help", + "description": "help this help demod demodulate a G Prox II tag from the GraphBuffer --------------------------------------------------------------------------------------- lf gproxii demod available offline: yes Try to find Guardall Prox-II preamble, if found decode / descramble data", "notes": [ "lf gproxii demod -> use graphbuffer to decode", "lf gproxii demod --raw fb8ee718ee3b8cc785c11b92 ->" @@ -8904,6 +8946,32 @@ ], "usage": "lf gproxii sim [-h] --xor --fmt --fc --cn " }, + "lf help": { + "command": "lf help", + "description": "help This help ----------- -------------- Low Frequency -------------- awid { AWID RFIDs... } cotag { COTAG CHIPs... } destron { FDX-A Destron RFIDs... } em { EM CHIPs & RFIDs... } fdxb { FDX-B RFIDs... } gallagher { GALLAGHER RFIDs... } gproxii { Guardall Prox II RFIDs... } hid { HID Prox RFIDs... } hitag { Hitag CHIPs... } idteck { Idteck RFIDs... } indala { Indala RFIDs... } io { ioProx RFIDs... } jablotron { Jablotron RFIDs... } keri { KERI RFIDs... } motorola { Motorola Flexpass RFIDs... } nedap { Nedap RFIDs... } nexwatch { NexWatch RFIDs... } noralsy { Noralsy RFIDs... } pac { PAC/Stanley RFIDs... } paradox { Paradox RFIDs... } pcf7931 { PCF7931 CHIPs... } presco { Presco RFIDs... } pyramid { Farpointe/Pyramid RFIDs... } securakey { Securakey RFIDs... } ti { TI CHIPs... } t55xx { T55xx CHIPs... } viking { Viking RFIDs... } visa2000 { Visa2000 RFIDs... } ----------- --------------------- General --------------------- search Read and Search for valid known tag --------------------------------------------------------------------------------------- lf config available offline: no Get/Set config for LF sampling, bit/sample, decimation, frequency These changes are temporary, will be reset after a power cycle. - use `lf read` performs a read (active field) - use `lf sniff` performs a sniff (no active field)", + "notes": [ + "lf config -> shows current config", + "lf config -b 8 --125 -> samples at 125 kHz, 8 bps", + "lf config -b 4 --134 --dec 3 -> samples at 134 kHz, averages three samples into one, stored with a resolution of 4 bits per sample", + "lf config --trig 20 -s 10000 -> trigger sampling when above 20, skip 10 000 first samples after triggered", + "lf config --reset -> reset back to default values" + ], + "offline": true, + "options": [ + "-h, --help This help", + "--125 125 kHz frequency", + "--134 134 kHz frequency", + "-a, --avg <0|1> averaging - if set, will average the stored sample value when decimating (default 1)", + "-b, --bps <1-8> sets resolution of bits per sample (default 8)", + "--dec <1-8> sets decimation. A value of N saves only 1 in N samples (default 1)", + "--divisor <19-255> Manually set freq divisor. 88 -> 134 kHz, 95 -> 125 kHz", + "-f, --freq <47-600> manually set frequency in kHz", + "-r, --reset reset values to defaults", + "-s, --skip sets a number of samples to skip before capture (default 0)", + "-t, --trig <0-128> sets trigger threshold. 0 means no threshold" + ], + "usage": "lf config [-hr] [--125] [--134] [-a <0|1>] [-b <1-8>] [--dec <1-8>] [--divisor <19-255>] [-f <47-600>] [-s ] [-t <0-128>]" + }, "lf hid brute": { "command": "lf hid brute", "description": "Enables bruteforce of HID readers with specified facility code or card number. This is an attack against the reader. If the field being bruteforced is provided, it starts with it and goes up / down one step while maintaining other supplied values. If the field being bruteforced is not provided, it will iterate through the full range while maintaining other supplied values.", @@ -8956,9 +9024,9 @@ ], "usage": "lf hid clone [-h] [-w ] [--fc ] [--cn ] [-i ] [-o ] [-r ] [--q5] [--em] [--bin ]" }, - "lf hid demod": { - "command": "lf hid demod", - "description": "Try to find HID Prox preamble, if found decode / descramble data", + "lf hid help": { + "command": "lf hid help", + "description": "help this help demod demodulate HID Prox tag from the GraphBuffer --------------------------------------------------------------------------------------- lf hid demod available offline: yes Try to find HID Prox preamble, if found decode / descramble data", "notes": [ "lf hid demod" ], @@ -9071,21 +9139,9 @@ ], "usage": "lf hitag eload [-h12sm] -f " }, - "lf hitag info": { - "command": "lf hitag info", - "description": "Hitag2 tag information", - "notes": [ - "lf hitag info" - ], - "offline": false, - "options": [ - "-h, --help This help" - ], - "usage": "lf hitag info [-h]" - }, - "lf hitag list": { - "command": "lf hitag list", - "description": "Alias of `trace list -t hitag2` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "lf hitag help": { + "command": "lf hitag help", + "description": "help This help list List Hitag trace history --------------------------------------------------------------------------------------- lf hitag list available offline: yes Alias of `trace list -t hitag2` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "lf hitag list --frame -> show frame delay times", "lf hitag list -1 -> use trace buffer" @@ -9104,6 +9160,18 @@ ], "usage": "lf hitag list [-h1crux] [--frame] [-f ]" }, + "lf hitag info": { + "command": "lf hitag info", + "description": "Hitag2 tag information", + "notes": [ + "lf hitag info" + ], + "offline": false, + "options": [ + "-h, --help This help" + ], + "usage": "lf hitag info [-h]" + }, "lf hitag read": { "command": "lf hitag read", "description": "Read Hitag memory Crypto mode key format: ISK high + ISK low", @@ -9220,9 +9288,9 @@ ], "usage": "lf idteck clone [-h] -r [--q5] [--em]" }, - "lf idteck demod": { - "command": "lf idteck demod", - "description": "Try to find Idteck preamble, if found decode / descramble data", + "lf idteck help": { + "command": "lf idteck help", + "description": "help This help demod demodulate an Idteck tag from the GraphBuffer --------------------------------------------------------------------------------------- lf idteck demod available offline: yes Try to find Idteck preamble, if found decode / descramble data", "notes": [ "lf idteck demod" ], @@ -9272,28 +9340,6 @@ ], "usage": "lf indala altdemod [-hl]" }, - "lf indala brute": { - "command": "lf indala brute", - "description": "Enables bruteforce of INDALA readers with specified facility code. This is a attack against reader. if cardnumber is given, it starts with it and goes up / down one step if cardnumber is not given, it starts with 1 and goes up to 65535", - "notes": [ - "lf indala brute --fc 224", - "lf indala brute --fc 21 -d 2000", - "lf indala brute -v --fc 21 --cn 200 -d 2000", - "lf indala brute -v --fc 21 --cn 200 -d 2000 --up" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-v, --verbose verbose output", - "--fc facility code", - "--cn card number to start with", - "-d, --delay delay betweens attempts in ms. Default 1000ms", - "--up direction to increment card number. (default is both directions)", - "--down direction to decrement card number. (default is both directions)", - "--4041x specify Indala 4041X format" - ], - "usage": "lf indala brute [-hv] [--fc ] [--cn ] [-d ] [--up] [--down] [--4041x]" - }, "lf indala clone": { "command": "lf indala clone", "description": "clone Indala UID to T55x7 or Q5/T5555 tag using different known formats Warning, encoding with FC/CN doesn't always work", @@ -9335,6 +9381,28 @@ ], "usage": "lf indala demod [-hi] [--clock ] [--maxerr ]" }, + "lf indala help": { + "command": "lf indala help", + "description": "help This help demod Demodulate an Indala tag (PSK1) from the GraphBuffer altdemod Alternative method to demodulate samples for Indala 64 bit UID (option '224' for 224 bit) --------------------------------------------------------------------------------------- lf indala brute available offline: no Enables bruteforce of INDALA readers with specified facility code. This is a attack against reader. if cardnumber is given, it starts with it and goes up / down one step if cardnumber is not given, it starts with 1 and goes up to 65535", + "notes": [ + "lf indala brute --fc 224", + "lf indala brute --fc 21 -d 2000", + "lf indala brute -v --fc 21 --cn 200 -d 2000", + "lf indala brute -v --fc 21 --cn 200 -d 2000 --up" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-v, --verbose verbose output", + "--fc facility code", + "--cn card number to start with", + "-d, --delay delay betweens attempts in ms. Default 1000ms", + "--up direction to increment card number. (default is both directions)", + "--down direction to decrement card number. (default is both directions)", + "--4041x specify Indala 4041X format" + ], + "usage": "lf indala brute [-hv] [--fc ] [--cn ] [-d ] [--up] [--down] [--4041x]" + }, "lf indala reader": { "command": "lf indala reader", "description": "read a Indala tag", @@ -9389,9 +9457,9 @@ ], "usage": "lf io clone [-h] --vn --fc --cn [--q5] [--em]" }, - "lf io demod": { - "command": "lf io demod", - "description": "Try to find ioProx preamble, if found decode / descramble data", + "lf io help": { + "command": "lf io help", + "description": "help this help demod demodulate an ioProx tag from the GraphBuffer --------------------------------------------------------------------------------------- lf io demod available offline: yes Try to find ioProx preamble, if found decode / descramble data", "notes": [ "lf io demod" ], @@ -9458,9 +9526,9 @@ ], "usage": "lf jablotron clone [-h] --cn [--q5] [--em]" }, - "lf jablotron demod": { - "command": "lf jablotron demod", - "description": "Try to find Jablotron preamble, if found decode / descramble data", + "lf jablotron help": { + "command": "lf jablotron help", + "description": "help This help demod demodulate an Jablotron tag from the GraphBuffer --------------------------------------------------------------------------------------- lf jablotron demod available offline: yes Try to find Jablotron preamble, if found decode / descramble data", "notes": [ "lf jablotron demod" ], @@ -9514,9 +9582,9 @@ ], "usage": "lf keri clone [-h] [-t ] [--fc ] --cn [--q5] [--em]" }, - "lf keri demod": { - "command": "lf keri demod", - "description": "Try to find KERI preamble, if found decode / descramble data", + "lf keri help": { + "command": "lf keri help", + "description": "help This help demod demodulate an KERI tag from the GraphBuffer --------------------------------------------------------------------------------------- lf keri demod available offline: yes Try to find KERI preamble, if found decode / descramble data", "notes": [ "lf keri demod" ], @@ -9569,9 +9637,9 @@ ], "usage": "lf motorola clone [-h] -r [--q5] [--em]" }, - "lf motorola demod": { - "command": "lf motorola demod", - "description": "Try to find Motorola Flexpass preamble, if found decode / descramble data", + "lf motorola help": { + "command": "lf motorola help", + "description": "help This help demod demodulate an MOTOROLA tag from the GraphBuffer --------------------------------------------------------------------------------------- lf motorola demod available offline: yes Try to find Motorola Flexpass preamble, if found decode / descramble data", "notes": [ "lf motorola demod" ], @@ -9624,9 +9692,9 @@ ], "usage": "lf nedap clone [-hl] [--st ] --cc --id [--q5] [--em]" }, - "lf nedap demod": { - "command": "lf nedap demod", - "description": "Try to find Nedap preamble, if found decode / descramble data", + "lf nedap help": { + "command": "lf nedap help", + "description": "help This help demod demodulate Nedap tag from the GraphBuffer --------------------------------------------------------------------------------------- lf nedap demod available offline: yes Try to find Nedap preamble, if found decode / descramble data", "notes": [ "lf nedap demod" ], @@ -9690,9 +9758,9 @@ ], "usage": "lf nexwatch clone [-h] [-r ] [--cn ] [-m ] [--nc] [--qc] [--hc] [--q5] [--em] [--magic ] [--psk2]" }, - "lf nexwatch demod": { - "command": "lf nexwatch demod", - "description": "Try to find Nexwatch preamble, if found decode / descramble data", + "lf nexwatch help": { + "command": "lf nexwatch help", + "description": "help This help demod demodulate a NexWatch tag (nexkey, quadrakey) from the GraphBuffer --------------------------------------------------------------------------------------- lf nexwatch demod available offline: yes Try to find Nexwatch preamble, if found decode / descramble data", "notes": [ "lf nexwatch demod" ], @@ -9756,9 +9824,9 @@ ], "usage": "lf noralsy clone [-h] --cn [-y ] [--q5] [--em]" }, - "lf noralsy demod": { - "command": "lf noralsy demod", - "description": "Try to find Noralsy preamble, if found decode / descramble data", + "lf noralsy help": { + "command": "lf noralsy help", + "description": "help This help demod demodulate an Noralsy tag from the GraphBuffer --------------------------------------------------------------------------------------- lf noralsy demod available offline: yes Try to find Noralsy preamble, if found decode / descramble data", "notes": [ "lf noralsy demod" ], @@ -9815,9 +9883,9 @@ ], "usage": "lf pac clone [-h] [--cn ] [-r ] [--q5] [--em]" }, - "lf pac demod": { - "command": "lf pac demod", - "description": "Try to find PAC/Stanley preamble, if found decode / descramble data", + "lf pac help": { + "command": "lf pac help", + "description": "help This help demod demodulate a PAC tag from the GraphBuffer --------------------------------------------------------------------------------------- lf pac demod available offline: yes Try to find PAC/Stanley preamble, if found decode / descramble data", "notes": [ "lf pac demod" ], @@ -9875,9 +9943,9 @@ ], "usage": "lf paradox clone [-h] [-r ] [--fc ] [--cn ] [--q5] [--em]" }, - "lf paradox demod": { - "command": "lf paradox demod", - "description": "Try to find Paradox preamble, if found decode / descramble data", + "lf paradox help": { + "command": "lf paradox help", + "description": "help This help demod demodulate a Paradox FSK tag from the GraphBuffer --------------------------------------------------------------------------------------- lf paradox demod available offline: yes Try to find Paradox preamble, if found decode / descramble data", "notes": [ "lf paradox demod --old -> Display previous checksum version" ], @@ -9938,13 +10006,13 @@ ], "usage": "lf pcf7931 config [-hr] [-p ] [-d ] [--lw ] [--lp ]" }, - "lf pcf7931 reader": { - "command": "lf pcf7931 reader", - "description": "read a PCF7931 tag", + "lf pcf7931 help": { + "command": "lf pcf7931 help", + "description": "help This help config Configure the password, the tags initialization delay and time offsets (optional) --------------------------------------------------------------------------------------- lf pcf7931 reader available offline: no read a PCF7931 tag", "notes": [ "lf pcf7931 reader -@ -> continuous reader mode" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-@ optional - continuous reader mode" @@ -9984,9 +10052,9 @@ ], "usage": "lf presco clone [-h] [-c ] [-d ] [--q5] [--em]" }, - "lf presco demod": { - "command": "lf presco demod", - "description": "Try to find presco preamble, if found decode / descramble data", + "lf presco help": { + "command": "lf presco help", + "description": "help This help demod demodulate Presco tag from the GraphBuffer --------------------------------------------------------------------------------------- lf presco demod available offline: yes Try to find presco preamble, if found decode / descramble data", "notes": [ "lf presco demod" ], @@ -10043,9 +10111,9 @@ ], "usage": "lf pyramid clone [-h] [--fc ] [--cn ] [--q5] [--em] [-r ]" }, - "lf pyramid demod": { - "command": "lf pyramid demod", - "description": "Try to find Farpoint/Pyramid preamble, if found decode / descramble data", + "lf pyramid help": { + "command": "lf pyramid help", + "description": "help this help demod demodulate a Pyramid FSK tag from the GraphBuffer --------------------------------------------------------------------------------------- lf pyramid demod available offline: yes Try to find Farpoint/Pyramid preamble, if found decode / descramble data", "notes": [ "lf pyramid demod" ], @@ -10135,9 +10203,9 @@ ], "usage": "lf securakey clone [-h] -r [--q5] [--em]" }, - "lf securakey demod": { - "command": "lf securakey demod", - "description": "Try to find Securakey preamble, if found decode / descramble data", + "lf securakey help": { + "command": "lf securakey help", + "description": "help This help demod demodulate an Securakey tag from the GraphBuffer --------------------------------------------------------------------------------------- lf securakey demod available offline: yes Try to find Securakey preamble, if found decode / descramble data", "notes": [ "lf securakey demod" ], @@ -10326,18 +10394,6 @@ ], "usage": "lf t55xx chk [-hm] [-f ] [--em ] [--r0] [--r1] [--r2] [--r3] [--all]" }, - "lf t55xx clonehelp": { - "command": "lf t55xx clonehelp", - "description": "Display a list of available commands for cloning specific techs on T5xx tags", - "notes": [ - "lf t55xx clonehelp" - ], - "offline": false, - "options": [ - "-h, --help This help" - ], - "usage": "lf t55xx clonehelp [-h]" - }, "lf t55xx config": { "command": "lf t55xx config", "description": "Set/Get T55XX configuration of the pm3 client. Like modulation, inverted, offset, rate etc. Offset is start position to decode data.", @@ -10457,6 +10513,18 @@ ], "usage": "lf t55xx dump [-ho] [-f ] [-p ] [--ns] [--r0] [--r1] [--r2] [--r3]" }, + "lf t55xx help": { + "command": "lf t55xx help", + "description": "----------- ---------------------------- notice ----------------------------- Remember to run `lf t55xx detect` first whenever a new card is placed on the Proxmark3 or the config block changed. help This help ----------- --------------------- operations --------------------- config Set/Get T55XX configuration (modulation, inverted, offset, rate) detect Try detecting the tag modulation from reading the configuration block info Show T55x7 configuration data (page 0/ blk 0) trace Show T55x7 traceability data (page 1/ blk 0-1) ----------- --------------------- recovery --------------------- sniff Attempt to recover T55xx commands from sample buffer --------------------------------------------------------------------------------------- lf t55xx clonehelp available offline: no Display a list of available commands for cloning specific techs on T5xx tags", + "notes": [ + "lf t55xx clonehelp" + ], + "offline": true, + "options": [ + "-h, --help This help" + ], + "usage": "lf t55xx clonehelp [-h]" + }, "lf t55xx info": { "command": "lf t55xx info", "description": "Show T55x7 configuration data (page 0/ blk 0) from reading the configuration block from tag. Use `-c` to specify a config block data to be used instead of reading tag.", @@ -10705,9 +10773,9 @@ ], "usage": "lf t55xx write [-ht] -b <0-7> [-d ] [-p ] [--pg1] [--verify] [--r0] [--r1] [--r2] [--r3]" }, - "lf ti demod": { - "command": "lf ti demod", - "description": "Try to find TI preamble, if found decode / descramble data", + "lf ti help": { + "command": "lf ti help", + "description": "help This help demod Demodulate raw bits for TI LF tag from the GraphBuffer --------------------------------------------------------------------------------------- lf ti demod available offline: yes Try to find TI preamble, if found decode / descramble data", "notes": [ "lf ti demod" ], @@ -10781,9 +10849,9 @@ ], "usage": "lf viking clone [-h] --cn [--q5] [--em]" }, - "lf viking demod": { - "command": "lf viking demod", - "description": "Try to find Viking AM preamble, if found decode / descramble data", + "lf viking help": { + "command": "lf viking help", + "description": "help This help demod demodulate a Viking tag from the GraphBuffer --------------------------------------------------------------------------------------- lf viking demod available offline: yes Try to find Viking AM preamble, if found decode / descramble data", "notes": [ "lf viking demod" ], @@ -10836,9 +10904,9 @@ ], "usage": "lf visa2000 clone [-h] --cn [--q5] [--em]" }, - "lf visa2000 demod": { - "command": "lf visa2000 demod", - "description": "Try to find visa2000 preamble, if found decode / descramble data", + "lf visa2000 help": { + "command": "lf visa2000 help", + "description": "help This help demod demodulate an VISA2000 tag from the GraphBuffer --------------------------------------------------------------------------------------- lf visa2000 demod available offline: yes Try to find visa2000 preamble, if found decode / descramble data", "notes": [ "lf visa2000 demod" ], @@ -10874,19 +10942,6 @@ ], "usage": "lf visa2000 sim [-h] --cn " }, - "mem baudrate": { - "command": "mem baudrate", - "description": "Set the baudrate for the SPI flash memory communications. Reading Flash ID will virtually always fail under 48MHz setting. Unless you know what you are doing, please stay at 24MHz. If >= 24MHz, FASTREADS instead of READS instruction will be used.", - "notes": [ - "mem baudrate --mhz 48" - ], - "offline": false, - "options": [ - "-h, --help This help", - "--mhz <24|48> SPI baudrate in MHz" - ], - "usage": "mem baudrate [-h] --mhz <24|48>" - }, "mem dump": { "command": "mem dump", "description": "Dumps flash memory on device into a file or view in console", @@ -10906,6 +10961,19 @@ ], "usage": "mem dump [-hv] [-o ] [-l ] [-f ] [-c ]" }, + "mem help": { + "command": "mem help", + "description": "help This help --------------------------------------------------------------------------------------- mem baudrate available offline: no Set the baudrate for the SPI flash memory communications. Reading Flash ID will virtually always fail under 48MHz setting. Unless you know what you are doing, please stay at 24MHz. If >= 24MHz, FASTREADS instead of READS instruction will be used.", + "notes": [ + "mem baudrate --mhz 48" + ], + "offline": true, + "options": [ + "-h, --help This help", + "--mhz <24|48> SPI baudrate in MHz" + ], + "usage": "mem baudrate [-h] --mhz <24|48>" + }, "mem info": { "command": "mem info", "description": "Collect signature and verify it from flash memory", @@ -10955,20 +11023,6 @@ ], "usage": "mem spiffs check [-h]" }, - "mem spiffs copy": { - "command": "mem spiffs copy", - "description": "Copy a file to another (destructively) in SPIFFS file system", - "notes": [ - "mem spiffs copy -s aaa.bin -d aaa_cpy.bin" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-s, --src source file name", - "-d, --dest destination file name" - ], - "usage": "mem spiffs copy [-h] -s -d " - }, "mem spiffs dump": { "command": "mem spiffs dump", "description": "Dumps device SPIFFS file to a local file Size is handled by first sending a STAT command against file to verify existence", @@ -10986,6 +11040,20 @@ ], "usage": "mem spiffs dump [-ht] -s [-d ]" }, + "mem spiffs help": { + "command": "mem spiffs help", + "description": "help This help --------------------------------------------------------------------------------------- mem spiffs copy available offline: no Copy a file to another (destructively) in SPIFFS file system", + "notes": [ + "mem spiffs copy -s aaa.bin -d aaa_cpy.bin" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-s, --src source file name", + "-d, --dest destination file name" + ], + "usage": "mem spiffs copy [-h] -s -d " + }, "mem spiffs info": { "command": "mem spiffs info", "description": "Print file system info and usage statistics", @@ -11139,17 +11207,24 @@ ], "usage": "msleep [-h] [-t ]" }, - "nfc barcode read": { - "command": "nfc barcode read", - "description": "Get info from Thinfilm tags", + "nfc barcode help": { + "command": "nfc barcode help", + "description": "-------- ------------------ NFC Barcode -------------------- -------- --------------------- General --------------------- help This help ======================================================================================= piv { PIV commands... } --------------------------------------------------------------------------------------- piv help available offline: yes help This help list List ISO7816 history --------------------------------------------------------------------------------------- piv select available offline: no Executes select applet command", "notes": [ - "hf thinfilm info" + "piv select -s -> select card, select applet", + "piv select -st --aid a00000030800001000 -> select card, select applet a00000030800001000, show result in TLV" ], - "offline": false, + "offline": true, "options": [ - "-h, --help This help" + "-h, --help This help", + "-s, -S, --select Activate field and select applet", + "-k, -K, --keep Keep field for next command", + "-a, -A, --apdu Show APDU requests and responses", + "-t, -T, --tlv TLV decode results", + "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "--aid Applet ID to select. By default A0000003080000100 will be used" ], - "usage": "hf thinfilm info [-h]" + "usage": "piv select [-hskatw] [--aid ]" }, "nfc barcode sim": { "command": "nfc barcode sim", @@ -11165,9 +11240,9 @@ ], "usage": "hf thinfilm sim [-h] -d [--raw]" }, - "nfc decode": { - "command": "nfc decode", - "description": "Decode and print NFC Data Exchange Format (NDEF) You must provide either data in hex or a filename, but not both", + "nfc help": { + "command": "nfc help", + "description": "-------- --------------------- NFC Tags -------------------- type1 { NFC Forum Tag Type 1... } type2 { NFC Forum Tag Type 2... } type4a { NFC Forum Tag Type 4 ISO14443A... } type4b { NFC Forum Tag Type 4 ISO14443B... } mf { NFC Type MIFARE Classic/Plus Tag... } barcode { NFC Barcode Tag... } -------- --------------------- General --------------------- help This help decode Decode NDEF records --------------------------------------------------------------------------------------- nfc decode available offline: yes Decode and print NFC Data Exchange Format (NDEF) You must provide either data in hex or a filename, but not both", "notes": [ "nfc decode -d 9101085402656e48656c6c6f5101085402656e576f726c64", "nfc decode -d 0103d020240203e02c040300fe", @@ -11182,25 +11257,6 @@ ], "usage": "nfc decode [-hv] [-d ] [-f ]" }, - "nfc mf cformat": { - "command": "nfc mf cformat", - "description": "format MIFARE Classic Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write. If not, it will try finding a key file based on your UID. ie, if you ran autopwn before", - "notes": [ - "hf mf ndefformat", - "hf mf ndefformat --1k -> MIFARE Classic 1k", - "hf mf ndefformat --keys hf-mf-01020304-key.bin -> MIFARE 1k with keys from specified file" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-k, --keys filename of keys", - "--mini MIFARE Classic Mini / S20", - "--1k MIFARE Classic 1k / S50 (def)", - "--2k MIFARE Classic/Plus 2k", - "--4k MIFARE Classic 4k / S70" - ], - "usage": "hf mf ndefformat [-h] [-k ] [--mini] [--1k] [--2k] [--4k]" - }, "nfc mf cread": { "command": "nfc mf cread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -11243,6 +11299,18 @@ ], "usage": "hf mf ndefwrite [-hpv] [-d ] [-f ] [--mini] [--1k] [--2k] [--4k]" }, + "nfc mf help": { + "command": "nfc mf help", + "description": "-------- --------- NFC Type MIFARE Classic/Plus Tag -------- -------- --------------------- General --------------------- help This help ======================================================================================= nfc barcode { NFC Barcode Tag... } --------------------------------------------------------------------------------------- nfc barcode read available offline: no Get info from Thinfilm tags", + "notes": [ + "hf thinfilm info" + ], + "offline": true, + "options": [ + "-h, --help This help" + ], + "usage": "hf thinfilm info [-h]" + }, "nfc mf pread": { "command": "nfc mf pread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -11263,6 +11331,23 @@ ], "usage": "hf mfp ndefread [-hvb] [--aid ] [-k ] [-f ]" }, + "nfc type1 help": { + "command": "nfc type1 help", + "description": "-------- -------------- NFC Forum Tag Type 1 --------------- -------- --------------------- General --------------------- help This help ======================================================================================= nfc type2 { NFC Forum Tag Type 2... } --------------------------------------------------------------------------------------- nfc type2 read available offline: no Prints NFC Data Exchange Format (NDEF)", + "notes": [ + "hf mfu ndefread -> shows NDEF data", + "hf mfu ndefread -k ffffffff -> shows NDEF data with key", + "hf mfu ndefread -f myfilename -> save raw NDEF to file" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-l Swap entered key's endianness", + "-f, --file Save raw NDEF to file", + "-v, --verbose show technical data" + ], + "usage": "hf mfu ndefread [-hlv] [-k Replace default key for NDEF] [-f ]" + }, "nfc type1 read": { "command": "nfc type1 read", "description": "Get info from Topaz tags", @@ -11278,36 +11363,34 @@ ], "usage": "hf topaz info [-hv] [-f ]" }, - "nfc type2 read": { - "command": "nfc type2 read", - "description": "Prints NFC Data Exchange Format (NDEF)", - "notes": [ - "hf mfu ndefread -> shows NDEF data", - "hf mfu ndefread -k ffffffff -> shows NDEF data with key", - "hf mfu ndefread -f myfilename -> save raw NDEF to file" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-l Swap entered key's endianness", - "-f, --file Save raw NDEF to file", - "-v, --verbose show technical data" - ], - "usage": "hf mfu ndefread [-hlv] [-k Replace default key for NDEF] [-f ]" - }, - "nfc type4a format": { - "command": "nfc type4a format", - "description": "Format ISO14443-a Tag as a NFC tag with Data Exchange Format (NDEF)", + "nfc type2 help": { + "command": "nfc type2 help", + "description": "-------- -------------- NFC Forum Tag Type 2 --------------- -------- --------------------- General --------------------- help This help ======================================================================================= nfc type4a { NFC Forum Tag Type 4 ISO14443A... } --------------------------------------------------------------------------------------- nfc type4a format available offline: no Format ISO14443-a Tag as a NFC tag with Data Exchange Format (NDEF)", "notes": [ "hf 14a ndefformat" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", "-v, --verbose show technical data" ], "usage": "hf 14a ndefformat [-hv]" }, + "nfc type4a help": { + "command": "nfc type4a help", + "description": "-------- --------- NFC Forum Tag Type 4 ISO14443A ---------- -------- --------------------- General --------------------- help This help ======================================================================================= nfc type4b { NFC Forum Tag Type 4 ISO14443B... } --------------------------------------------------------------------------------------- nfc type4b read available offline: no Print NFC Data Exchange Format (NDEF)", + "notes": [ + "hf 14b ndefread", + "hf 14b ndefread -f myfilename -> save raw NDEF to file" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-f, --file save raw NDEF to file", + "-v, --verbose show technical data" + ], + "usage": "hf 14b ndefread [-hv] [-f ]" + }, "nfc type4a read": { "command": "nfc type4a read", "description": "Read NFC Data Exchange Format (NDEF) file on Type 4 NDEF tag", @@ -11357,20 +11440,24 @@ ], "usage": "hf 14a ndefwrite [-hpv] [-d ] [-f ]" }, - "nfc type4b read": { - "command": "nfc type4b read", - "description": "Print NFC Data Exchange Format (NDEF)", + "nfc type4b help": { + "command": "nfc type4b help", + "description": "-------- --------- NFC Forum Tag Type 4 ISO14443B ------------- -------- --------------------- General --------------------- help This help ======================================================================================= nfc mf { NFC Type MIFARE Classic/Plus Tag... } --------------------------------------------------------------------------------------- nfc mf cformat available offline: no format MIFARE Classic Tag as a NFC tag with Data Exchange Format (NDEF) If no given, UID will be used as filename. It will try default keys and MAD keys to detect if tag is already formatted in order to write. If not, it will try finding a key file based on your UID. ie, if you ran autopwn before", "notes": [ - "hf 14b ndefread", - "hf 14b ndefread -f myfilename -> save raw NDEF to file" + "hf mf ndefformat", + "hf mf ndefformat --1k -> MIFARE Classic 1k", + "hf mf ndefformat --keys hf-mf-01020304-key.bin -> MIFARE 1k with keys from specified file" ], - "offline": false, + "offline": true, "options": [ "-h, --help This help", - "-f, --file save raw NDEF to file", - "-v, --verbose show technical data" + "-k, --keys filename of keys", + "--mini MIFARE Classic Mini / S20", + "--1k MIFARE Classic 1k / S50 (def)", + "--2k MIFARE Classic/Plus 2k", + "--4k MIFARE Classic 4k / S70" ], - "usage": "hf 14b ndefread [-hv] [-f ]" + "usage": "hf mf ndefformat [-h] [-k ] [--mini] [--1k] [--2k] [--4k]" }, "piv authsign": { "command": "piv authsign", @@ -11453,25 +11540,6 @@ ], "usage": "piv scan [-hskatw] [--aid ]" }, - "piv select": { - "command": "piv select", - "description": "Executes select applet command", - "notes": [ - "piv select -s -> select card, select applet", - "piv select -st --aid a00000030800001000 -> select card, select applet a00000030800001000, show result in TLV" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-s, -S, --select Activate field and select applet", - "-k, -K, --keep Keep field for next command", - "-a, -A, --apdu Show APDU requests and responses", - "-t, -T, --tlv TLV decode results", - "-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", - "--aid Applet ID to select. By default A0000003080000100 will be used" - ], - "usage": "piv select [-hskatw] [--aid ]" - }, "prefs get barmode": { "command": "prefs get barmode", "description": "Get preference of HF/LF tune command styled output in the client", @@ -11592,20 +11660,17 @@ ], "usage": "prefs get savepaths [-h]" }, - "prefs set barmode": { - "command": "prefs set barmode", - "description": "Set persistent preference of HF/LF tune command styled output in the client", + "prefs help": { + "command": "prefs help", + "description": "help This help get { Get a preference } set { Set a preference } show Show all preferences --------------------------------------------------------------------------------------- prefs show available offline: yes Show all persistent preferences", "notes": [ - "prefs set barmode --mix" + "prefs show" ], "offline": true, "options": [ - "-h, --help This help", - "--bar measured values as bar only", - "--mix measured values as numbers and bar", - "--val measured values only" + "-h, --help This help" ], - "usage": "prefs set barmode [-h] [--bar] [--mix] [--val]" + "usage": "prefs show [-h]" }, "prefs set client.debug": { "command": "prefs set client.debug", @@ -11681,6 +11746,21 @@ ], "usage": "prefs set emoji [-h] [--alias] [--emoji] [--alttext] [--none]" }, + "prefs set help": { + "command": "prefs set help", + "description": "help This help barmode Set bar mode client.debug Set client debug level client.delay Set client execution delay client.timeout Set client communication timeout color Set color support emoji Set emoji display hints Set hint display savepaths ... to be adjusted next ... output Set dump output style plotsliders Set plot slider display --------------------------------------------------------------------------------------- prefs set barmode available offline: yes Set persistent preference of HF/LF tune command styled output in the client", + "notes": [ + "prefs set barmode --mix" + ], + "offline": true, + "options": [ + "-h, --help This help", + "--bar measured values as bar only", + "--mix measured values as numbers and bar", + "--val measured values only" + ], + "usage": "prefs set barmode [-h] [--bar] [--mix] [--val]" + }, "prefs set hints": { "command": "prefs set hints", "description": "Set persistent preference of showing hint messages in the client", @@ -11741,18 +11821,6 @@ ], "usage": "prefs set savepaths [-hc] [--def ] [--dump ] [--trace ]" }, - "prefs show": { - "command": "prefs show", - "description": "Show all persistent preferences", - "notes": [ - "prefs show" - ], - "offline": true, - "options": [ - "-h, --help This help" - ], - "usage": "prefs show [-h]" - }, "quit": { "command": "quit", "description": "Quit the Proxmark3 client terminal", @@ -11817,22 +11885,9 @@ ], "usage": "smart brute [-ht]" }, - "smart info": { - "command": "smart info", - "description": "Extract more detailed information from smart card.", - "notes": [ - "smart info -v" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-v, --verbose verbose output" - ], - "usage": "smart info [-hv]" - }, - "smart list": { - "command": "smart list", - "description": "Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "smart help": { + "command": "smart help", + "description": "help This help list List ISO 7816 history upgrade Upgrade sim module firmware --------------------------------------------------------------------------------------- smart list available offline: yes Alias of `trace list -t 7816` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "smart list --frame -> show frame delay times", "smart list -1 -> use trace buffer" @@ -11851,6 +11906,19 @@ ], "usage": "smart list [-h1crux] [--frame] [-f ]" }, + "smart info": { + "command": "smart info", + "description": "Extract more detailed information from smart card.", + "notes": [ + "smart info -v" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-v, --verbose verbose output" + ], + "usage": "smart info [-hv]" + }, "smart raw": { "command": "smart raw", "description": "Sends raw bytes to card", @@ -11917,9 +11985,9 @@ ], "usage": "smart setclock [-h] [--16mhz] [--8mhz] [--4mhz]" }, - "trace extract": { - "command": "trace extract", - "description": "Extracts protocol authentication challenges from trace buffer", + "trace help": { + "command": "trace help", + "description": "help This help extract Extract authentication challenges found in trace list List protocol data in trace buffer load Load trace from file save Save trace buffer to file --------------------------------------------------------------------------------------- trace extract available offline: yes Extracts protocol authentication challenges from trace buffer", "notes": [ "trace extract", "trace extract -1" @@ -12014,19 +12082,6 @@ ], "usage": "usart btfactory [-h]" }, - "usart btpin": { - "command": "usart btpin", - "description": "Change BT add-on PIN. WARNING: this requires 1) BTpower to be turned ON 2) BT add-on to NOT be connected => the add-on blue LED must blink", - "notes": [ - "usart btpin -p 1234" - ], - "offline": false, - "options": [ - "-h, --help This help", - "-p, --pin Desired PIN number (4 digits)" - ], - "usage": "usart btpin [-h] -p " - }, "usart config": { "command": "usart config", "description": "Configure USART. WARNING: it will have side-effects if used in USART HOST mode! The changes are not permanent, restart Proxmark3 to get default settings back.", @@ -12045,6 +12100,19 @@ ], "usage": "usart config [-hNEO] [-b ]" }, + "usart help": { + "command": "usart help", + "description": "help This help --------------------------------------------------------------------------------------- usart btpin available offline: no Change BT add-on PIN. WARNING: this requires 1) BTpower to be turned ON 2) BT add-on to NOT be connected => the add-on blue LED must blink", + "notes": [ + "usart btpin -p 1234" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-p, --pin Desired PIN number (4 digits)" + ], + "usage": "usart btpin [-h] -p " + }, "usart rx": { "command": "usart rx", "description": "Receive string over USART. WARNING: it will have side-effects if used in USART HOST mode!", @@ -12146,9 +12214,9 @@ ], "usage": "wiegand encode [-h] [--fc ] --cn [--issue ] [--oem ] [-w ] [--pre]" }, - "wiegand list": { - "command": "wiegand list", - "description": "List available wiegand formats", + "wiegand help": { + "command": "wiegand help", + "description": "help This help list List available wiegand formats encode Encode to wiegand raw hex (currently for HID Prox) decode Convert raw hex to decoded wiegand format (currently for HID Prox) --------------------------------------------------------------------------------------- wiegand list available offline: yes List available wiegand formats", "notes": [ "wiegand list" ], @@ -12160,8 +12228,8 @@ } }, "metadata": { - "commands_extracted": 703, + "commands_extracted": 706, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2024-01-04T12:13:24" + "extracted_on": "2024-01-15T12:04:30" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 8478e3205..83a968779 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -241,6 +241,7 @@ Check column "offline" for their availability. |`hf 15 restore `|N |`Restore from file to all memory pages of an ISO-15693 tag` |`hf 15 samples `|N |`Acquire samples as reader (enables carrier, sends inquiry)` |`hf 15 view `|Y |`Display content from tag dump file` +|`hf 15 wipe `|N |`Wipe card to zeros` |`hf 15 wrbl `|N |`Write a block` |`hf 15 sim `|N |`Fake an ISO-15693 tag` |`hf 15 eload `|N |`Load image file into emulator to be used by 'sim' command` @@ -314,11 +315,11 @@ Check column "offline" for their availability. |------- |------- |----------- |`hf felica help `|Y |`This help` |`hf felica list `|Y |`List ISO 18092/FeliCa history` -|`hf felica reader `|N |`Act like an ISO18092/FeliCa reader` |`hf felica info `|N |`Tag information` -|`hf felica sniff `|N |`Sniff ISO 18092/FeliCa traffic` |`hf felica raw `|N |`Send raw hex data to tag` |`hf felica rdbl `|N |`read block data from authentication-not-required Service.` +|`hf felica reader `|N |`Act like an ISO18092/FeliCa reader` +|`hf felica sniff `|N |`Sniff ISO 18092/FeliCa traffic` |`hf felica wrbl `|N |`write block data to an authentication-not-required Service.` |`hf felica rqservice `|N |`verify the existence of Area and Service, and to acquire Key Version.` |`hf felica rqresponse `|N |`verify the existence of a card and its Mode.` @@ -761,7 +762,7 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf waveshare help `|Y |`This help` -|`hf waveshare loadbmp `|N |`Load BMP file to Waveshare NFC ePaper` +|`hf waveshare load `|Y |`Load image file to Waveshare NFC ePaper` ### hf xerox @@ -771,9 +772,11 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf xerox help `|Y |`This help` +|`hf xerox list `|Y |`List ISO-14443B history` |`hf xerox info `|N |`Short info on Fuji/Xerox tag` -|`hf xerox reader `|N |`Act like a Fuji/Xerox reader` |`hf xerox dump `|N |`Read all memory pages of an Fuji/Xerox tag, save to file` +|`hf xerox reader `|N |`Act like a Fuji/Xerox reader` +|`hf xerox view `|Y |`Display content from tag dump file` ### hw