]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
Merge branch 'master' of https://github.com/Proxmark/proxmark3
authoriceman1001 <iceman@iuse.se>
Wed, 1 Apr 2015 16:02:10 +0000 (18:02 +0200)
committericeman1001 <iceman@iuse.se>
Wed, 1 Apr 2015 16:02:10 +0000 (18:02 +0200)
Conflicts:
armsrc/Makefile
armsrc/lfops.c
client/cmdlft55xx.c
common/ldscript.common
common/lfdemod.c

1  2 
armsrc/Makefile
armsrc/lfops.c
client/cmddata.c
client/cmdlft55xx.c

diff --cc armsrc/Makefile
Simple merge
diff --cc armsrc/lfops.c
index 1bd23e5a7251c27f2682ee1c684de79b3e858db2,e5a40b2e916f16b4d963325c7bf1c940502e0a47..d6d686e18279eca0f42eba25131ad1c81659b6b6
@@@ -921,62 -919,45 +921,62 @@@ void CmdIOdemodFSK(int findone, int *hi
                WDT_HIT();
                idx = IOdemodFSK(dest, BigBuf_max_traceLen());
                if (idx<0) continue;
 -              //valid tag found
 -
 -              //Index map
 -              //0           10          20          30          40          50          60
 -              //|           |           |           |           |           |           |
 -              //01234567 8 90123456 7 89012345 6 78901234 5 67890123 4 56789012 3 45678901 23
 -              //-----------------------------------------------------------------------------
 -              //00000000 0 11110000 1 facility 1 version* 1 code*one 1 code*two 1 ???????? 11
 -              //
 -              //XSF(version)facility:codeone+codetwo
 -              //Handle the data
 -              if(findone){ //only print binary if we are doing one
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx],   dest[idx+1],   dest[idx+2],dest[idx+3],dest[idx+4],dest[idx+5],dest[idx+6],dest[idx+7],dest[idx+8]);
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+9], dest[idx+10],dest[idx+11],dest[idx+12],dest[idx+13],dest[idx+14],dest[idx+15],dest[idx+16],dest[idx+17]);
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+18],dest[idx+19],dest[idx+20],dest[idx+21],dest[idx+22],dest[idx+23],dest[idx+24],dest[idx+25],dest[idx+26]);
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+27],dest[idx+28],dest[idx+29],dest[idx+30],dest[idx+31],dest[idx+32],dest[idx+33],dest[idx+34],dest[idx+35]);
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+36],dest[idx+37],dest[idx+38],dest[idx+39],dest[idx+40],dest[idx+41],dest[idx+42],dest[idx+43],dest[idx+44]);
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+45],dest[idx+46],dest[idx+47],dest[idx+48],dest[idx+49],dest[idx+50],dest[idx+51],dest[idx+52],dest[idx+53]);
 -                      Dbprintf("%d%d%d%d%d%d%d%d %d%d",dest[idx+54],dest[idx+55],dest[idx+56],dest[idx+57],dest[idx+58],dest[idx+59],dest[idx+60],dest[idx+61],dest[idx+62],dest[idx+63]);
 -              }
 -              code = bytebits_to_byte(dest+idx,32);
 -              code2 = bytebits_to_byte(dest+idx+32,32);
 -              version = bytebits_to_byte(dest+idx+27,8); //14,4
 +                      //valid tag found
 +
 +                      //Index map
 +                      //0           10          20          30          40          50          60
 +                      //|           |           |           |           |           |           |
 +                      //01234567 8 90123456 7 89012345 6 78901234 5 67890123 4 56789012 3 45678901 23
 +                      //-----------------------------------------------------------------------------
 +            //00000000 0 11110000 1 facility 1 version* 1 code*one 1 code*two 1 checksum 11
 +                      //
 +                      //Checksum:  
 +                      //00000000 0 11110000 1 11100000 1 00000001 1 00000011 1 10110110 1 01110101 11
 +                      //preamble      F0         E0         01         03         B6         75
 +                      // How to calc checksum,
 +                      // http://www.proxmark.org/forum/viewtopic.php?id=364&p=6
 +                      //   F0 + E0 + 01 + 03 + B6 = 28A
 +                      //   28A & FF = 8A
 +                      //   FF - 8A = 75
 +                      // Checksum: 0x75
 +                      //XSF(version)facility:codeone+codetwo
 +                      //Handle the data
 +                      if(findone){ //only print binary if we are doing one
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx],   dest[idx+1],   dest[idx+2],dest[idx+3],dest[idx+4],dest[idx+5],dest[idx+6],dest[idx+7],dest[idx+8]);
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+9], dest[idx+10],dest[idx+11],dest[idx+12],dest[idx+13],dest[idx+14],dest[idx+15],dest[idx+16],dest[idx+17]);
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+18],dest[idx+19],dest[idx+20],dest[idx+21],dest[idx+22],dest[idx+23],dest[idx+24],dest[idx+25],dest[idx+26]);
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+27],dest[idx+28],dest[idx+29],dest[idx+30],dest[idx+31],dest[idx+32],dest[idx+33],dest[idx+34],dest[idx+35]);
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+36],dest[idx+37],dest[idx+38],dest[idx+39],dest[idx+40],dest[idx+41],dest[idx+42],dest[idx+43],dest[idx+44]);
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d",dest[idx+45],dest[idx+46],dest[idx+47],dest[idx+48],dest[idx+49],dest[idx+50],dest[idx+51],dest[idx+52],dest[idx+53]);
 +                              Dbprintf("%d%d%d%d%d%d%d%d %d%d",dest[idx+54],dest[idx+55],dest[idx+56],dest[idx+57],dest[idx+58],dest[idx+59],dest[idx+60],dest[idx+61],dest[idx+62],dest[idx+63]);
 +                      }
 +                      code = bytebits_to_byte(dest+idx,32);
 +                      code2 = bytebits_to_byte(dest+idx+32,32);
 +                      version = bytebits_to_byte(dest+idx+27,8); //14,4
