mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-13 10:43:01 +08:00
52 lines
No EOL
1.7 KiB
C
52 lines
No EOL
1.7 KiB
C
//-----------------------------------------------------------------------------
|
|
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
|
|
// at your option, any later version. See the LICENSE.txt file for the text of
|
|
// the license.
|
|
//-----------------------------------------------------------------------------
|
|
// ISO15693 CRC & other commons
|
|
//-----------------------------------------------------------------------------
|
|
#include "iso15693tools.h"
|
|
|
|
// The CRC as described in ISO 15693-Part 3-Annex C
|
|
uint16_t Iso15693Crc(uint8_t *d, size_t n){
|
|
init_table(CRC_15);
|
|
return crc16_x25(d, n);
|
|
}
|
|
|
|
// adds a CRC to a dataframe
|
|
// d[] iso15963 frame without crc
|
|
// n length without crc
|
|
// returns the new length of the dataframe.
|
|
int Iso15693AddCrc(uint8_t *d, size_t n) {
|
|
uint16_t crc = Iso15693Crc(d, n);
|
|
d[n] = crc & 0xff;
|
|
d[n+1] = crc >> 8;
|
|
return n + 2;
|
|
}
|
|
|
|
// check the CRC as described in ISO 15693-Part 3-Annex C
|
|
// v buffer with data
|
|
// n length (including crc)
|
|
// If calculated with crc bytes, the residue should be 0xF0B8
|
|
bool Iso15693CheckCrc(uint8_t *d, size_t n) {
|
|
return (Iso15693Crc(d, n) == ISO15_CRC_CHECK );
|
|
}
|
|
|
|
int sprintf(char *str, const char *format, ...);
|
|
|
|
// returns a string representation of the UID
|
|
// UID is transmitted and stored LSB first, displayed MSB first
|
|
// target char* buffer, where to put the UID, if NULL a static buffer is returned
|
|
// uid[] the UID in transmission order
|
|
// return: ptr to string
|
|
char* Iso15693sprintUID(char *target, uint8_t *uid) {
|
|
|
|
static char tempbuf[2*8+1] = {0};
|
|
if (target == NULL)
|
|
target = tempbuf;
|
|
sprintf(target, "%02X %02X %02X %02X %02X %02X %02X %02X",
|
|
uid[7], uid[6], uid[5], uid[4],
|
|
uid[3], uid[2], uid[1], uid[0]
|
|
);
|
|
return target;
|
|
} |