From: edouard@lafargue.name Date: Mon, 23 Nov 2009 09:34:57 +0000 (+0000) Subject: Added the new SRIX4K reading routine, thanks to jonor. Regression tested against... X-Git-Tag: v1.0.0~450 X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/c86cc30801a3ea718df1daa45e989cb40f8c5950 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. --- diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 4077e4ef..81ef407a 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -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 diff --git a/armsrc/apps.h b/armsrc/apps.h index 040737e7..43324a5b 100644 --- a/armsrc/apps.h +++ b/armsrc/apps.h @@ -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 diff --git a/armsrc/iso14443.c b/armsrc/iso14443.c index fab7336b..fbc3a6d4 100644 --- a/armsrc/iso14443.c +++ b/armsrc/iso14443.c @@ -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; } diff --git a/include/usb_cmd.h b/include/usb_cmd.h index 6932e45d..76b543f6 100644 --- a/include/usb_cmd.h +++ b/include/usb_cmd.h @@ -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 diff --git a/linux/proxguiqt.cpp b/linux/proxguiqt.cpp index 2be3f682..70c64fbd 100644 --- a/linux/proxguiqt.cpp +++ b/linux/proxguiqt.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "proxguiqt.h" #include "proxgui.h" diff --git a/winsrc/command.cpp b/winsrc/command.cpp index 5892a8e5..45683074 100644 --- a/winsrc/command.cpp +++ b/winsrc/command.cpp @@ -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, " -- Set the ADC mux to a specific value"}, {"sri512read", CmdSri512read, 0, " -- Read contents of a SRI512 tag"}, + {"srix4kread", CmdSrix4kread, 0, " -- 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"},