mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-05-12 11:18:11 -07:00
added tiwrite command, split LF code from appmain into lfops.c
This commit is contained in:
@@ -21,6 +21,7 @@ OBJLCD = $(OBJDIR)/fonts.o \
|
||||
OBJ = $(OBJDIR)/start.o \
|
||||
$(OBJDIR)/appmain.o \
|
||||
$(OBJDIR)/fpga.o \
|
||||
$(OBJDIR)/lfops.o \
|
||||
$(OBJDIR)/iso14443.o \
|
||||
$(OBJDIR)/iso14443a.o \
|
||||
$(OBJDIR)/iso15693.o \
|
||||
|
||||
@@ -32,6 +32,7 @@ OBJLCD = $(OBJDIR)/LCD.o\
|
||||
OBJ = $(OBJDIR)/start.o \
|
||||
$(OBJDIR)/appmain.o \
|
||||
$(OBJDIR)/fpga.o \
|
||||
$(OBJDIR)/lfops.o \
|
||||
$(OBJDIR)/iso15693.o \
|
||||
$(OBJDIR)/util.o
|
||||
|
||||
|
||||
+380
-905
File diff suppressed because it is too large
Load Diff
+18
-2
@@ -7,7 +7,11 @@
|
||||
#ifndef __APPS_H
|
||||
#define __APPS_H
|
||||
|
||||
/// appmain.c
|
||||
// The large multi-purpose buffer, typically used to hold A/D samples,
|
||||
// maybe processed in some way.
|
||||
DWORD BigBuf[16000];
|
||||
|
||||
/// appmain.h
|
||||
void ReadMem(int addr);
|
||||
void AppMain(void);
|
||||
void SamyRun(void);
|
||||
@@ -22,7 +26,7 @@ extern int ToSendMax;
|
||||
extern BYTE ToSend[];
|
||||
extern DWORD BigBuf[];
|
||||
|
||||
/// fpga.c
|
||||
/// fpga.h
|
||||
void FpgaSendCommand(WORD cmd, WORD v);
|
||||
void FpgaWriteConfWord(BYTE v);
|
||||
void FpgaDownloadAndGo(void);
|
||||
@@ -58,6 +62,18 @@ void SetAdcMuxFor(int whichGpio);
|
||||
#define FPGA_HF_ISO14443A_READER_LISTEN (3<<0)
|
||||
#define FPGA_HF_ISO14443A_READER_MOD (4<<0)
|
||||
|
||||
/// lfops.h
|
||||
void AcquireRawAdcSamples125k(BOOL at134khz);
|
||||
void DoAcquisition125k(BOOL at134khz);
|
||||
void ModThenAcquireRawAdcSamples125k(int delay_off,int period_0,int period_1,BYTE *command);
|
||||
void ReadTItag();
|
||||
void WriteTItag(DWORD idhi, DWORD idlo, WORD crc);
|
||||
void AcquireTiType(void);
|
||||
void AcquireRawBitsTI(void);
|
||||
void SimulateTagLowFrequency(int period, int ledcontrol);
|
||||
void CmdHIDsimTAG(int hi, int lo, int ledcontrol);
|
||||
void CmdHIDdemodFSK(int findone, int *high, int *low, int ledcontrol);
|
||||
|
||||
/// iso14443.h
|
||||
void SimulateIso14443Tag(void);
|
||||
void AcquireRawAdcSamplesIso14443(DWORD parameter);
|
||||
|
||||
+654
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,4 +1,4 @@
|
||||
unsigned short update_crc16( WORD crc, BYTE c ) {
|
||||
WORD update_crc16( WORD crc, BYTE c ) {
|
||||
WORD i, v, tcrc = 0;
|
||||
|
||||
v = (crc ^ c) & 0xff;
|
||||
@@ -7,5 +7,5 @@ unsigned short update_crc16( WORD crc, BYTE c ) {
|
||||
v >>= 1;
|
||||
}
|
||||
|
||||
return (crc >> 8) ^ tcrc;
|
||||
return ((crc >> 8) ^ tcrc)&0xffff;
|
||||
}
|
||||
|
||||
+44
-45
@@ -20,60 +20,59 @@ typedef struct {
|
||||
} UsbCommand;
|
||||
|
||||
// For the bootloader
|
||||
#define CMD_DEVICE_INFO 0x0000
|
||||
#define CMD_SETUP_WRITE 0x0001
|
||||
#define CMD_FINISH_WRITE 0x0003
|
||||
#define CMD_HARDWARE_RESET 0x0004
|
||||
#define CMD_START_FLASH 0x0005
|
||||
#define CMD_ACK 0x00ff
|
||||
#define CMD_DEVICE_INFO 0x0000
|
||||
#define CMD_SETUP_WRITE 0x0001
|
||||
#define CMD_FINISH_WRITE 0x0003
|
||||
#define CMD_HARDWARE_RESET 0x0004
|
||||
#define CMD_START_FLASH 0x0005
|
||||
#define CMD_ACK 0x00ff
|
||||
|
||||
// For general mucking around
|
||||
#define CMD_DEBUG_PRINT_STRING 0x0100
|
||||
#define CMD_DEBUG_PRINT_INTEGERS 0x0101
|
||||
#define CMD_DEBUG_PRINT_BYTES 0x0102
|
||||
#define CMD_LCD_RESET 0x0103
|
||||
#define CMD_LCD 0x0104
|
||||
#define CMD_BUFF_CLEAR 0x0105
|
||||
#define CMD_READ_MEM 0x0106
|
||||
#define CMD_DEBUG_PRINT_STRING 0x0100
|
||||
#define CMD_DEBUG_PRINT_INTEGERS 0x0101
|
||||
#define CMD_DEBUG_PRINT_BYTES 0x0102
|
||||
#define CMD_LCD_RESET 0x0103
|
||||
#define CMD_LCD 0x0104
|
||||
#define CMD_BUFF_CLEAR 0x0105
|
||||
#define CMD_READ_MEM 0x0106
|
||||
|
||||
// For low-frequency tags
|
||||
#define CMD_ACQUIRE_RAW_BITS_TI_TYPE 0x0200
|
||||
#define CMD_DOWNLOAD_RAW_BITS_TI_TYPE 0x0201
|
||||
#define CMD_DOWNLOADED_RAW_BITS_TI_TYPE 0x0202
|
||||
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_125K 0x0203
|
||||
#define CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K 0x0204
|
||||
#define CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K 0x0205
|
||||
#define CMD_DOWNLOADED_SIM_SAMPLES_125K 0x0206
|
||||
#define CMD_SIMULATE_TAG_125K 0x0207
|
||||
#define CMD_HID_DEMOD_FSK 0x0208 // ## New command: demodulate HID tag ID
|
||||
#define CMD_HID_SIM_TAG 0x0209 // ## New command: simulate HID tag by ID
|
||||
#define CMD_SET_LF_DIVISOR 0x020A
|
||||
#define CMD_SWEEP_LF 0x020B
|
||||
#define CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K 0x020C
|
||||
#define CMD_ACQUIRE_RAW_BITS_TI_TYPE 0x0200
|
||||
#define CMD_DOWNLOAD_RAW_BITS_TI_TYPE 0x0201
|
||||
#define CMD_READ_TI_TYPE 0x0202
|
||||
#define CMD_WRITE_TI_TYPE 0x0203
|
||||
#define CMD_DOWNLOADED_RAW_BITS_TI_TYPE 0x0204
|
||||
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_125K 0x0205
|
||||
#define CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K 0x0206
|
||||
#define CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K 0x0207
|
||||
#define CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K 0x0208
|
||||
#define CMD_DOWNLOADED_SIM_SAMPLES_125K 0x0209
|
||||
#define CMD_SIMULATE_TAG_125K 0x020A
|
||||
#define CMD_HID_DEMOD_FSK 0x020B
|
||||
#define CMD_HID_SIM_TAG 0x020C
|
||||
#define CMD_SET_LF_DIVISOR 0x020D
|
||||
|
||||
// For the 13.56 MHz tags
|
||||
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_15693 0x0300
|
||||
#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 // ## New command to act like a 15693 reader - greg
|
||||
#define CMD_SIMTAG_ISO_15693 0x0311 // ## New command to act like a 15693 reader - greg
|
||||
|
||||
#define CMD_SIMULATE_TAG_HF_LISTEN 0x0380
|
||||
#define CMD_SIMULATE_TAG_ISO_14443 0x0381
|
||||
#define CMD_SNOOP_ISO_14443 0x0382
|
||||
#define CMD_SNOOP_ISO_14443a 0x0383 // ## New snoop command
|
||||
#define CMD_SIMULATE_TAG_ISO_14443a 0x0384 // ## New command: Simulate tag 14443a
|
||||
#define CMD_READER_ISO_14443a 0x0385 // ## New command to act like a 14443a reader
|
||||
#define CMD_SIMULATE_MIFARE_CARD 0x0386
|
||||
#define CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_15693 0x0300
|
||||
#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_SIMTAG_ISO_15693 0x0311
|
||||
#define CMD_SIMULATE_TAG_HF_LISTEN 0x0380
|
||||
#define CMD_SIMULATE_TAG_ISO_14443 0x0381
|
||||
#define CMD_SNOOP_ISO_14443 0x0382
|
||||
#define CMD_SNOOP_ISO_14443a 0x0383
|
||||
#define CMD_SIMULATE_TAG_ISO_14443a 0x0384
|
||||
#define CMD_READER_ISO_14443a 0x0385
|
||||
#define CMD_SIMULATE_MIFARE_CARD 0x0386
|
||||
|
||||
// For measurements of the antenna tuning
|
||||
#define CMD_MEASURE_ANTENNA_TUNING 0x0400
|
||||
#define CMD_MEASURED_ANTENNA_TUNING 0x0401
|
||||
#define CMD_LISTEN_READER_FIELD 0x0402
|
||||
#define CMD_MEASURE_ANTENNA_TUNING 0x0400
|
||||
#define CMD_MEASURED_ANTENNA_TUNING 0x0401
|
||||
#define CMD_LISTEN_READER_FIELD 0x0402
|
||||
|
||||
// For direct FPGA control
|
||||
#define CMD_FPGA_MAJOR_MODE_OFF 0x0500 // ## FPGA Control
|
||||
#define CMD_TEST 0x0501
|
||||
#define CMD_FPGA_MAJOR_MODE_OFF 0x0500
|
||||
|
||||
#endif
|
||||
|
||||
+36
-7
@@ -1395,14 +1395,14 @@ static void CmdHi15demod(char *str)
|
||||
PrintToScrollback("CRC=%04x", Iso15693Crc(outBuf, k-2));
|
||||
}
|
||||
|
||||
static void CmdTiread(char *str)
|
||||
static void CmdTIReadRaw(char *str)
|
||||
{
|
||||
UsbCommand c;
|
||||
c.cmd = CMD_ACQUIRE_RAW_BITS_TI_TYPE;
|
||||
SendCommand(&c, FALSE);
|
||||
}
|
||||
|
||||
static void CmdTibits(char *str)
|
||||
static void CmdTIBits(char *str)
|
||||
{
|
||||
int cnt = 0;
|
||||
int i;
|
||||
@@ -1554,7 +1554,30 @@ static void CmdFSKdemod(char *cmdline)
|
||||
PrintToScrollback("hex: %08x %08x", hi, lo);
|
||||
}
|
||||
|
||||
static void CmdTidemod(char *cmdline)
|
||||
// read a TI tag and return its ID
|
||||
static void CmdTIRead(char *str)
|
||||
{
|
||||
UsbCommand c;
|
||||
c.cmd = CMD_READ_TI_TYPE;
|
||||
SendCommand(&c, FALSE);
|
||||
}
|
||||
|
||||
// write new data to a r/w TI tag
|
||||
static void CmdTIWrite(char *str)
|
||||
{
|
||||
UsbCommand c;
|
||||
int res=0;
|
||||
|
||||
c.cmd = CMD_WRITE_TI_TYPE;
|
||||
res = sscanf(str, "0x%x 0x%x 0x%x ", &c.ext1, &c.ext2, &c.ext3);
|
||||
if (res == 2) c.ext3=0;
|
||||
if (res<2)
|
||||
PrintToScrollback("Please specify 2 or three hex strings, eg 0x1234 0x5678");
|
||||
else
|
||||
SendCommand(&c, FALSE);
|
||||
}
|
||||
|
||||
static void CmdTIDemod(char *cmdline)
|
||||
{
|
||||
/* MATLAB as follows:
|
||||
f_s = 2000000; % sampling frequency
|
||||
@@ -1754,9 +1777,13 @@ h = sign(sin(cumsum(h)));
|
||||
// align 16 bit "end bits" or "ident" into lower half of shift3
|
||||
shift3 >>= 16;
|
||||
|
||||
if ( (shift3^shift0)&0xffff ) {
|
||||
// only 15 bits compare, last bit of ident is not valid
|
||||
if ( (shift3^shift0)&0x7fff ) {
|
||||
PrintToScrollback("Error: Ident mismatch!");
|
||||
}
|
||||
// WARNING the order of the bytes in which we calc crc below needs checking
|
||||
// i'm 99% sure the crc algorithm is correct, but it may need to eat the
|
||||
// bytes in reverse or something
|
||||
// calculate CRC
|
||||
crc=0;
|
||||
crc = update_crc16(crc, (shift0)&0xff);
|
||||
@@ -2841,9 +2868,11 @@ static struct {
|
||||
{"scale", CmdScale, 1, "<int> -- Set cursor display scale"},
|
||||
{"setlfdivisor", CmdSetDivisor, 0, "<19 - 255> -- Drive LF antenna at 12Mhz/(divisor+1)"},
|
||||
{"sri512read", CmdSri512read, 0, "<int> -- Read contents of a SRI512 tag"},
|
||||
{"tibits", CmdTibits, 0, "Get raw bits for TI-type LF tag"},
|
||||
{"tidemod", CmdTidemod, 1, "Demodulate raw bits for TI-type LF tag"},
|
||||
{"tiread", CmdTiread, 0, "Read a TI-type 134 kHz tag"},
|
||||
{"tibits", CmdTIBits, 0, "Get raw bits for TI-type LF tag"},
|
||||
{"tidemod", CmdTIDemod, 1, "Demodulate raw bits for TI-type LF tag"},
|
||||
{"tireadraw", CmdTIReadRaw, 0, "Read a TI-type 134 kHz tag in raw mode"},
|
||||
{"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"},
|
||||
{"threshold", CmdThreshold, 1, "Maximize/minimize every value in the graph window depending on threshold"},
|
||||
{"tune", CmdTune, 0, "Measure antenna tuning"},
|
||||
{"vchdemod", CmdVchdemod, 0, "['clone'] -- Demodulate samples for VeriChip"},
|
||||
|
||||
Reference in New Issue
Block a user