mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-15 19:59:34 +08:00
ADD: @marshmellow fix for em41x clock.
CHG: swap the int to a uint8_t to skip a compiler error
This commit is contained in:
parent
7c5f2ced5b
commit
bca7107931
1 changed files with 13 additions and 19 deletions
|
@ -73,22 +73,23 @@ int CmdEM410xSim(const char *Cmd)
|
||||||
uint8_t uid[5] = {0x00};
|
uint8_t uid[5] = {0x00};
|
||||||
|
|
||||||
if (cmdp == 'h' || cmdp == 'H') {
|
if (cmdp == 'h' || cmdp == 'H') {
|
||||||
PrintAndLog("Usage: lf em4x em410xsim <UID>");
|
PrintAndLog("Usage: lf em4x em410xsim <UID> <clock>");
|
||||||
PrintAndLog("");
|
PrintAndLog("");
|
||||||
PrintAndLog(" sample: lf em4x em410xsim 0F0368568B");
|
PrintAndLog(" sample: lf em4x em410xsim 0F0368568B");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* clock is 64 in EM410x tags */
|
||||||
|
uint8_t clock = 64;
|
||||||
|
|
||||||
if (param_gethex(Cmd, 0, uid, 10)) {
|
if (param_gethex(Cmd, 0, uid, 10)) {
|
||||||
PrintAndLog("UID must include 10 HEX symbols");
|
PrintAndLog("UID must include 10 HEX symbols");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
param_getdec(Cmd, 1, &clock);
|
||||||
|
|
||||||
PrintAndLog("Starting simulating UID %02X%02X%02X%02X%02X", uid[0],uid[1],uid[2],uid[3],uid[4]);
|
PrintAndLog("Starting simulating UID %02X%02X%02X%02X%02X clock: %d", uid[0],uid[1],uid[2],uid[3],uid[4],clock);
|
||||||
PrintAndLog("Press pm3-button to about simulation");
|
PrintAndLog("Press pm3-button to about simulation");
|
||||||
|
|
||||||
/* clock is 64 in EM410x tags */
|
|
||||||
int clock = 64;
|
|
||||||
|
|
||||||
/* clear our graph */
|
/* clear our graph */
|
||||||
ClearGraph(0);
|
ClearGraph(0);
|
||||||
|
@ -197,21 +198,13 @@ int CmdEM410xWrite(const char *Cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check Clock
|
// Check Clock
|
||||||
if (card == 1)
|
|
||||||
{
|
|
||||||
// Default: 64
|
// Default: 64
|
||||||
if (clock == 0)
|
if (clock == 0)
|
||||||
clock = 64;
|
clock = 64;
|
||||||
|
|
||||||
// Allowed clock rates: 16, 32 and 64
|
// Allowed clock rates: 16, 32, 40 and 64
|
||||||
if ((clock != 16) && (clock != 32) && (clock != 64)) {
|
if ((clock != 16) && (clock != 32) && (clock != 64) && (clock != 40)) {
|
||||||
PrintAndLog("Error! Clock rate %d not valid. Supported clock rates are 16, 32 and 64.\n", clock);
|
PrintAndLog("Error! Clock rate %d not valid. Supported clock rates are 16, 32, 40 and 64.\n", clock);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (clock != 0)
|
|
||||||
{
|
|
||||||
PrintAndLog("Error! Clock rate is only supported on T55x7 tags.\n");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,17 +214,18 @@ int CmdEM410xWrite(const char *Cmd)
|
||||||
// provide for backwards-compatibility for older firmware, and to avoid
|
// provide for backwards-compatibility for older firmware, and to avoid
|
||||||
// having to add another argument to CMD_EM410X_WRITE_TAG, we just store
|
// having to add another argument to CMD_EM410X_WRITE_TAG, we just store
|
||||||
// the clock rate in bits 8-15 of the card value
|
// the clock rate in bits 8-15 of the card value
|
||||||
card = (card & 0xFF) | (((uint64_t)clock << 8) & 0xFF00);
|
card = (card & 0xFF) | ((clock << 8) & 0xFF00);
|
||||||
}
|
} else if (card == 0) {
|
||||||
else if (card == 0)
|
|
||||||
PrintAndLog("Writing %s tag with UID 0x%010" PRIx64, "T5555", id, clock);
|
PrintAndLog("Writing %s tag with UID 0x%010" PRIx64, "T5555", id, clock);
|
||||||
else {
|
card = (card & 0xFF) | ((clock << 8) & 0xFF00);
|
||||||
|
} else {
|
||||||
PrintAndLog("Error! Bad card type selected.\n");
|
PrintAndLog("Error! Bad card type selected.\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
UsbCommand c = {CMD_EM410X_WRITE_TAG, {card, (uint32_t)(id >> 32), (uint32_t)id}};
|
UsbCommand c = {CMD_EM410X_WRITE_TAG, {card, (uint32_t)(id >> 32), (uint32_t)id}};
|
||||||
SendCommand(&c);
|
SendCommand(&c);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue