Fix PAC/Stanley checksum calculation

The parity bit needs to be discarded when calculating the final
checksum byte value of PAC/Stanley card IDs. Verified by scanning
a tag which is now correctly identified.
This commit is contained in:
Richard Knoll 2021-08-28 14:28:06 +01:00
commit 7a6f503161

View file

@ -54,7 +54,7 @@ static int pac_buf_to_cardid(uint8_t *src, const size_t src_size, uint8_t *dst,
PrintAndLogEx(DEBUG, "DEBUG: Error - PAC: Parity check failed");
return PM3_ESOFT;
}
if (idx < dataLength - 1) checksum ^= byte;
if (idx < dataLength - 1) checksum ^= dst[idx];
}
if (dst[dataLength - 1] != checksum) {
PrintAndLogEx(DEBUG, "DEBUG: Error - PAC: Bad checksum - expected: %02X, actual: %02X", dst[dataLength - 1], checksum);