-                       facilitycode = bytebits_to_byte(dest+idx+18,8) ;
+               facilitycode = bytebits_to_byte(dest+idx+18,8);
 -              number = (bytebits_to_byte(dest+idx+36,8)<<8)|(bytebits_to_byte(dest+idx+45,8)); //36,9
 -
 -              Dbprintf("XSF(%02d)%02x:%05d (%08x%08x)",version,facilitycode,number,code,code2);
 -              // if we're only looking for one tag
 -              if (findone){
 -                      if (ledcontrol) LED_A_OFF();
 -                      //LED_A_OFF();
 -                      *high=code;
 -                      *low=code2;
 -                      return;
 -              }
 -              code=code2=0;
 -              version=facilitycode=0;
 -              number=0;
 -              idx=0;
 +                      number = (bytebits_to_byte(dest+idx+36,8)<<8)|(bytebits_to_byte(dest+idx+45,8)); //36,9
 +
 +                      crc = bytebits_to_byte(dest+idx+54,8);
 +                      for (uint8_t i=1; i<6; ++i)
 +                              calccrc += bytebits_to_byte(dest+idx+9*i,8);
 +                      calccrc &= 0xff;
 +                      calccrc = 0xff - calccrc;
 +                      
 +                      char *crcStr = (crc == calccrc) ? "ok":"!crc";
 +
 +            Dbprintf("IO Prox XSF(%02d)%02x:%05d (%08x%08x)  [%02x %s]",version,facilitycode,number,code,code2, crc, crcStr);
 +                      // if we're only looking for one tag
 +                      if (findone){
 +                              if (ledcontrol) LED_A_OFF();
 +                              //LED_A_OFF();
 +                              *high=code;
 +                              *low=code2;
 +                              return;
 +                      }
 +                      code=code2=0;
 +                      version=facilitycode=0;
 +                      number=0;
 +                      idx=0;
  
                WDT_HIT();
        }
index 2563cb18a51b22edc16a19dfa24ebbefdba9cf4d,5595998445db159118df4cdceb26d81e8e259359..f2f1cfd7a2800596038f5dc6f53896a92a715a7e
@@@ -675,9 -677,8 +678,9 @@@ int ASKbiphaseDemod(const char *Cmd, bo
        //ask raw demod GraphBuffer first
        int offset=0, clk=0, invert=0, maxErr=0, ans=0;
        ans = sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
 +
        if (ans>0)
-               ans = ASKrawDemod(Cmd+2, FALSE);
+               ans = ASKrawDemod(Cmd+1, FALSE);
        else
                ans = ASKrawDemod(Cmd, FALSE);
        if (!ans) {
index 7d967d5d68827a44b64180dfe841afe2833015ec,b6b29c053240496b512951d4188f37c23997da29..ed7e2c800950464fa6858d8825028b4a7713e7ee
@@@ -954,22 -957,24 +954,24 @@@ char * GetBitRateStr(uint32_t id)
        return buf;\r
  }\r
  \r
\r
  char * GetSaferStr(uint32_t id){\r
 -      static char buf[40];\r
 +      static char buf[20];\r
        char *retStr = buf;\r
        \r
-       sprintf(retStr,"%d",id);\r
+       snprintf(retStr,sizeof(buf),"%d",id);\r
        if (id == 6) {\r
-               sprintf(retStr,"%d - passwd",id);\r
+               snprintf(retStr,sizeof(buf),"%d - passwd",id);\r
        }\r
        if (id == 9 ){\r
-               sprintf(retStr,"%d - testmode",id);\r
+               snprintf(retStr,sizeof(buf),"%d - testmode",id);\r
        }\r
        \r
        return buf;\r
  }\r
\r
  char * GetModulationStr( uint32_t id){\r
 -      static char buf[40];\r
 +      static char buf[60];\r
        char *retStr = buf;\r
        \r
        switch (id){\r
Impressum, Datenschutz