mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
ADD: added a Q5 parameter for "lf t55xx wipe",
the default config blocks is: t55x7 : 000880E0 t5555 (Q5) : 6001F004
This commit is contained in:
parent
fe8042f29a
commit
69e312afe7
2 changed files with 44 additions and 10 deletions
|
@ -166,7 +166,18 @@ int usage_t55xx_bruteforce(){
|
||||||
PrintAndLog("");
|
PrintAndLog("");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
int usage_t55xx_wipe(){
|
||||||
|
PrintAndLog("Usage: lf t55xx wipe [h] [Q5]");
|
||||||
|
PrintAndLog("This commands wipes a tag, fills blocks 1-7 with zeros and a default configuration block");
|
||||||
|
PrintAndLog("Options:");
|
||||||
|
PrintAndLog(" h - this help");
|
||||||
|
PrintAndLog(" Q5 - indicates to use the T555 (Q5) default configuration block");
|
||||||
|
PrintAndLog("");
|
||||||
|
PrintAndLog("Examples:");
|
||||||
|
PrintAndLog(" lf t55xx wipe - wipes a t55x7 tag, config block 0x000880E0");
|
||||||
|
PrintAndLog(" lf t55xx wipe Q5 - wipes a t5555 Q5 tag, config block 0x6001F004");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
static int CmdHelp(const char *Cmd);
|
static int CmdHelp(const char *Cmd);
|
||||||
|
|
||||||
void printT5xxHeader(uint8_t page){
|
void printT5xxHeader(uint8_t page){
|
||||||
|
@ -1307,7 +1318,7 @@ void t55x7_create_config_block( int tagtype ){
|
||||||
switch (tagtype){
|
switch (tagtype){
|
||||||
case 0: snprintf(retStr, sizeof(buf),"%08X - T55X7 Default", T55X7_DEFAULT_CONFIG_BLOCK); break;
|
case 0: snprintf(retStr, sizeof(buf),"%08X - T55X7 Default", T55X7_DEFAULT_CONFIG_BLOCK); break;
|
||||||
case 1: snprintf(retStr, sizeof(buf),"%08X - T55X7 Raw", T55X7_RAW_CONFIG_BLOCK); break;
|
case 1: snprintf(retStr, sizeof(buf),"%08X - T55X7 Raw", T55X7_RAW_CONFIG_BLOCK); break;
|
||||||
//case 2: snprintf(retStr, sizeof(buf),"%08X - Q5 Default", Q5_DEFAULT_CONFIG_BLOCK); break;
|
case 2: snprintf(retStr, sizeof(buf),"%08X - T5555 Q5 Default", T5555_DEFAULT_CONFIG_BLOCK); break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1334,21 +1345,28 @@ int CmdResetRead(const char *Cmd) {
|
||||||
int CmdT55xxWipe(const char *Cmd) {
|
int CmdT55xxWipe(const char *Cmd) {
|
||||||
char writeData[20] = {0};
|
char writeData[20] = {0};
|
||||||
char *ptrData = writeData;
|
char *ptrData = writeData;
|
||||||
|
char cmdp = param_getchar(Cmd, 0);
|
||||||
|
if ( cmdp == 'h' || cmdp == 'H') return usage_t55xx_wipe();
|
||||||
|
|
||||||
|
bool Q5 = (cmdp == 'q' || cmdp == 'Q');
|
||||||
|
|
||||||
|
// Try with the default password to reset block 0
|
||||||
|
// With a pwd should work even if pwd bit not set
|
||||||
PrintAndLog("\nBeginning Wipe of a T55xx tag (assuming the tag is not password protected)\n");
|
PrintAndLog("\nBeginning Wipe of a T55xx tag (assuming the tag is not password protected)\n");
|
||||||
|
|
||||||
|
if ( Q5 ){
|
||||||
|
snprintf(ptrData,sizeof(writeData),"b 0 d 6001F004 p 0");
|
||||||
|
} else {
|
||||||
|
snprintf(ptrData,sizeof(writeData),"b 0 d 000880E0 p 0");
|
||||||
|
}
|
||||||
|
|
||||||
//try with the default password to reset block 0 (with a pwd should work even if pwd bit not set)
|
if (!CmdT55xxWriteBlock(ptrData)) PrintAndLog("Error writing blk 0");
|
||||||
snprintf(ptrData,sizeof(writeData),"b 0 d 000880E0 p 0");
|
|
||||||
|
|
||||||
if (!CmdT55xxWriteBlock(ptrData))
|
|
||||||
PrintAndLog("Error writing blk 0");
|
|
||||||
|
|
||||||
for (uint8_t blk = 1; blk<8; blk++) {
|
for (uint8_t blk = 1; blk<8; blk++) {
|
||||||
|
|
||||||
snprintf(ptrData,sizeof(writeData),"b %d d 0", blk);
|
snprintf(ptrData,sizeof(writeData),"b %d d 0", blk);
|
||||||
|
|
||||||
if (!CmdT55xxWriteBlock(ptrData))
|
if (!CmdT55xxWriteBlock(ptrData)) PrintAndLog("Error writing blk %d", blk);
|
||||||
PrintAndLog("Error writing blk %d", blk);
|
|
||||||
|
|
||||||
memset(writeData,0x00, sizeof(writeData));
|
memset(writeData,0x00, sizeof(writeData));
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,22 @@
|
||||||
#define T55X7_IOPROX_CONFIG_BLOCK 0x00147040 // maxblock 2
|
#define T55X7_IOPROX_CONFIG_BLOCK 0x00147040 // maxblock 2
|
||||||
#define T55X7_bin 0b0010
|
#define T55X7_bin 0b0010
|
||||||
|
|
||||||
|
#define T5555_DEFAULT_CONFIG_BLOCK 0x6001F004 // data rate 64 , ask, manchester, 2 data blocks?
|
||||||
|
enum {
|
||||||
|
T55x7_RAW = 0x00,
|
||||||
|
T55x7_DEFAULT = 0x00,
|
||||||
|
T5555_DEFAULT = 0x01,
|
||||||
|
EM_UNIQUE = 0x0,
|
||||||
|
FDBX = 0x02,
|
||||||
|
HID_26 = 0x03,
|
||||||
|
INDALA_64 = 0x04,
|
||||||
|
INDALA_224 = 0x05,
|
||||||
|
GUARDPROXXII = 0x06,
|
||||||
|
VIKING = 0x07,
|
||||||
|
NORALSYS = 0x08,
|
||||||
|
IOPROX = 0x09,
|
||||||
|
} t55xx_tag;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t bl1;
|
uint32_t bl1;
|
||||||
uint32_t bl2;
|
uint32_t bl2;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue