fix another way
[proxmark3-svn] / client / cmdlfpresco.c
index f18c3ec6488e30ff3cff0a999e27c2d5babf5f2a..2f4bacfec29410c4a9149a6470c1daabc52af90a 100644 (file)
@@ -68,10 +68,10 @@ int GetWiegandFromPresco(const char *Cmd, uint32_t *sitecode, uint32_t *usercode
                                *fullcode = param_get32ex(Cmd, cmdp+1, 0, 10);
                                cmdp+=2;
                                break;
                                *fullcode = param_get32ex(Cmd, cmdp+1, 0, 10);
                                cmdp+=2;
                                break;
-                       case 'P':
-                       case 'p':
+                       case 'D':
+                       case 'd':
                                //param get string int param_getstr(const char *line, int paramnum, char * str)
                                //param get string int param_getstr(const char *line, int paramnum, char * str)
-                               stringlen = param_getstr(Cmd, cmdp+1, id);
+                               stringlen = param_getstr(Cmd, cmdp+1, id, sizeof(id));
                                if (stringlen < 2) return -1;
                                cmdp+=2;
                                break;
                                if (stringlen < 2) return -1;
                                cmdp+=2;
                                break;
@@ -91,7 +91,7 @@ int GetWiegandFromPresco(const char *Cmd, uint32_t *sitecode, uint32_t *usercode
        if(cmdp == 0) errors = 1;
 
        //Validations
        if(cmdp == 0) errors = 1;
 
        //Validations
-       if(errors) return -1;
+       if(errors || (stringlen == 0 && !hex) ) return -1;
 
        if (!hex) {
                for (int index =0; index < strlen(id); ++index) {
 
        if (!hex) {
                for (int index =0; index < strlen(id); ++index) {
@@ -144,8 +144,9 @@ int CmdPrescoDemod(const char *Cmd) {
        uint32_t cardid = raw4;
        PrintAndLog("Presco Tag Found: Card ID %08X", cardid);
        PrintAndLog("Raw: %08X%08X%08X%08X", raw1,raw2,raw3,raw4);
        uint32_t cardid = raw4;
        PrintAndLog("Presco Tag Found: Card ID %08X", cardid);
        PrintAndLog("Raw: %08X%08X%08X%08X", raw1,raw2,raw3,raw4);
-       setDemodBuf(DemodBuffer+ans, 128, 0);
-       
+       setDemodBuf(DemodBuffer, 128, ans);
+       setClockGrid(g_DemodClock, g_DemodStartIdx + (ans*g_DemodClock));
+
        uint32_t sitecode = 0, usercode = 0, fullcode = 0;
        bool Q5=false;
        char cmd[12] = {0};
        uint32_t sitecode = 0, usercode = 0, fullcode = 0;
        bool Q5=false;
        char cmd[12] = {0};
Impressum, Datenschutz