Added the new SRIX4K reading routine, thanks to jonor. Regression tested against SRI512 tags,

but I do not have SRIX4K tags to test this with.
This commit is contained in:
edouard@lafargue.name 2009-11-23 09:34:57 +00:00
parent e70140224f
commit c86cc30801
6 changed files with 34 additions and 2 deletions

View file

@ -582,6 +582,9 @@ void UsbPacketReceived(BYTE *packet, int len)
case CMD_READ_SRI512_TAG:
ReadSRI512Iso14443(c->ext1);
break;
case CMD_READ_SRIX4K_TAG:
ReadSRIX4KIso14443(c->ext1);
break;
#endif
#ifdef WITH_ISO14443a

View file

@ -81,6 +81,8 @@ void SimulateTagLowFrequencyBidir(int divisor, int max_bitlen);
void SimulateIso14443Tag(void);
void AcquireRawAdcSamplesIso14443(DWORD parameter);
void ReadSRI512Iso14443(DWORD parameter);
void ReadSRIX4KIso14443(DWORD parameter);
void ReadSTMemoryIso14443(DWORD parameter,DWORD dwLast);
void SnoopIso14443(void);
/// iso14443a.h

View file

@ -873,6 +873,15 @@ void AcquireRawAdcSamplesIso14443(DWORD parameter)
//-----------------------------------------------------------------------------
void ReadSRI512Iso14443(DWORD parameter)
{
ReadSTMemoryIso14443(parameter,0x0F);
}
void ReadSRIX4KIso14443(DWORD parameter)
{
ReadSTMemoryIso14443(parameter,0x7F);
}
void ReadSTMemoryIso14443(DWORD parameter,DWORD dwLast)
{
BYTE i = 0x00;
// Make sure that we start from off, since the tags are stateful;
@ -961,8 +970,9 @@ void ReadSRI512Iso14443(DWORD parameter)
DbpString("Tag memory dump, block 0 to 15");
cmd1[0] = 0x08;
i = 0x00;
dwLast++;
for (;;) {
if (i == 0x10) {
if (i == dwLast) {
DbpString("System area block (0xff):");
i = 0xff;
}

View file

@ -60,7 +60,8 @@ typedef struct {
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443 0x0301
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM 0x0302
#define CMD_READ_SRI512_TAG 0x0303
#define CMD_READER_ISO_15693 0x0310
#define CMD_READ_SRIX4K_TAG 0x0304
#define CMD_READER_ISO_15693 0x0310
#define CMD_SIMTAG_ISO_15693 0x0311
#define CMD_SIMULATE_TAG_HF_LISTEN 0x0380
#define CMD_SIMULATE_TAG_ISO_14443 0x0381

View file

@ -8,6 +8,7 @@
#include <QKeyEvent>
#include <math.h>
#include <limits.h>
#include <stdio.h>
#include "proxguiqt.h"
#include "proxgui.h"

View file

@ -107,6 +107,20 @@ static void CmdSri512read(char *str)
c.ext1 = atoi(str);
SendCommand(&c, FALSE);
}
/* New command to read the contents of a SRIX4K tag
* SRIX4K tags are ISO14443-B modulated memory tags,
* this command just dumps the contents of the memory/
*/
static void CmdSrix4kread(char *str)
{
UsbCommand c;
c.cmd = CMD_READ_SRIX4K_TAG;
c.ext1 = atoi(str);
SendCommand(&c, FALSE);
}
// ## New command
static void CmdHi14areader(char *str)
@ -2935,6 +2949,7 @@ static struct {
{"setlfdivisor", CmdSetDivisor, 0, "<19 - 255> -- Drive LF antenna at 12Mhz/(divisor+1)"},
{"setmux", CmdSetMux, 0, "<loraw|hiraw|lopkd|hipkd> -- Set the ADC mux to a specific value"},
{"sri512read", CmdSri512read, 0, "<int> -- Read contents of a SRI512 tag"},
{"srix4kread", CmdSrix4kread, 0, "<int> -- Read contents of a SRIX4K tag"},
{"tidemod", CmdTIDemod, 1, "Demodulate raw bits for TI-type LF tag"},
{"tiread", CmdTIRead, 0, "Read and decode a TI 134 kHz tag"},
{"tiwrite", CmdTIWrite, 0, "Write new data to a r/w TI 134 kHz tag"},