"hf mf sniff" low level logics works.

This commit is contained in:
Merlokbr@gmail.com 2012-07-11 15:52:33 +00:00
commit 39864b0bd4
10 changed files with 322 additions and 25 deletions

View file

@ -18,7 +18,7 @@ static unsigned short UpdateCrc14443(unsigned char ch, unsigned short *lpwCrc)
}
void ComputeCrc14443(int CrcType,
unsigned char *Data, int Length,
const unsigned char *Data, int Length,
unsigned char *TransmitFirst,
unsigned char *TransmitSecond)
{
@ -37,3 +37,12 @@ void ComputeCrc14443(int CrcType,
*TransmitSecond = (unsigned char) ((wCrc >> 8) & 0xFF);
return;
}
int CheckCrc14443(int CrcType, const unsigned char *Data, int Length) {
unsigned char b1;
unsigned char b2;
if (Length < 3) return 0;
ComputeCrc14443(CrcType, Data, Length - 2, &b1, &b2);
if ((b1 == Data[Length - 2]) && (b2 == Data[Length - 1])) return 1;
return 0;
}

View file

@ -8,6 +8,7 @@
#ifndef __ISO14443CRC_H
#define __ISO14443CRC_H
#include "common.h"
//-----------------------------------------------------------------------------
// Routines to compute the CRCs (two different flavours, just for confusion)
@ -18,8 +19,9 @@
#define CRC_ICLASS 0xE012 /* ICLASS PRERFIX */
void ComputeCrc14443(int CrcType,
unsigned char *Data, int Length,
const unsigned char *Data, int Length,
unsigned char *TransmitFirst,
unsigned char *TransmitSecond);
int CheckCrc14443(int CrcType, const unsigned char *Data, int Length);
#endif