mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 21:03:23 -07:00
cancel blocking ISO15693 operations or standalone mode whenever USB packets appear
This commit is contained in:
parent
a9b59a1b07
commit
2e69d17693
2 changed files with 37 additions and 11 deletions
|
@ -797,6 +797,11 @@ void StandAloneMode15() {
|
||||||
}
|
}
|
||||||
|
|
||||||
while(!done) {
|
while(!done) {
|
||||||
|
if(usb_poll_validate_length()) {
|
||||||
|
done = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
SpinDelay(50);
|
SpinDelay(50);
|
||||||
usb_poll();
|
usb_poll();
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
|
|
|
@ -1094,6 +1094,12 @@ int GetIso15693CommandFromReader(uint8_t *received, size_t max_len, uint32_t *eo
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* cancel receive operation when there is USB activity */
|
||||||
|
if (usb_poll_validate_length()) {
|
||||||
|
DecodeReader.byteCount = -2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (BUTTON_PRESS()) {
|
if (BUTTON_PRESS()) {
|
||||||
DecodeReader.byteCount = -1;
|
DecodeReader.byteCount = -1;
|
||||||
break;
|
break;
|
||||||
|
@ -1838,14 +1844,15 @@ void ChangePassSlixLIso15693(uint32_t pass_id, uint32_t old_password, uint32_t p
|
||||||
case BUTTON_HOLD:
|
case BUTTON_HOLD:
|
||||||
Dbprintf("ChangePass: Terminating");
|
Dbprintf("ChangePass: Terminating");
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
continue;
|
||||||
default:
|
default:
|
||||||
SpinDelay(50);
|
SpinDelay(50);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(done) {
|
if(usb_poll_validate_length()) {
|
||||||
break;
|
done = true;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if a tag is available */
|
/* check if a tag is available */
|
||||||
|
@ -1936,11 +1943,15 @@ void StressSlixLIso15693(uint32_t password, uint32_t flags) {
|
||||||
Dbprintf("Stress SLIX-L: Terminating");
|
Dbprintf("Stress SLIX-L: Terminating");
|
||||||
done = true;
|
done = true;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(usb_poll_validate_length()) {
|
||||||
|
done = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(!GetRandomSlixLIso15693(start_time, &eof_time, NULL)) {
|
if(!GetRandomSlixLIso15693(start_time, &eof_time, NULL)) {
|
||||||
SpinDelay(50);
|
SpinDelay(50);
|
||||||
continue;
|
continue;
|
||||||
|
@ -2116,15 +2127,15 @@ void LockPassSlixLIso15693(uint32_t pass_id, uint32_t password) {
|
||||||
case BUTTON_HOLD:
|
case BUTTON_HOLD:
|
||||||
Dbprintf("LockPass: Terminating");
|
Dbprintf("LockPass: Terminating");
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
continue;
|
||||||
default:
|
default:
|
||||||
SpinDelay(50);
|
SpinDelay(50);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(done)
|
if(usb_poll_validate_length()) {
|
||||||
{
|
done = true;
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
recvlen = SendDataTag(cmd_get_rnd, sizeof(cmd_get_rnd), true, true, recvbuf, sizeof(recvbuf), start_time, ISO15693_READER_TIMEOUT_WRITE, &eof_time);
|
recvlen = SendDataTag(cmd_get_rnd, sizeof(cmd_get_rnd), true, true, recvbuf, sizeof(recvbuf), start_time, ISO15693_READER_TIMEOUT_WRITE, &eof_time);
|
||||||
|
@ -2280,7 +2291,7 @@ void BruteforceIso15693(uint32_t start_cmd, uint32_t end_cmd) {
|
||||||
for(uint16_t magic = 0; magic <= 0x100; magic++) {
|
for(uint16_t magic = 0; magic <= 0x100; magic++) {
|
||||||
int extra = (magic < 0x100) ? 1 : 0;
|
int extra = (magic < 0x100) ? 1 : 0;
|
||||||
|
|
||||||
if (BUTTON_PRESS()) {
|
if (BUTTON_PRESS() || usb_poll_validate_length()) {
|
||||||
Dbprintf(" [i] Terminating");
|
Dbprintf(" [i] Terminating");
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
break;
|
||||||
|
@ -2416,8 +2427,18 @@ void SimTagIso15693(uint32_t parameter, uint8_t *uid) {
|
||||||
uint32_t eof_time = 0, start_time = 0;
|
uint32_t eof_time = 0, start_time = 0;
|
||||||
int cmd_len = GetIso15693CommandFromReader(cmd, sizeof(cmd), &eof_time);
|
int cmd_len = GetIso15693CommandFromReader(cmd, sizeof(cmd), &eof_time);
|
||||||
|
|
||||||
if(cmd_len < 0) {
|
switch(cmd_len) {
|
||||||
continue;
|
case -1:
|
||||||
|
/* button pressed */
|
||||||
|
continue;
|
||||||
|
case -2:
|
||||||
|
/* USB activity */
|
||||||
|
Dbprintf("SimTag: Terminating due to USB activity");
|
||||||
|
done = true;
|
||||||
|
continue;
|
||||||
|
default:
|
||||||
|
/* data received */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t flags = cmd[0];
|
uint8_t flags = cmd[0];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue