From c2d25819d8c55b568814da61d116fda9b4ad53d1 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 24 Oct 2014 00:04:56 +0200 Subject: [PATCH] BUG: the lf read now uses "getbigbuffer" which the offset from where the data starts in "data samples nnnnn" needed to be set. ADD: ioprox nxp identifikations --- client/cmddata.c | 4 ++-- client/cmdhf15.c | 6 +++-- client/cmdlf.c | 6 +++-- client/cmdlfem4x.c | 54 ++++++++++++++++++++------------------------- client/cmdlft55xx.c | 8 +++---- 5 files changed, 38 insertions(+), 40 deletions(-) diff --git a/client/cmddata.c b/client/cmddata.c index e7be9884..f5b9fc9c 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -464,8 +464,8 @@ int CmdSamples(const char *Cmd) if (n == 0) n = 512; if (n > sizeof(got)) n = sizeof(got); - PrintAndLog("Reading %d samples\n", n); - GetFromBigBuf(got,n,0); + PrintAndLog("Reading %d samples from device memory\n", n); + GetFromBigBuf(got,n,3560); WaitForResponse(CMD_ACK,NULL); for (int j = 0; j < n; j++) { GraphBuffer[cnt++] = ((int)got[j]) - 128; diff --git a/client/cmdhf15.c b/client/cmdhf15.c index 1ee04e1b..bdc08521 100644 --- a/client/cmdhf15.c +++ b/client/cmdhf15.c @@ -59,8 +59,10 @@ const productName uidmapping[] = { { 0xE001000000000000LL, 16, "Motorola" }, { 0xE002000000000000LL, 16, "ST Microelectronics" }, { 0xE003000000000000LL, 16, "Hitachi" }, - { 0xE004000000000000LL, 16, "Philips" }, - { 0xE004010000000000LL, 24, "Philips; IC SL2 ICS20" }, + { 0xE004000000000000LL, 16, "NXP(Philips)" }, + { 0xE004010000000000LL, 24, "NXP(Philips); IC SL2 ICS20/ICS21(SLI) ICS2002/ICS2102(SLIX)" }, + { 0xE004020000000000LL, 24, "NXP(Philips); IC SL2 ICS53/ICS54(SLI-S) ICS5302/ICS5402(SLIX-S)" }, + { 0xE004030000000000LL, 24, "NXP(Philips); IC SL2 ICS50/ICS51(SLI-L) ICS5002/ICS5102(SLIX-L)" }, { 0xE005000000000000LL, 16, "Infineon" }, { 0xE005400000000000LL, 24, "Infineon; 56x32bit" }, { 0xE006000000000000LL, 16, "Cylinc" }, diff --git a/client/cmdlf.c b/client/cmdlf.c index 2306121b..a198e1e1 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -363,7 +363,9 @@ int CmdLFRead(const char *Cmd) } else if (*Cmd == '\0') { c.arg[0] = 0; } else if (sscanf(Cmd, "%"lli, &c.arg[0]) != 1) { - PrintAndLog("use 'read' or 'read h', or 'read '"); + PrintAndLog("Samples 1: 'lf read'"); + PrintAndLog(" 2: 'lf read h'"); + PrintAndLog(" 3: 'lf read '"); return 0; } SendCommand(&c); @@ -566,7 +568,7 @@ static command_t CommandTable[] = {"flexdemod", CmdFlexdemod, 1, "Demodulate samples for FlexPass"}, {"indalademod", CmdIndalaDemod, 1, "['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"}, - {"indalaclone", CmdIndalaClone, 1, " ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID"}, + {"indalaclone", CmdIndalaClone, 1, " ['l']-- Clone Indala to T55x7 (UID in HEX)(option 'l' for 224 UID"}, {"vchdemod", CmdVchDemod, 1, "['clone'] -- Demodulate samples for VeriChip"}, diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index 8380bcba..0449e34a 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -255,38 +255,32 @@ int CmdEM410xSim(const char *Cmd) return 0; } -/* Function is equivalent of loread + losamples + em410xread - * looped until an EM410x tag is detected */ +/* Function is equivalent of lf read + data samples + em410xread + * looped until an EM410x tag is detected + * + * Why is CmdSamples("16000")? + * TBD: Auto-grow sample size based on detected sample rate. IE: If the + * rate gets lower, then grow the number of samples + * Changed by martin, 4000 x 4 = 16000, + * see http://www.proxmark.org/forum/viewtopic.php?pid=7235#p7235 + +*/ int CmdEM410xWatch(const char *Cmd) { - int read_h = (*Cmd == 'h'); - //char k; - do - { - CmdLFRead(read_h ? "h" : ""); - // 2000 samples is OK for clock=64, but not clock=32. Probably want - // 8000 for clock=16. Don't want to go too high since old HID driver - // is very slow - // TBD: Auto-grow sample size based on detected sample rate. IE: If the - // rate gets lower, then grow the number of samples - - // Changed by martin, 4000 x 4 = 16000, - // see http://www.proxmark.org/forum/viewtopic.php?pid=7235#p7235 - CmdSamples("16000"); - } while ( + int read_h = (*Cmd == 'h'); + do + { + CmdLFRead(read_h ? "h" : ""); + CmdSamples("16000"); + } while ( !CmdEM410xRead("") ); - return 0; + return 0; } int CmdEM410xWatchnSpoof(const char *Cmd) { - int read_h = (*Cmd == 'h'); - do - { - CmdLFRead(read_h ? "h" : ""); - CmdSamples("16000"); - } while ( ! CmdEM410xRead("")); + CmdEM410xWatch(Cmd); PrintAndLog("# Replaying : %s",global_em410xId); CmdEM410xSim(global_em410xId); return 0; @@ -636,12 +630,12 @@ int CmdWriteWordPWD(const char *Cmd) static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, - {"410read", CmdEM410xRead, 1, "[clock rate] -- Extract ID from EM410x tag"}, - {"410sim", CmdEM410xSim, 0, " -- Simulate EM410x tag"}, - {"410watch", CmdEM410xWatch, 0, "['h'] -- Watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, - {"410spoof", CmdEM410xWatchnSpoof, 0, "['h'] --- Watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, - {"410write", CmdEM410xWrite, 1, " <'0' T5555> <'1' T55x7> [clock rate] -- Write EM410x UID to T5555(Q5) or T55x7 tag, optionally setting clock rate"}, - {"4xread", CmdEM4x50Read, 1, "Extract data from EM4x50 tag"}, + {"410xread", CmdEM410xRead, 1, "[clock rate] -- Extract ID from EM410x tag"}, + {"410xsim", CmdEM410xSim, 0, " -- Simulate EM410x tag"}, + {"410xwatch", CmdEM410xWatch, 0, "['h'] -- Watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, + {"410xspoof", CmdEM410xWatchnSpoof, 0, "['h'] --- Watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, + {"410xwrite", CmdEM410xWrite, 1, " <'0' T5555> <'1' T55x7> [clock rate] -- Write EM410x UID to T5555(Q5) or T55x7 tag, optionally setting clock rate"}, + {"4x50read", CmdEM4x50Read, 1, "Extract data from EM4x50 tag"}, {"rd", CmdReadWord, 1, " -- Read EM4xxx word data"}, {"rdpwd", CmdReadWordPWD, 1, " -- Read EM4xxx word data in password mode "}, {"wr", CmdWriteWord, 1, " -- Write EM4xxx word data"}, diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index 8420465b..63cc2ee4 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -56,7 +56,7 @@ int CmdReadBlk(const char *Cmd) GraphBuffer[j] = (int)data[j]; } GraphTraceLen = LF_TRACE_BUFF_SIZE; - CmdIceManchester(Block); + ManchesterDemod(Block); RepaintGraphWindow(); return 0; } @@ -93,7 +93,7 @@ int CmdReadBlkPWD(const char *Cmd) GraphBuffer[j] = ((int)data[j]) - 128; } GraphTraceLen = LF_TRACE_BUFF_SIZE; - CmdIceManchester(Block); + ManchesterDemod(Block); RepaintGraphWindow(); return 0; } @@ -475,9 +475,9 @@ static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"rd", CmdReadBlk, 0, " -- Read T55xx block data (page 0)"}, - {"rdPWD", CmdReadBlkPWD, 0, " -- Read T55xx block data with password mode"}, + {"rdpwd", CmdReadBlkPWD, 0, " -- Read T55xx block data with password mode"}, {"wr", CmdWriteBlk, 0, " -- Write T55xx block data (page 0)"}, - {"wrPWD", CmdWriteBlkPWD, 0, " -- Write T55xx block data with password"}, + {"wrpwd", CmdWriteBlkPWD, 0, " -- Write T55xx block data with password"}, {"trace", CmdReadTrace, 0, "[1] Read T55xx traceability data (page 1 / blk 0-1) "}, {"info", CmdInfo, 0, "[1] Read T55xx configuration data (page0 /blk 0)"}, {"dump", CmdDump, 0, "[password] Dump T55xx card block 0-7. optional with password"}, -- 2.39.5