Added a new function to read ISO14443-B ST Microelectronics SRI512 memory tags.

I have a problem with CRC though: sometimes it works, sometimes not, I have no
clue why, I must be doing something wrong with the CRC calculation routine...
This commit is contained in:
edouard@lafargue.name 2009-04-16 08:37:24 +00:00
commit fb25b48308
6 changed files with 192 additions and 64 deletions

View file

@ -75,6 +75,19 @@ static void CmdHi14read(char *str)
c.ext1 = atoi(str);
SendCommand(&c, FALSE);
}
/* New command to read the contents of a SRI512 tag
* SRI512 tags are ISO14443-B modulated memory tags,
* this command just dumps the contents of the memory/
*/
static void CmdSri512read(char *str)
{
UsbCommand c;
c.cmd = CMD_READ_SRI512_TAG;
c.ext1 = atoi(str);
SendCommand(&c, FALSE);
}
// ## New command
static void CmdHi14areader(char *str)
@ -1845,69 +1858,69 @@ static void CmdSweepLF(char *str)
}
typedef void HandlerFunction(char *cmdline);
static struct {
char *name;
HandlerFunction *handler;
char *docString;
char *name;
HandlerFunction *handler;
int offline; // 1 if the command can be used when in offline mode
char *docString;
} CommandTable[] = {
"tune", CmdTune, "measure antenna tuning",
"tiread", CmdTiread, "read a TI-type 134 kHz tag",
"tibits", CmdTibits, "get raw bits for TI-type LF tag",
"tidemod", CmdTidemod, "demod raw bits for TI-type LF tag",
"vchdemod", CmdVchdemod, "demod samples for VeriChip",
"plot", CmdPlot, "show graph window",
"hide", CmdHide, "hide graph window",
"losim", CmdLosim, "simulate LF tag",
"loread", CmdLoread, "read (125/134 kHz) LF ID-only tag",
"losamples", CmdLosamples, "get raw samples for LF tag",
"hisamples", CmdHisamples, "get raw samples for HF tag",
"hisampless", CmdHisampless, "get signed raw samples, HF tag",
"hisamplest", CmdHi14readt, "get samples HF, for testing",
"higet", CmdHi14read_sim, "get samples HF, 'analog'",
"bitsamples", CmdBitsamples, "get raw samples as bitstring",
"hexsamples", CmdHexsamples, "dump big buffer as hex bytes",
"hi15read", CmdHi15read, "read HF tag (ISO 15693)",
"hi15reader", CmdHi15reader, "act like an ISO15693 reader", // new command greg
"hi15sim", CmdHi15tag, "fake an ISO15693 tag", // new command greg
"hi14read", CmdHi14read, "read HF tag (ISO 14443)",
"hi14areader", CmdHi14areader, "act like an ISO14443 Type A reader", // ## New reader command
"hi15demod", CmdHi15demod, "demod ISO15693 from tag",
"hi14bdemod", CmdHi14bdemod, "demod ISO14443 Type B from tag",
"autocorr", CmdAutoCorr, "autocorrelation over window",
"norm", CmdNorm, "normalize max/min to +/-500",
"dec", CmdDec, "decimate",
"hpf", CmdHpf, "remove DC offset from trace",
"zerocrossings", CmdZerocrossings, "count time between zero-crossings",
"ltrim", CmdLtrim, "trim from left of trace",
"scale", CmdScale, "set cursor display scale",
"flexdemod", CmdFlexdemod, "demod samples for FlexPass",
"indalademod", CmdIndalademod, "demod samples for Indala",
"save", CmdSave, "save trace (from graph window)",
"load", CmdLoad, "load trace (to graph window",
"hisimlisten", CmdHisimlisten, "get HF samples as fake tag",
"hi14sim", CmdHi14sim, "fake ISO 14443 tag",
"hi14asim", CmdHi14asim, "fake ISO 14443a tag", // ## Simulate 14443a tag
"hi14snoop", CmdHi14snoop, "eavesdrop ISO 14443",
"hi14asnoop", CmdHi14asnoop, "eavesdrop ISO 14443 Type A", // ## New snoop command
"hi14list", CmdHi14list, "list ISO 14443 history",
"hi14alist", CmdHi14alist, "list ISO 14443a history", // ## New list command
"hiddemod", CmdHiddemod, "HID Prox Card II (not optimal)",
"hidfskdemod", CmdHIDdemodFSK, "HID FSK demodulator",
"askdemod", Cmdaskdemod, "Attempt to demodulate simple ASK tags",
"hidsimtag", CmdHIDsimTAG, "HID tag simulator",
"mandemod", Cmdmanchesterdemod, "Try a Manchester demodulation on a binary stream",
"fpgaoff", CmdFPGAOff, "set FPGA off", // ## FPGA Control
"lcdreset", CmdLcdReset, "Hardware reset LCD",
"lcd", CmdLcd, "Send command/data to LCD",
"test", CmdTest, "Placeholder command for testing new code",
"setlfdivisor", CmdSetDivisor, "Drive LF antenna at 12Mhz/(divisor+1)",
"sweeplf", CmdSweepLF, "Sweep through LF freq range and store results in buffer",
"quit", CmdQuit, "quit program"
"tune", CmdTune,0, "measure antenna tuning",
"tiread", CmdTiread,0, "read a TI-type 134 kHz tag",
"tibits", CmdTibits,0, "get raw bits for TI-type LF tag",
"tidemod", CmdTidemod,0, "demod raw bits for TI-type LF tag",
"vchdemod", CmdVchdemod,0, "demod samples for VeriChip",
"plot", CmdPlot,1, "show graph window",
"hide", CmdHide,1, "hide graph window",
"losim", CmdLosim,0, "simulate LF tag",
"loread", CmdLoread,0, "read (125/134 kHz) LF ID-only tag",
"losamples", CmdLosamples,0, "get raw samples for LF tag",
"hisamples", CmdHisamples,0, "get raw samples for HF tag",
"hisampless", CmdHisampless,0, "get signed raw samples, HF tag",
"hisamplest", CmdHi14readt,0, "get samples HF, for testing",
"higet", CmdHi14read_sim,0, "get samples HF, 'analog'",
"bitsamples", CmdBitsamples,0, "get raw samples as bitstring",
"hexsamples", CmdHexsamples,0, "dump big buffer as hex bytes",
"hi15read", CmdHi15read,0, "read HF tag (ISO 15693)",
"hi15reader", CmdHi15reader,0, "act like an ISO15693 reader", // new command greg
"hi15sim", CmdHi15tag,0, "fake an ISO15693 tag", // new command greg
"hi14read", CmdHi14read,0, "read HF tag (ISO 14443)",
"sri512read", CmdSri512read,0, "Read contents of a SRI512 tag",
"hi14areader", CmdHi14areader,0, "act like an ISO14443 Type A reader", // ## New reader command
"hi15demod", CmdHi15demod,1, "demod ISO15693 from tag",
"hi14bdemod", CmdHi14bdemod,1, "demod ISO14443 Type B from tag",
"autocorr", CmdAutoCorr,1, "autocorrelation over window",
"norm", CmdNorm,1, "normalize max/min to +/-500",
"dec", CmdDec,1, "decimate",
"hpf", CmdHpf,1, "remove DC offset from trace",
"zerocrossings", CmdZerocrossings,1, "count time between zero-crossings",
"ltrim", CmdLtrim,1, "trim from left of trace",
"scale", CmdScale,1, "set cursor display scale",
"flexdemod", CmdFlexdemod,1, "demod samples for FlexPass",
"save", CmdSave,1, "save trace (from graph window)",
"load", CmdLoad,1, "load trace (to graph window",
"hisimlisten", CmdHisimlisten,0, "get HF samples as fake tag",
"hi14sim", CmdHi14sim,0, "fake ISO 14443 tag",
"hi14asim", CmdHi14asim,0, "fake ISO 14443a tag", // ## Simulate 14443a tag
"hi14snoop", CmdHi14snoop,0, "eavesdrop ISO 14443",
"hi14asnoop", CmdHi14asnoop,0, "eavesdrop ISO 14443 Type A", // ## New snoop command
"hi14list", CmdHi14list,0, "list ISO 14443 history",
"hi14alist", CmdHi14alist,0, "list ISO 14443a history", // ## New list command
"hiddemod", CmdHiddemod,1, "HID Prox Card II (not optimal)",
"hidfskdemod", CmdHIDdemodFSK,0, "HID FSK demodulator",
"askdemod", Cmdaskdemod,1, "Attempt to demodulate simple ASK tags",
"hidsimtag", CmdHIDsimTAG,0, "HID tag simulator",
"mandemod", Cmdmanchesterdemod,1, "Try a Manchester demodulation on a binary stream",
"fpgaoff", CmdFPGAOff,0, "set FPGA off", // ## FPGA Control
"lcdreset", CmdLcdReset,0, "Hardware reset LCD",
"lcd", CmdLcd,0, "Send command/data to LCD",
"setlfdivisor", CmdSetDivisor,0, "Drive LF antenna at 12Mhz/(divisor+1)",
"sweeplf", CmdSweepLF,0, "Sweep through LF freq range and store results in buffer",
"quit", CmdQuit,0, "quit program"
};
//-----------------------------------------------------------------------------
// Entry point into our code: called whenever the user types a command and
// then presses Enter, which the full command line that they typed.