mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-13 18:17:25 -07:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
bff380ad9c
25 changed files with 51 additions and 34 deletions
client
cmdlf.ccmdlfawid.ccmdlfem4x.ccmdlffdx.ccmdlfgallagher.ccmdlfguard.ccmdlfhid.ccmdlfindala.ccmdlfio.ccmdlfkeri.ccmdlfmotorola.ccmdlfnedap.ccmdlfnexwatch.ccmdlfnoralsy.ccmdlfpac.ccmdlfparadox.ccmdlfpcf7931.ccmdlfpresco.ccmdlfpyramid.ccmdlfsecurakey.ccmdlfti.ccmdlfverichip.ccmdlfviking.ccmdlfvisa2000.ccmdmain.c
|
@ -1189,7 +1189,7 @@ static bool CheckChipType(bool getDeviceData) {
|
|||
uint32_t word = 0;
|
||||
if (EM4x05IsBlock0(&word)) {
|
||||
PrintAndLogEx(SUCCESS, "Chipset detection: " _GREEN_("EM4x05/EM4x69"));
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf em 4x05`") "commands");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 4x05`") "commands");
|
||||
retval = true;
|
||||
goto out;
|
||||
}
|
||||
|
@ -1197,7 +1197,7 @@ static bool CheckChipType(bool getDeviceData) {
|
|||
//check for t55xx chip...
|
||||
if (tryDetectP1(true)) {
|
||||
PrintAndLogEx(SUCCESS, "Chipset detection: " _GREEN_("T55xx"));
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf t55xx`") "commands");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf t55xx`") "commands");
|
||||
retval = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -424,7 +424,7 @@ static int CmdAWIDClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf awid read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf awid read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -701,7 +701,7 @@ static int CmdEM410xWrite(const char *Cmd) {
|
|||
|
||||
SendCommandMIX(CMD_LF_EM410X_WRITE, card, (uint32_t)(id >> 32), (uint32_t)id, NULL, 0);
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf em 410x_read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 410x_read`") "to verify");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -1041,7 +1041,7 @@ static int CmdEM4x50Write(const char *Cmd) {
|
|||
PrintAndLogEx(NORMAL, "no implemented yet");
|
||||
//
|
||||
// PrintAndLogEx(SUCCESS, "Done");
|
||||
// PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf em 4x50_read`") "to verify");
|
||||
// PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 4x50_read`") "to verify");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -1442,7 +1442,7 @@ static int CmdEM4x05Write(const char *Cmd) {
|
|||
PrintAndLogEx(SUCCESS, "Success writing to tag");
|
||||
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf em 4x05_read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 4x05_read`") "to verify");
|
||||
return status;
|
||||
}
|
||||
static int CmdEM4x05Wipe(const char *Cmd) {
|
||||
|
|
|
@ -303,7 +303,7 @@ static int CmdFdxClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf fdx read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf fdx read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ static int CmdGallagherClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf gallagher read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf gallagher read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -189,7 +189,7 @@ static int CmdGuardClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf gprox read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf gprox read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -348,7 +348,7 @@ static int CmdHIDClone(const char *Cmd) {
|
|||
clearCommandBuffer();
|
||||
SendCommandMIX(CMD_LF_HID_CLONE, hi2, hi, lo, longid, sizeof(longid));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf hid read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf hid read`") "to verify");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@ static int CmdIndalaDemod(const char *Cmd) {
|
|||
checksum |= DemodBuffer[63] << 0; // b1
|
||||
|
||||
PrintAndLogEx(NORMAL, "");
|
||||
PrintAndLogEx(SUCCESS, "Fmt 26 bit FC " _YELLOW_("%u") ", CN " _YELLOW_("%u") ", checksum %1d%1d"
|
||||
PrintAndLogEx(SUCCESS, "Fmt 26 bit FC " _YELLOW_("%u") ", CN " _YELLOW_("%u") ", checksum " _YELLOW_("%1d%1d")
|
||||
, fc
|
||||
, csn
|
||||
, checksum >> 1 & 0x01
|
||||
|
@ -505,6 +505,7 @@ static int CmdIndalaSim(const char *Cmd) {
|
|||
uint8_t hexuid[100];
|
||||
int len = 0;
|
||||
param_gethex_ex(Cmd, 0, hexuid, &len);
|
||||
|
||||
if (len > 28)
|
||||
return usage_lf_indala_sim();
|
||||
|
||||
|
@ -670,7 +671,7 @@ static int CmdIndalaClone(const char *Cmd) {
|
|||
print_blocks(blocks, max);
|
||||
int res = clone_t55xx_tag(blocks, max);
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf indala read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf indala read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -749,6 +750,11 @@ int getIndalaBits(uint8_t fc, uint16_t cn, uint8_t *bits) {
|
|||
bits[62] = 1;
|
||||
bits[63] = 0;
|
||||
}
|
||||
|
||||
// add parity
|
||||
bits[34] = 1; // p1 64 - 30 = 34
|
||||
bits[38] = 1; // p2 68 - 30 = 38
|
||||
|
||||
// 92 = 62
|
||||
// 93 = 63
|
||||
|
||||
|
|
|
@ -277,7 +277,7 @@ static int CmdIOProxClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf io read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf io read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -282,7 +282,7 @@ static int CmdKeriClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf keri read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf keri read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -179,7 +179,7 @@ static int CmdMotorolaClone(const char *Cmd) {
|
|||
print_blocks(blocks, ARRAYLEN(blocks));
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf motorola read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf motorola read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -476,7 +476,7 @@ static int CmdLFNedapClone(const char *Cmd) {
|
|||
PrintAndLogEx(NORMAL, "");
|
||||
}
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf nedap read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf nedap read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@ static int CmdNexWatchClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf nexwatch read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf nexwatch read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ static int CmdNoralsyClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf noralsy read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf noralsy read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -241,7 +241,7 @@ static int CmdPacClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf pac read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf pac read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ static int CmdParadoxClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf paradox read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf paradox read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ static int CmdLFPCF7931Write(const char *Cmd) {
|
|||
SendCommandMIX(CMD_LF_PCF7931_WRITE, block, bytepos, data, buf, sizeof(buf));
|
||||
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf pcf7931 read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf pcf7931 read`") "to verify");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ static int CmdPrescoClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf presco read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf presco read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -252,7 +252,7 @@ static int CmdPyramidClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf pyramid read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf pyramid read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ static int CmdSecurakeyClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf securakey read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf securakey read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -297,7 +297,7 @@ static int CmdTIWrite(const char *Cmd) {
|
|||
clearCommandBuffer();
|
||||
SendCommandMIX(CMD_LF_TI_WRITE, arg0, arg1, arg2, NULL, 0);
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf ti read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf ti read`") "to verify");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ static int CmdVerichipClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf verichip read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf verichip read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ static int CmdVikingClone(const char *Cmd) {
|
|||
return PM3_ETIMEOUT;
|
||||
}
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf viking read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf viking read`") "to verify");
|
||||
return resp.status;
|
||||
}
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ static int CmdVisa2kClone(const char *Cmd) {
|
|||
|
||||
int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks));
|
||||
PrintAndLogEx(SUCCESS, "Done");
|
||||
PrintAndLogEx(INFO, "Hint: try " _YELLOW_("`lf visa2000 read`") "to verify");
|
||||
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf visa2000 read`") "to verify");
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -194,20 +194,31 @@ int CmdRem(const char *Cmd) {
|
|||
static int CmdHints(const char *Cmd) {
|
||||
uint32_t ms = 0;
|
||||
char ctmp = tolower(param_getchar(Cmd, 0));
|
||||
if (ctmp == 'h') return usage_hints();
|
||||
if (ctmp == 'h') return usage_hints();
|
||||
|
||||
if (strlen(Cmd) < 1) {
|
||||
PrintAndLogEx(INFO, "Hints are %s", (g_showhints) ? "ON" : "OFF");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
||||
if (param_getchar(Cmd, 0) != 0x00) {
|
||||
ms = param_get32ex(Cmd, 0, 0, 10);
|
||||
if (ms == 0)
|
||||
if (strlen(Cmd) > 1){
|
||||
str_lower((char *)Cmd);
|
||||
if (str_startswith(Cmd, "of")) {
|
||||
g_showhints = false;
|
||||
else
|
||||
g_showhints = true;
|
||||
} else {
|
||||
g_showhints = true;
|
||||
}
|
||||
} else {
|
||||
if (param_getchar(Cmd, 0) != 0x00) {
|
||||
ms = param_get32ex(Cmd, 0, 0, 10);
|
||||
if (ms == 0) {
|
||||
g_showhints = false;
|
||||
} else {
|
||||
g_showhints = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PrintAndLogEx(INFO, "Hints are %s", (g_showhints) ? "ON" : "OFF");
|
||||
return PM3_SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue