diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 5c25db64c..4f52df9ac 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -967,9 +967,10 @@ void pm3_version(bool verbose, bool oneliner) { # define PM3HOSTARCH " ARCH:unknown" #endif + char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image + if (oneliner) { // For "proxmark3 -v", simple printf, avoid logging - char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image FormatVersionInformation(temp, sizeof(temp), "Client: ", &g_version_information); PrintAndLogEx(NORMAL, "%s compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH "\n", temp); return; @@ -978,63 +979,65 @@ void pm3_version(bool verbose, bool oneliner) { if (!verbose) return; - PacketResponseNG resp; - clearCommandBuffer(); - SendCommandNG(CMD_VERSION, NULL, 0); - - if (WaitForResponseTimeout(CMD_VERSION, &resp, 1000)) { - char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image - PrintAndLogEx(NORMAL, "\n [ " _CYAN_("Proxmark3 RFID instrument") " ]"); - PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("CLIENT") " ]"); - FormatVersionInformation(temp, sizeof(temp), " client: ", &g_version_information); - PrintAndLogEx(NORMAL, "%s", temp); - PrintAndLogEx(NORMAL, " compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH); + PrintAndLogEx(NORMAL, "\n [ " _CYAN_("Proxmark3 RFID instrument") " ]"); + PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("CLIENT") " ]"); + FormatVersionInformation(temp, sizeof(temp), " client: ", &g_version_information); + PrintAndLogEx(NORMAL, "%s", temp); + PrintAndLogEx(NORMAL, " compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH); + if (g_session.pm3_present) { PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("PROXMARK3") " ]"); - if (IfPm3Rdv4Fw()) { - bool is_genuine_rdv4 = false; - // validate signature data - rdv40_validation_t mem; - if (rdv4_get_signature(&mem) == PM3_SUCCESS) { - if (rdv4_validate(&mem) == PM3_SUCCESS) { - is_genuine_rdv4 = true; + PacketResponseNG resp; + clearCommandBuffer(); + SendCommandNG(CMD_VERSION, NULL, 0); + + if (WaitForResponseTimeout(CMD_VERSION, &resp, 1000)) { + if (IfPm3Rdv4Fw()) { + + bool is_genuine_rdv4 = false; + // validate signature data + rdv40_validation_t mem; + if (rdv4_get_signature(&mem) == PM3_SUCCESS) { + if (rdv4_validate(&mem) == PM3_SUCCESS) { + is_genuine_rdv4 = true; + } + } + + PrintAndLogEx(NORMAL, " device.................... %s", (is_genuine_rdv4) ? _GREEN_("RDV4") : _RED_("device / fw mismatch")); + PrintAndLogEx(NORMAL, " firmware.................. %s", (is_genuine_rdv4) ? _GREEN_("RDV4") : _YELLOW_("RDV4")); + PrintAndLogEx(NORMAL, " external flash............ %s", IfPm3Flash() ? _GREEN_("present") : _YELLOW_("absent")); + PrintAndLogEx(NORMAL, " smartcard reader.......... %s", IfPm3Smartcard() ? _GREEN_("present") : _YELLOW_("absent")); + PrintAndLogEx(NORMAL, " FPC USART for BT add-on... %s", IfPm3FpcUsartHost() ? _GREEN_("present") : _YELLOW_("absent")); + } else { + PrintAndLogEx(NORMAL, " firmware.................. %s", _YELLOW_("PM3 GENERIC")); + if (IfPm3FpcUsartHost()) { + PrintAndLogEx(NORMAL, " FPC USART for BT add-on... %s", _GREEN_("present")); } } - PrintAndLogEx(NORMAL, " device.................... %s", (is_genuine_rdv4) ? _GREEN_("RDV4") : _RED_("device / fw mismatch")); - PrintAndLogEx(NORMAL, " firmware.................. %s", (is_genuine_rdv4) ? _GREEN_("RDV4") : _YELLOW_("RDV4")); - PrintAndLogEx(NORMAL, " external flash............ %s", IfPm3Flash() ? _GREEN_("present") : _YELLOW_("absent")); - PrintAndLogEx(NORMAL, " smartcard reader.......... %s", IfPm3Smartcard() ? _GREEN_("present") : _YELLOW_("absent")); - PrintAndLogEx(NORMAL, " FPC USART for BT add-on... %s", IfPm3FpcUsartHost() ? _GREEN_("present") : _YELLOW_("absent")); - } else { - PrintAndLogEx(NORMAL, " firmware.................. %s", _YELLOW_("PM3 GENERIC")); - if (IfPm3FpcUsartHost()) { - PrintAndLogEx(NORMAL, " FPC USART for BT add-on... %s", _GREEN_("present")); + if (IfPm3FpcUsartDevFromUsb()) { + PrintAndLogEx(NORMAL, " FPC USART for developer... %s", _GREEN_("present")); } + + PrintAndLogEx(NORMAL, ""); + + struct p { + uint32_t id; + uint32_t section_size; + uint32_t versionstr_len; + char versionstr[PM3_CMD_DATA_SIZE - 12]; + } PACKED; + + struct p *payload = (struct p *)&resp.data.asBytes; + + PrintAndLogEx(NORMAL, payload->versionstr); + if (strstr(payload->versionstr, "2s30vq100") == NULL) { + PrintAndLogEx(NORMAL, " FPGA firmware... %s", _RED_("chip mismatch")); + } + + lookupChipID(payload->id, payload->section_size); } - - if (IfPm3FpcUsartDevFromUsb()) { - PrintAndLogEx(NORMAL, " FPC USART for developer... %s", _GREEN_("present")); - } - - PrintAndLogEx(NORMAL, ""); - - struct p { - uint32_t id; - uint32_t section_size; - uint32_t versionstr_len; - char versionstr[PM3_CMD_DATA_SIZE - 12]; - } PACKED; - - struct p *payload = (struct p *)&resp.data.asBytes; - - PrintAndLogEx(NORMAL, payload->versionstr); - if (strstr(payload->versionstr, "2s30vq100") == NULL) { - PrintAndLogEx(NORMAL, " FPGA firmware... %s", _RED_("chip mismatch")); - } - - lookupChipID(payload->id, payload->section_size); } PrintAndLogEx(NORMAL, ""); } diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 8cecd9c71..0ebb35cd8 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -250,13 +250,11 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { bool stdinOnPipe = !isatty(STDIN_FILENO); char script_cmd_buf[256] = {0x00}; // iceman, needs lua script the same file_path_buffer as the rest - if (g_session.pm3_present) { - // cache Version information now: - if (execCommand || script_cmds_file || stdinOnPipe) - pm3_version(false, false); - else - pm3_version(true, false); - } + // cache Version information now: + if (execCommand || script_cmds_file || stdinOnPipe) + pm3_version(false, false); + else + pm3_version(true, false); if (script_cmds_file) {