mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-05-12 11:18:11 -07:00
Merge pull request #3172 from team-orangeBlue/exchangeRawWTXpatch
Fix ExchangeRaw14A() function's WTX response
This commit is contained in:
@@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
|
||||
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
||||
|
||||
## [unreleased][unreleased]
|
||||
- Fixed WTX response behavior in `ExchangeRaw14A()` (@team-orangeBlue)
|
||||
- Added `-t` / `--timeout` option for `hf 15 sim` (@recursivenomad)
|
||||
- Added `--aid` parameter to `hf seos` commands (@kormax)
|
||||
- Added `hf iclass blacktears` command to perform an automated tearoff of block 1 to set non-secure page mode(@antiklesys)
|
||||
|
||||
+18
-1
@@ -1162,6 +1162,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav
|
||||
|
||||
uint8_t *recv;
|
||||
PacketResponseNG resp;
|
||||
resend:
|
||||
if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) {
|
||||
recv = resp.data.asBytes;
|
||||
int iLen = resp.oldarg[0];
|
||||
@@ -1184,7 +1185,23 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav
|
||||
}
|
||||
return PM3_ELENGTH;
|
||||
}
|
||||
|
||||
if (recv[0] & 0xf0) {
|
||||
uint8_t dbg_curr = DBG_NONE;
|
||||
if (getDeviceDebugLevel(&dbg_curr) != PM3_SUCCESS) {
|
||||
return PM3_EFAILED;
|
||||
}
|
||||
if (dbg_curr >= DBG_DEBUG) {
|
||||
PrintAndLogEx(WARNING, "Card requested WTX");
|
||||
}
|
||||
// WARNING for users of this function:
|
||||
// This NO_DISCONNECT flag will NOT save you. If you run your commands with LeaveSignalOn set to false, they will still fail if a card asks for WTX.
|
||||
// Better keep the flag on and do a DropField(); at the end.
|
||||
SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_NO_DISCONNECT | cmdc, 5, 0, recv, min); // 2b frame +1b "data" + 2b crc. Hardcode length to 5 and reply to response
|
||||
goto resend;
|
||||
}
|
||||
// OBS
|
||||
// This if check below breaks command flow if the card for whatever reason decides to request a WTX.
|
||||
// Because WTX will do a |= 0xF0 to the framing, this check triggers and everything that was happening will stop.
|
||||
if (recv[0] != data[0]) {
|
||||
if (silentMode == false) {
|
||||
PrintAndLogEx(ERR, "iso14443-4 framing error. Card send %2x must be %2x", recv[0], data[0]);
|
||||
|
||||
Reference in New Issue
Block a user