]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
FIX: the lfsampling.c for t55xx had a tendecy to enter a neverending loop. Moved...
authoriceman1001 <iceman@iuse.se>
Tue, 1 Dec 2015 21:38:37 +0000 (22:38 +0100)
committericeman1001 <iceman@iuse.se>
Tue, 1 Dec 2015 21:38:37 +0000 (22:38 +0100)
FIX: Strange int -> uint8_t casting behavior  (0x05 gets the 25bit set and becomes 0x10005 instead) in fskdemod,  removed int and sscanf.

armsrc/lfsampling.c
client/cmddata.c
client/cmdlft55xx.c

index 8931f41d1b51385dd8375600fe6d3fec38487bd0..7d55fa3cfae938b11edf054422ff461cd6f74869 100644 (file)
@@ -271,7 +271,7 @@ void doT55x7Acquisition(size_t sample_size) {
        uint8_t curSample = 0;
        uint8_t lastSample = 0;
        uint16_t skipCnt = 0;
-       while(!BUTTON_PRESS() && !usb_poll_validate_length() && skipCnt<1000) {
+       while(!BUTTON_PRESS() && !usb_poll_validate_length() && skipCnt < 1000 && (i < bufsize) ) {
                WDT_HIT();              
                if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY) {
                        AT91C_BASE_SSC->SSC_THR = 0x43;
@@ -306,11 +306,10 @@ void doT55x7Acquisition(size_t sample_size) {
                                // if just found start - recover last sample
                                if (!startFound) {
                                        dest[i++] = lastSample;
-                               startFound = true;
+                                       startFound = true;
                                }
                                // collect samples
                                dest[i++] = curSample;
-                               if (i >= bufsize-1) break;
                        }
                }
        }
index aeabd985612af6c7f2a1a02be2f223b07fa0ae58..3898f28d76fa4381c607d6a316401e0ea1848a5a 100644 (file)
@@ -934,15 +934,15 @@ char *GetFSKType(uint8_t fchigh, uint8_t fclow, uint8_t invert)
 int FSKrawDemod(const char *Cmd, bool verbose)
 {
        //raw fsk demod  no manchester decoding no start bit finding just get binary from wave
-       //set defaults
-       int rfLen = 0;
-       int invert = 0;
-       int fchigh = 0;
-       int fclow = 0;
+       uint8_t rfLen, invert, fchigh, fclow;
 
+       //set defaults
        //set options from parameters entered with the command
-       sscanf(Cmd, "%i %i %i %i", &rfLen, &invert, &fchigh, &fclow);
-
+       rfLen = param_get8ex(Cmd, 0, 0, 10);
+       invert = param_get8ex(Cmd, 1, 0, 10);
+       fchigh = param_get8ex(Cmd, 2, 0, 10);
+       fclow = param_get8ex(Cmd, 3, 0, 10);
+       
        if (strlen(Cmd)>0 && strlen(Cmd)<=2) {
                 if (rfLen==1){
                        invert = 1;   //if invert option only is used
@@ -958,31 +958,31 @@ int FSKrawDemod(const char *Cmd, bool verbose)
        if (fchigh==0 || fclow == 0){
                fcs = countFC(BitStream, BitLen, 1);
                if (fcs==0){
-                       fchigh=10;
-                       fclow=8;
-               }else{
+                       fchigh = 10;
+                       fclow = 8;
+               } else {
                        fchigh = (fcs >> 8) & 0xFF;
                        fclow = fcs & 0xFF;
                }
        }
+
        //get bit clock length
-       if (rfLen==0){
+       if (rfLen == 0){
                rfLen = detectFSKClk(BitStream, BitLen, fchigh, fclow);
                if (rfLen == 0) rfLen = 50;
        }
-       int size = fskdemod(BitStream,BitLen,(uint8_t)rfLen,(uint8_t)invert,(uint8_t)fchigh,(uint8_t)fclow);
-       if (size>0){
-               setDemodBuf(BitStream,size,0);
+       int size = fskdemod(BitStream, BitLen, rfLen, invert, fchigh, fclow);
+       if (size > 0){
+               setDemodBuf(BitStream, size, 0);
 
                // Now output the bitstream to the scrollback by line of 16 bits
                if (verbose || g_debugMode) {
-                       PrintAndLog("\nUsing Clock:%d, invert:%d, fchigh:%d, fclow:%d", rfLen, invert, fchigh, fclow);
-                       PrintAndLog("%s decoded bitstream:",GetFSKType(fchigh,fclow,invert));
+                       PrintAndLog("\nUsing Clock:%d, invert:%d, fchigh:%d, fclow:%u", rfLen, invert, fchigh, fclow);
+                       PrintAndLog("%s decoded bitstream:", GetFSKType(fchigh, fclow, invert));
                        printDemodBuff();
                }
-
                return 1;
-       } else{
+       } else {
                if (g_debugMode) PrintAndLog("no FSK data found");
        }
        return 0;
index f034ce5a042ab15a67e5a5ff8da79aa32789f0d6..6e8893d5f345626fef4e81c7e6746e24026b2b3d 100644 (file)
@@ -1407,7 +1407,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
                        found = tryDetectModulation();\r
 \r
                        if ( found ) {\r
-                               PrintAndLog("Found valid password:[%08X]", testpwd);\r
+                               PrintAndLog("Found valid password: [%08X]", testpwd);\r
                                return 0;\r
                        } \r
                }\r
Impressum, Datenschutz