mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-30 03:28:32 -07:00
removed some commands again
moved internal commands to only build in standalone mode send NACK if DisablePrivacySlixLIso15693 fails
This commit is contained in:
parent
31e4c66f00
commit
3d411bee02
4 changed files with 37 additions and 157 deletions
|
@ -1195,21 +1195,9 @@ void UsbPacketReceived(UsbCommand *c) {
|
||||||
DirectTag15693Command(c->arg[0],c->arg[1],c->arg[2],c->d.asBytes);
|
DirectTag15693Command(c->arg[0],c->arg[1],c->arg[2],c->d.asBytes);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_ISO_15693_SLIX_L_CHANGE_PASS:
|
|
||||||
ChangePassSlixLIso15693(c->arg[0], c->arg[1], c->arg[2]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CMD_ISO_15693_SLIX_L_DISABLE_PRIVACY:
|
case CMD_ISO_15693_SLIX_L_DISABLE_PRIVACY:
|
||||||
DisablePrivacySlixLIso15693(c->arg[0]);
|
DisablePrivacySlixLIso15693(c->arg[0]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_ISO_15693_SLIX_L_LOCK_PASS:
|
|
||||||
LockPassSlixLIso15693(c->arg[0], c->arg[1]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CMD_ISO_15693_BRUTE_FORCE:
|
|
||||||
BruteforceIso15693(c->arg[0], c->arg[1]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CMD_ISO_15693_FIND_AFI:
|
case CMD_ISO_15693_FIND_AFI:
|
||||||
BruteforceIso15693Afi(c->arg[0]);
|
BruteforceIso15693Afi(c->arg[0]);
|
||||||
|
|
|
@ -1821,6 +1821,42 @@ int ReadMemoryIso15693(uint32_t start_time, uint32_t *eof_time, uint8_t bank, ui
|
||||||
return SLIX_ERR_OK;
|
return SLIX_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DisablePrivacySlixLIso15693(uint32_t password) {
|
||||||
|
uint32_t start_time = 0;
|
||||||
|
uint32_t eof_time = 0;
|
||||||
|
|
||||||
|
Dbprintf(" [x] Set password");
|
||||||
|
|
||||||
|
LED_D_ON();
|
||||||
|
Iso15693InitReader();
|
||||||
|
StartCountSspClk();
|
||||||
|
|
||||||
|
switch(SetPassSlixLIso15693(start_time, &eof_time, 4, password)) {
|
||||||
|
case SLIX_ERR_NORESP:
|
||||||
|
Dbprintf(" [i] No tag found");
|
||||||
|
cmd_send(CMD_NACK, 0, 0, 0, NULL, ISO15693_MAX_RESPONSE_LENGTH);
|
||||||
|
LED_C_ON();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case SLIX_ERR_INVPASS:
|
||||||
|
Dbprintf(" [E] Password was not accepted");
|
||||||
|
cmd_send(CMD_NACK, 1, 0, 0, NULL, ISO15693_MAX_RESPONSE_LENGTH);
|
||||||
|
LED_B_ON();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Dbprintf(" [x] Success");
|
||||||
|
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
|
|
||||||
|
cmd_send(CMD_ACK,1,0,0,0,0);
|
||||||
|
LED_A_OFF();
|
||||||
|
LED_B_OFF();
|
||||||
|
LED_C_OFF();
|
||||||
|
LED_D_OFF();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(WITH_ISO15693_StandAlone)
|
||||||
|
|
||||||
void ChangePassSlixLIso15693(uint32_t pass_id, uint32_t old_password, uint32_t password) {
|
void ChangePassSlixLIso15693(uint32_t pass_id, uint32_t old_password, uint32_t password) {
|
||||||
uint8_t uid[8];
|
uint8_t uid[8];
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
@ -2209,38 +2245,6 @@ void LockPassSlixLIso15693(uint32_t pass_id, uint32_t password) {
|
||||||
LED_D_OFF();
|
LED_D_OFF();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisablePrivacySlixLIso15693(uint32_t password) {
|
|
||||||
uint32_t start_time = 0;
|
|
||||||
uint32_t eof_time = 0;
|
|
||||||
|
|
||||||
Dbprintf(" [x] Set password");
|
|
||||||
|
|
||||||
LED_D_ON();
|
|
||||||
Iso15693InitReader();
|
|
||||||
StartCountSspClk();
|
|
||||||
|
|
||||||
switch(SetPassSlixLIso15693(start_time, &eof_time, 4, password)) {
|
|
||||||
case SLIX_ERR_NORESP:
|
|
||||||
Dbprintf(" [i] No tag found");
|
|
||||||
LED_C_ON();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case SLIX_ERR_INVPASS:
|
|
||||||
Dbprintf(" [E] Password was not accepted");
|
|
||||||
LED_B_ON();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Dbprintf(" [x] Success");
|
|
||||||
|
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
|
||||||
|
|
||||||
cmd_send(CMD_ACK,1,0,0,0,0);
|
|
||||||
LED_A_OFF();
|
|
||||||
LED_B_OFF();
|
|
||||||
LED_C_OFF();
|
|
||||||
LED_D_OFF();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void BruteforceIso15693(uint32_t start_cmd, uint32_t end_cmd) {
|
void BruteforceIso15693(uint32_t start_cmd, uint32_t end_cmd) {
|
||||||
uint8_t cmd_buffer[64];
|
uint8_t cmd_buffer[64];
|
||||||
|
@ -2363,7 +2367,7 @@ void BruteforceIso15693(uint32_t start_cmd, uint32_t end_cmd) {
|
||||||
LED_C_OFF();
|
LED_C_OFF();
|
||||||
LED_D_OFF();
|
LED_D_OFF();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize the proxmark as iso15k tag
|
// Initialize the proxmark as iso15k tag
|
||||||
void Iso15693InitTag(void) {
|
void Iso15693InitTag(void) {
|
||||||
|
|
109
client/cmdhf15.c
109
client/cmdhf15.c
|
@ -306,112 +306,6 @@ static int CmdHF15Afi(const char *Cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int CmdHF15SlixChangePass(const char *Cmd)
|
|
||||||
{
|
|
||||||
char cmdp = param_getchar(Cmd, 0);
|
|
||||||
uint8_t old_pass[4] = {0x00};
|
|
||||||
uint8_t new_pass[4] = {0x00};
|
|
||||||
uint8_t pass_id[1] = {0x00};
|
|
||||||
|
|
||||||
if (cmdp == 'h' || cmdp == 'H') {
|
|
||||||
PrintAndLog("Usage: hf 15 slix_change_pass <pass_id> <old_pass> <new_pass>");
|
|
||||||
PrintAndLog("");
|
|
||||||
PrintAndLog(" pass_id 04: privacy, 08: destroy, 10: EAS/AFI");
|
|
||||||
PrintAndLog("");
|
|
||||||
PrintAndLog(" example: hf 15 slix_change_pass 04 00000000 0F0F0F0F");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param_gethex(Cmd, 0, pass_id, 2)) {
|
|
||||||
PrintAndLog("pass_id must have 2 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (param_gethex(Cmd, 1, old_pass, 8)) {
|
|
||||||
PrintAndLog("pass must have 8 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (param_gethex(Cmd, 2, new_pass, 8)) {
|
|
||||||
PrintAndLog("pass must have 8 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
PrintAndLog("Setting new password %02X%02X%02X%02X for ID 0x%02X", new_pass[0], new_pass[1], new_pass[2], new_pass[3], *pass_id);
|
|
||||||
|
|
||||||
UsbCommand c = {CMD_ISO_15693_SLIX_L_CHANGE_PASS, {*pass_id, 0, 0}};
|
|
||||||
|
|
||||||
memcpy(&c.arg[1],old_pass,4);
|
|
||||||
memcpy(&c.arg[2],new_pass,4);
|
|
||||||
|
|
||||||
SendCommand(&c);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int CmdHF15SlixLockPass(const char *Cmd)
|
|
||||||
{
|
|
||||||
char cmdp = param_getchar(Cmd, 0);
|
|
||||||
uint8_t pass[4] = {0x00};
|
|
||||||
uint8_t pass_id[1] = {0x00};
|
|
||||||
|
|
||||||
if (cmdp == 'h' || cmdp == 'H') {
|
|
||||||
PrintAndLog("Usage: hf 15 slix_lock_pass <pass_id> <password>");
|
|
||||||
PrintAndLog("");
|
|
||||||
PrintAndLog(" pass_id 04: privacy, 08: destroy, 10: EAS/AFI");
|
|
||||||
PrintAndLog("");
|
|
||||||
PrintAndLog(" example: hf 15 slix_lock_pass 04 0F0F0F0F");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param_gethex(Cmd, 0, pass_id, 2)) {
|
|
||||||
PrintAndLog("pass_id must have 2 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (param_gethex(Cmd, 1, pass, 8)) {
|
|
||||||
PrintAndLog("pass must have 8 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
PrintAndLog("Locking password %02X%02X%02X%02X for ID 0x%02X", pass[0], pass[1], pass[2], pass[3], *pass_id);
|
|
||||||
|
|
||||||
UsbCommand c = {CMD_ISO_15693_SLIX_L_LOCK_PASS, {*pass_id, 0, 0}};
|
|
||||||
|
|
||||||
memcpy(&c.arg[1],pass,4);
|
|
||||||
|
|
||||||
SendCommand(&c);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int CmdHF15Bruteforce(const char *Cmd)
|
|
||||||
{
|
|
||||||
char cmdp = param_getchar(Cmd, 0);
|
|
||||||
uint8_t start_cmd = 0x00;
|
|
||||||
uint8_t end_cmd = 0x00;
|
|
||||||
|
|
||||||
if (cmdp == 'h' || cmdp == 'H') {
|
|
||||||
PrintAndLog("Usage: hf 15 brute <start_cmd> <end_cmd>");
|
|
||||||
PrintAndLog("");
|
|
||||||
PrintAndLog(" example: hf 15 brute 40 A0");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (param_gethex(Cmd, 0, &start_cmd, 2)) {
|
|
||||||
PrintAndLog("start_cmd must have 2 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (param_gethex(Cmd, 1, &end_cmd, 2)) {
|
|
||||||
PrintAndLog("end_cmd must have 2 HEX symbols");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
PrintAndLog("Scanning commands 0x%02X - 0x%02X", start_cmd, end_cmd);
|
|
||||||
|
|
||||||
UsbCommand c = {CMD_ISO_15693_BRUTE_FORCE, {start_cmd, end_cmd, 0}};
|
|
||||||
|
|
||||||
SendCommand(&c);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int CmdHF15SlixDisablePrivacy(const char *Cmd)
|
static int CmdHF15SlixDisablePrivacy(const char *Cmd)
|
||||||
{
|
{
|
||||||
char cmdp = param_getchar(Cmd, 0);
|
char cmdp = param_getchar(Cmd, 0);
|
||||||
|
@ -1201,10 +1095,7 @@ static command_t CommandTable15[] = {
|
||||||
{"reader", CmdHF15Reader, 0, "Act like an ISO15693 reader"},
|
{"reader", CmdHF15Reader, 0, "Act like an ISO15693 reader"},
|
||||||
{"sim", CmdHF15Sim, 0, "Fake an ISO15693 tag"},
|
{"sim", CmdHF15Sim, 0, "Fake an ISO15693 tag"},
|
||||||
{"cmd", CmdHF15Cmd, 0, "Send direct commands to ISO15693 tag"},
|
{"cmd", CmdHF15Cmd, 0, "Send direct commands to ISO15693 tag"},
|
||||||
{"brute", CmdHF15Bruteforce, 0, "Brute force ISO15693 commands"},
|
|
||||||
{"slix_disable_privacy", CmdHF15SlixDisablePrivacy, 0, "Disable privacy mode on SLIX ISO15693 tag"},
|
{"slix_disable_privacy", CmdHF15SlixDisablePrivacy, 0, "Disable privacy mode on SLIX ISO15693 tag"},
|
||||||
{"slix_change_pass", CmdHF15SlixChangePass, 0, "Change password of SLIX ISO15693 tag"},
|
|
||||||
{"slix_lock_pass", CmdHF15SlixLockPass, 0, "Lock password on SLIX ISO15693 tag"},
|
|
||||||
{"findafi", CmdHF15Afi, 0, "Brute force AFI of an ISO15693 tag"},
|
{"findafi", CmdHF15Afi, 0, "Brute force AFI of an ISO15693 tag"},
|
||||||
{"dumpmemory", CmdHF15DumpMem, 0, "Read all memory pages of an ISO15693 tag"},
|
{"dumpmemory", CmdHF15DumpMem, 0, "Read all memory pages of an ISO15693 tag"},
|
||||||
{"csetuid", CmdHF15CSetUID, 0, "Set UID for magic Chinese card"},
|
{"csetuid", CmdHF15CSetUID, 0, "Set UID for magic Chinese card"},
|
||||||
|
|
|
@ -147,9 +147,6 @@ typedef struct {
|
||||||
#define CMD_LF_SNOOP_RAW_ADC_SAMPLES 0x0317
|
#define CMD_LF_SNOOP_RAW_ADC_SAMPLES 0x0317
|
||||||
#define CMD_CSETUID_ISO_15693 0x0318
|
#define CMD_CSETUID_ISO_15693 0x0318
|
||||||
#define CMD_ISO_15693_SLIX_L_DISABLE_PRIVACY 0x0319
|
#define CMD_ISO_15693_SLIX_L_DISABLE_PRIVACY 0x0319
|
||||||
#define CMD_ISO_15693_SLIX_L_CHANGE_PASS 0x031A
|
|
||||||
#define CMD_ISO_15693_SLIX_L_LOCK_PASS 0x031B
|
|
||||||
#define CMD_ISO_15693_BRUTE_FORCE 0x031C
|
|
||||||
|
|
||||||
// For Hitag2 transponders
|
// For Hitag2 transponders
|
||||||
#define CMD_SNOOP_HITAG 0x0370
|
#define CMD_SNOOP_HITAG 0x0370
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue