mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-07 05:31:17 -07:00
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:
parent
e70140224f
commit
c86cc30801
6 changed files with 34 additions and 2 deletions
|
@ -582,6 +582,9 @@ void UsbPacketReceived(BYTE *packet, int len)
|
||||||
case CMD_READ_SRI512_TAG:
|
case CMD_READ_SRI512_TAG:
|
||||||
ReadSRI512Iso14443(c->ext1);
|
ReadSRI512Iso14443(c->ext1);
|
||||||
break;
|
break;
|
||||||
|
case CMD_READ_SRIX4K_TAG:
|
||||||
|
ReadSRIX4KIso14443(c->ext1);
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_ISO14443a
|
#ifdef WITH_ISO14443a
|
||||||
|
|
|
@ -81,6 +81,8 @@ void SimulateTagLowFrequencyBidir(int divisor, int max_bitlen);
|
||||||
void SimulateIso14443Tag(void);
|
void SimulateIso14443Tag(void);
|
||||||
void AcquireRawAdcSamplesIso14443(DWORD parameter);
|
void AcquireRawAdcSamplesIso14443(DWORD parameter);
|
||||||
void ReadSRI512Iso14443(DWORD parameter);
|
void ReadSRI512Iso14443(DWORD parameter);
|
||||||
|
void ReadSRIX4KIso14443(DWORD parameter);
|
||||||
|
void ReadSTMemoryIso14443(DWORD parameter,DWORD dwLast);
|
||||||
void SnoopIso14443(void);
|
void SnoopIso14443(void);
|
||||||
|
|
||||||
/// iso14443a.h
|
/// iso14443a.h
|
||||||
|
|
|
@ -873,6 +873,15 @@ void AcquireRawAdcSamplesIso14443(DWORD parameter)
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void ReadSRI512Iso14443(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;
|
BYTE i = 0x00;
|
||||||
|
|
||||||
// Make sure that we start from off, since the tags are stateful;
|
// 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");
|
DbpString("Tag memory dump, block 0 to 15");
|
||||||
cmd1[0] = 0x08;
|
cmd1[0] = 0x08;
|
||||||
i = 0x00;
|
i = 0x00;
|
||||||
|
dwLast++;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (i == 0x10) {
|
if (i == dwLast) {
|
||||||
DbpString("System area block (0xff):");
|
DbpString("System area block (0xff):");
|
||||||
i = 0xff;
|
i = 0xff;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,8 @@ typedef struct {
|
||||||
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443 0x0301
|
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443 0x0301
|
||||||
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM 0x0302
|
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM 0x0302
|
||||||
#define CMD_READ_SRI512_TAG 0x0303
|
#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_SIMTAG_ISO_15693 0x0311
|
||||||
#define CMD_SIMULATE_TAG_HF_LISTEN 0x0380
|
#define CMD_SIMULATE_TAG_HF_LISTEN 0x0380
|
||||||
#define CMD_SIMULATE_TAG_ISO_14443 0x0381
|
#define CMD_SIMULATE_TAG_ISO_14443 0x0381
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include "proxguiqt.h"
|
#include "proxguiqt.h"
|
||||||
#include "proxgui.h"
|
#include "proxgui.h"
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,20 @@ static void CmdSri512read(char *str)
|
||||||
c.ext1 = atoi(str);
|
c.ext1 = atoi(str);
|
||||||
SendCommand(&c, FALSE);
|
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
|
// ## New command
|
||||||
static void CmdHi14areader(char *str)
|
static void CmdHi14areader(char *str)
|
||||||
|
@ -2935,6 +2949,7 @@ static struct {
|
||||||
{"setlfdivisor", CmdSetDivisor, 0, "<19 - 255> -- Drive LF antenna at 12Mhz/(divisor+1)"},
|
{"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"},
|
{"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"},
|
{"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"},
|
{"tidemod", CmdTIDemod, 1, "Demodulate raw bits for TI-type LF tag"},
|
||||||
{"tiread", CmdTIRead, 0, "Read and decode a TI 134 kHz 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"},
|
{"tiwrite", CmdTIWrite, 0, "Write new data to a r/w TI 134 kHz tag"},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue