X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/f516ff0895ca25cf29a8a3770c543efbf0345be3..378d3406cae2ab5d6f8c43fd933134d5395c4ddb:/client/cmdlf.c?ds=sidebyside diff --git a/client/cmdlf.c b/client/cmdlf.c index 5c479ae0..eb664a11 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -45,6 +45,7 @@ #include "cmdlfjablotron.h" //for jablotron menu #include "cmdlfnoralsy.h"// for noralsy menu #include "cmdlfsecurakey.h"//for securakey menu +#include "cmdlfpac.h" // for pac menu bool g_lf_threshold_set = false; static int CmdHelp(const char *Cmd); @@ -349,7 +350,8 @@ bool lf_read(bool silent, uint32_t samples) { return false; } } - getSamples(resp.arg[0], silent); + // resp.arg[0] is bits read not bytes read. + getSamples(resp.arg[0]/8, silent); return true; } @@ -408,14 +410,13 @@ int CmdLFSim(const char *Cmd) sscanf(Cmd, "%i", &gap); - // convert to bitstream if necessary - + // convert to bitstream if necessary ChkBitstream(Cmd); //can send only 512 bits at a time (1 byte sent per bit...) printf("Sending [%d bytes]", GraphTraceLen); for (i = 0; i < GraphTraceLen; i += USB_CMD_DATA_SIZE) { - UsbCommand c={CMD_DOWNLOADED_SIM_SAMPLES_125K, {i, 0, 0}}; + UsbCommand c = {CMD_DOWNLOADED_SIM_SAMPLES_125K, {i, 0, 0}}; for (j = 0; j < USB_CMD_DATA_SIZE; j++) { c.d.asBytes[j] = GraphBuffer[i+j]; @@ -877,26 +878,27 @@ int CmdVchDemod(const char *Cmd) int CheckChipType(char cmdp) { uint32_t wordData = 0; + if (offline || cmdp == '1') return 0; + + save_restoreGB(GRAPH_SAVE); + save_restoreDB(GRAPH_SAVE); //check for em4x05/em4x69 chips first - save_restoreGB(1); - save_restoreDB(1); - if ((!offline && (cmdp != '1')) && EM4x05Block0Test(&wordData)) { + if (EM4x05Block0Test(&wordData)) { PrintAndLog("\nValid EM4x05/EM4x69 Chip Found\nTry lf em 4x05... commands\n"); - save_restoreGB(0); - save_restoreDB(0); + save_restoreGB(GRAPH_RESTORE); + save_restoreDB(GRAPH_RESTORE); return 1; } - //TODO check for t55xx chip... - - if ((!offline && (cmdp != '1')) && tryDetectP1(true)) { + //check for t55xx chip... + if (tryDetectP1(true)) { PrintAndLog("\nValid T55xx Chip Found\nTry lf t55xx ... commands\n"); - save_restoreGB(0); - save_restoreDB(0); + save_restoreGB(GRAPH_RESTORE); + save_restoreDB(GRAPH_RESTORE); return 1; } - save_restoreGB(0); - save_restoreDB(0); + save_restoreGB(GRAPH_RESTORE); + save_restoreDB(GRAPH_RESTORE); return 0; } @@ -1054,9 +1056,15 @@ int CmdLFfind(const char *Cmd) return CheckChipType(cmdp); } + ans=CmdPacDemod(""); + if (ans>0) { + PrintAndLog("\nValid PAC/Stanley ID Found!"); + return CheckChipType(cmdp); + } + PrintAndLog("\nNo Known Tags Found!\n"); if (testRaw=='u' || testRaw=='U') { - ans=CheckChipType(cmdp); + //ans=CheckChipType(cmdp); //test unknown tag formats (raw mode)0 PrintAndLog("\nChecking for Unknown tags:\n"); ans=AutoCorrelate(GraphBuffer, GraphBuffer, GraphTraceLen, 4000, false, false); @@ -1080,7 +1088,7 @@ int CmdLFfind(const char *Cmd) if (ans>0) { PrintAndLog("Possible unknown PSK1 Modulated Tag Found above!\n\nCould also be PSK2 - try 'data rawdemod p2'"); PrintAndLog("\nCould also be PSK3 - [currently not supported]"); - PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'"); + PrintAndLog("\nCould also be NRZ - try 'data rawdemod nr'"); return CheckChipType(cmdp); } ans = CheckChipType(cmdp); @@ -1104,6 +1112,7 @@ static command_t CommandTable[] = {"jablotron", CmdLFJablotron, 1, "{ Jablotron RFIDs... }"}, {"nexwatch", CmdLFNexWatch, 1, "{ NexWatch RFIDs... }"}, {"noralsy", CmdLFNoralsy, 1, "{ Noralsy RFIDs... }"}, + {"pac", CmdLFPac, 1, "{ PAC/Stanley RFIDs... }"}, {"paradox", CmdLFParadox, 1, "{ Paradox RFIDs... }"}, {"presco", CmdLFPresco, 1, "{ Presco RFIDs... }"}, {"pcf7931", CmdLFPCF7931, 1, "{ PCF7931 CHIPs... }"},