]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmddata.c
Merge branch 'master' of https://github.com/iceman1001/proxmark3
[proxmark3-svn] / client / cmddata.c
index eb12fc8496a8354bc9b20e600bed67a92d98acd8..f263bbe9ef4a52f1edb650de13b085abb5166c28 100644 (file)
@@ -458,23 +458,36 @@ void printEM410x(uint32_t hi, uint64_t id)
 int AskEm410xDecode(bool verbose, uint32_t *hi, uint64_t *lo )
 {
        size_t idx = 0;
-       size_t BitLen = DemodBufferLen;
+       size_t size = DemodBufferLen;
        uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
-       memcpy(BitStream, DemodBuffer, BitLen); 
-       if (Em410xDecode(BitStream, &BitLen, &idx, hi, lo)){
-               //set GraphBuffer for clone or sim command
-               setDemodBuf(BitStream, BitLen, idx);
+       memcpy(BitStream, DemodBuffer, size); 
+       int ans = Em410xDecode(BitStream, &size, &idx, hi, lo);
+       if ( ans < 0){
                if (g_debugMode){
-                       PrintAndLog("DEBUG: idx: %d, Len: %d, Printing Demod Buffer:", idx, BitLen);
-                       printDemodBuff();
-               }
-               if (verbose){
-                       PrintAndLog("EM410x pattern found: ");
-                       printEM410x(*hi, *lo);
+
+                       if (ans == -1)
+                               PrintAndLog("DEBUG: Error - Em410x not only 0|1 in decoded bitstream");
+                       else if (ans == -3)
+                               PrintAndLog("DEBUG: Error - Em410x Size not correct: %d", size);
+                       else if (ans == -4)
+                               PrintAndLog("DEBUG: Error - Em410x preamble not found");
+                       else if (ans == -5)
+                               PrintAndLog("DEBUG: Error - Em410x parity failed");
                }
-               return 1;
+               return 0;
        }
-       return 0;
+       
+       //set GraphBuffer for clone or sim command
+       setDemodBuf(BitStream, size, idx);
+       if (g_debugMode){
+               PrintAndLog("DEBUG: idx: %d, Len: %d, Printing Demod Buffer:", idx, size);
+               printDemodBuff();
+       }
+       if (verbose){
+               PrintAndLog("EM410x pattern found: ");
+               printEM410x(*hi, *lo);
+       }
+       return 1;
 }
 
 int AskEm410xDemod(const char *Cmd, uint32_t *hi, uint64_t *lo, bool verbose)
@@ -969,17 +982,17 @@ int CmdUndec(const char *Cmd)
 //shift graph zero up or down based on input + or -
 int CmdGraphShiftZero(const char *Cmd)
 {
-       int shift=0;
+       int shift = 0, shiftedVal = 0;
        //set options from parameters entered with the command
        sscanf(Cmd, "%i", &shift);
-       int shiftedVal=0;
+
        for(int i = 0; i<GraphTraceLen; i++){
                shiftedVal=GraphBuffer[i]+shift;
-               if (shiftedVal>127) 
-                       shiftedVal=127;
-               else if (shiftedVal<-127) 
-                       shiftedVal=-127;
-               GraphBuffer[i]= shiftedVal;
+               if (shiftedVal > 127) 
+                       shiftedVal = 127;
+               else if (shiftedVal < -127) 
+                       shiftedVal = -127;
+               GraphBuffer[i] = shiftedVal;
        }
        CmdNorm("");
        return 0;
Impressum, Datenschutz