]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: lf indalademod output, The binary string is now printed with linebreaks every...
authoriceman1001 <iceman@iuse.se>
Sat, 21 Nov 2015 17:48:58 +0000 (18:48 +0100)
committericeman1001 <iceman@iuse.se>
Sat, 21 Nov 2015 17:48:58 +0000 (18:48 +0100)
ADD: lf awid code is modified,  some minor changes in outputs
ADD: lf t55xx write now prints the password on the same row,  looks better when using the new "lf t55xx wipe" command.
ADD: the ioprox T55X7_IOPROX_CONFIG_BLOCK block.

client/cmddata.c
client/cmdhfmfu.c
client/cmdlfawid.c
client/cmdlft55xx.c
client/cmdlft55xx.h

index b141b6f8539133fe0fa10791ec4b9019321cd39d..3d56a971b182ea8476d2b12566176fe0e84390d8 100644 (file)
@@ -125,9 +125,7 @@ int CmdPrintDemodBuff(const char *Cmd)
                if (numBits==0) return 0;
                PrintAndLog("DemodBuffer: %s",hex);             
        } else {
-               //setDemodBuf(DemodBuffer, DemodBufferLen-offset, offset);
-               char *bin = sprint_bin_break(DemodBuffer+offset,numBits,16);
-               PrintAndLog("DemodBuffer:\n%s",bin);
+               PrintAndLog("DemodBuffer:\n%s", sprint_bin_break(DemodBuffer+offset,numBits,16));
        }
        return 1;
 }
@@ -1628,7 +1626,7 @@ int CmdIndalaDecode(const char *Cmd)
        uid1=bytebits_to_byte(DemodBuffer,32);
        uid2=bytebits_to_byte(DemodBuffer+32,32);
        if (DemodBufferLen==64){
-               PrintAndLog("Indala UID=%s (%x%08x)", sprint_bin(DemodBuffer,DemodBufferLen), uid1, uid2);
+               PrintAndLog("Indala UID=%s (%x%08x)",  sprint_bin_break(DemodBuffer,DemodBufferLen,16), uid1, uid2);
        } else {
                uid3=bytebits_to_byte(DemodBuffer+64,32);
                uid4=bytebits_to_byte(DemodBuffer+96,32);
@@ -1636,7 +1634,7 @@ int CmdIndalaDecode(const char *Cmd)
                uid6=bytebits_to_byte(DemodBuffer+160,32);
                uid7=bytebits_to_byte(DemodBuffer+192,32);
                PrintAndLog("Indala UID=%s (%x%08x%08x%08x%08x%08x%08x)", 
-                   sprint_bin(DemodBuffer,DemodBufferLen), uid1, uid2, uid3, uid4, uid5, uid6, uid7);
+                    sprint_bin_break(DemodBuffer,DemodBufferLen,16), uid1, uid2, uid3, uid4, uid5, uid6, uid7);
        }
        if (g_debugMode){
                PrintAndLog("DEBUG: printing demodbuffer:");
@@ -1959,10 +1957,7 @@ int getSamples(const char *Cmd, bool silent)
 
        int n = strtol(Cmd, NULL, 0);
 
-       if (n == 0)
-               n = sizeof(got);
-
-       if (n > sizeof(got))
+       if ( n == 0 || n > sizeof(got))
                n = sizeof(got);
 
        PrintAndLog("Reading %d bytes from device memory\n", n);
@@ -1976,8 +1971,7 @@ int getSamples(const char *Cmd, bool silent)
        if(response.arg[0] > 0)
        {
                sample_config *sc = (sample_config *) response.d.asBytes;
-               PrintAndLog("Samples @ %d bits/smpl, decimation 1:%d ", sc->bits_per_sample
-                   , sc->decimation);
+               PrintAndLog("Samples @ %d bits/smpl, decimation 1:%d ", sc->bits_per_sample, sc->decimation);
                bits_per_sample = sc->bits_per_sample;
        }
        if(bits_per_sample < 8)
index 076093392c4ca3744e550e0cdb7521f863458b4b..6ccdd08808f149c95f6b7f5084763cf1c23fa831 100644 (file)
@@ -1848,9 +1848,8 @@ int CmdHF14AMfuELoad(const char *Cmd)
        
        char ctmp = param_getchar(Cmd, 0);
                
-       if ( ctmp == 'h' || ctmp == 0x00) {
-               return usage_hf_mfu_eload();
-       }       
+       if ( ctmp == 'h' || ctmp == 0x00) return usage_hf_mfu_eload();
+
 /*
        switch (ctmp) {
                case '0' : numBlocks = 5*4; break;
index ed56f660a3b531940c523db64f3d7f9ddb4b1f7e..3b189efee5665494dd29e0f754da1aa1f6a81a17 100644 (file)
 #include "cmdmain.h"
 static int CmdHelp(const char *Cmd);
 
-
 int usage_lf_awid_fskdemod(void) {
   PrintAndLog("Enables AWID26 compatible reader mode printing details of scanned AWID26 tags.");
   PrintAndLog("By default, values are printed and logged until the button is pressed or another USB command is issued.");
   PrintAndLog("If the ['1'] option is provided, reader mode is exited after reading a single AWID26 card.");
   PrintAndLog("");
   PrintAndLog("Usage:  lf awid fskdemod ['1']");
-  PrintAndLog("  Options : ");
+  PrintAndLog("Options :");
   PrintAndLog("  1 : (optional) stop after reading a single card");
   PrintAndLog("");
   PrintAndLog("   sample : lf awid fskdemod");
@@ -40,11 +39,11 @@ int usage_lf_awid_sim(void) {
   PrintAndLog("Per AWID26 format, the facility-code is 8-bit and the card number is 16-bit.  Larger values are truncated.");
   PrintAndLog("");
   PrintAndLog("Usage:  lf awid sim <Facility-Code> <Card-Number>");
-  PrintAndLog("  Options : ");
-  PrintAndLog("  <Facility-Code> : 8-bit value representing the AWID facility code");
-  PrintAndLog("  <Card Number>   : 16-bit value representing the AWID card number");
+  PrintAndLog("Options :");
+  PrintAndLog("  <Facility-Code> :  8-bit value AWID facility code");
+  PrintAndLog("  <Card Number>   : 16-bit value AWID card number");
   PrintAndLog("");
-  PrintAndLog("   sample : lf awid sim 224 1337");
+  PrintAndLog("sample   : lf awid sim 224 1337");
   return 0;
 }
 
@@ -54,21 +53,21 @@ int usage_lf_awid_clone(void) {
   PrintAndLog("Per AWID26 format, the facility-code is 8-bit and the card number is 16-bit.  Larger values are truncated.");
   PrintAndLog("");
   PrintAndLog("Usage:  lf awid clone <Facility-Code> <Card-Number>");
-  PrintAndLog("  Options : ");
-  PrintAndLog("  <Facility-Code> : 8-bit value representing the AWID facility code");
-  PrintAndLog("  <Card Number>   : 16-bit value representing the AWID card number");
+  PrintAndLog("Options :");
+  PrintAndLog("  <Facility-Code> :  8-bit value AWID facility code");
+  PrintAndLog("  <Card Number>   : 16-bit value AWID card number");
   PrintAndLog("");
-  PrintAndLog("   sample : lf awid clone 224 1337");
+  PrintAndLog("sample  : lf awid clone 224 1337");
   return 0;
 }
 
-int CmdAWIDDemodFSK(const char *Cmd)
-{
-  int findone=0;
-  if(Cmd[0]=='1') findone=1;
-  if (Cmd[0]=='h' || Cmd[0] == 'H') return usage_lf_awid_fskdemod();
-  UsbCommand c={CMD_AWID_DEMOD_FSK};
-  c.arg[0]=findone;
+int CmdAWIDDemodFSK(const char *Cmd) {
+  int findone = 0;
+  if (Cmd[0] == 'h' || Cmd[0] == 'H') return usage_lf_awid_fskdemod();
+  
+  if (Cmd[0] == '1') findone = 1;
+  
+  UsbCommand c = {CMD_AWID_DEMOD_FSK, {findone, 0, 0}};
   clearCommandBuffer();
   SendCommand(&c);
   return 0;   
@@ -76,114 +75,133 @@ int CmdAWIDDemodFSK(const char *Cmd)
 
 int getAWIDBits(unsigned int fc, unsigned int cn, uint8_t *AWIDBits)
 {
-  int i;
-  uint32_t fcode=(fc & 0x000000FF), cnum=(cn & 0x0000FFFF), uBits=0;
-  if (fcode != fc)
-    PrintAndLog("NOTE: Facility code truncated for AWID26 format (8-bit facility code)");
-  if (cnum!=cn)
-    PrintAndLog("NOTE: Card number was truncated for AWID26 format (16-bit card number)");
-
-  AWIDBits[0] = 0x01; // 6-bit Preamble with 2 parity bits
-  AWIDBits[1] = 0x1D; // First byte from card format (26-bit) plus parity bits
-  AWIDBits[2] = 0x80; // Set the next two bits as 0b10 to finish card format
-  uBits = (fcode<<4) + (cnum>>12);
-  if (!parityTest(uBits,12,0))
-    AWIDBits[2] |= (1<<5); // If not already even parity, set bit to make even
-  uBits = AWIDBits[2]>>5;
-  if (!parityTest(uBits, 3, 1))
-    AWIDBits[2] |= (1<<4);
-  uBits = fcode>>5; // first 3 bits of facility-code
-  AWIDBits[2] += (uBits<<1);
-  if (!parityTest(uBits, 3, 1))
-    AWIDBits[2]++; // Set parity bit to make odd parity
-  uBits = (fcode & 0x1C)>>2;
-  AWIDBits[3] = 0;
-  if (!parityTest(uBits,3,1))
-    AWIDBits[3] |= (1<<4);
-  AWIDBits[3] += (uBits<<5);
-  uBits = ((fcode & 0x3)<<1) + ((cnum & 0x8000)>>15); // Grab/shift 2 LSBs from facility code and add shifted MSB from cardnum
-  if (!parityTest(uBits,3,1))
-    AWIDBits[3]++; // Set LSB for parity
-  AWIDBits[3]+= (uBits<<1);
-  uBits = (cnum & 0x7000)>>12;
-  AWIDBits[4] = uBits<<5;
-  if (!parityTest(uBits,3,1))
-    AWIDBits[4] |= (1<<4);
-  uBits = (cnum & 0x0E00)>>9;
-  AWIDBits[4] += (uBits<<1);
-  if (!parityTest(uBits,3,1))
-    AWIDBits[4]++; // Set LSB for parity
-  uBits = (cnum & 0x1C0)>>6; // Next bits from card number
-  AWIDBits[5]=(uBits<<5);
-  if (!parityTest(uBits,3,1))
-    AWIDBits[5] |= (1<<4); // Set odd parity bit as needed
-  uBits = (cnum & 0x38)>>3;
-  AWIDBits[5]+= (uBits<<1);
-  if (!parityTest(uBits,3,1))
-    AWIDBits[5]++; // Set odd parity bit as needed
-  uBits = (cnum & 0x7); // Last three bits from card number!
-  AWIDBits[6] = (uBits<<5);
-  if (!parityTest(uBits,3,1))
-    AWIDBits[6] |= (1<<4);
-  uBits = (cnum & 0x0FFF);
-  if (!parityTest(uBits,12,1))
-    AWIDBits[6] |= (1<<3);
-  else
-    AWIDBits[6]++;
-  for (i = 7; i<12; i++)
-    AWIDBits[i]=0x11;
-  return 1;
+       //int i;
+       uint32_t fcode = (fc & 0x000000FF);
+       uint32_t cnum = (cn & 0x0000FFFF);
+       uint32_t uBits = 0;
+  
+       if (fcode != fc)
+               PrintAndLog("NOTE: Facility code truncated for AWID26 format (8-bit facility code)");
+       if (cnum!=cn)
+               PrintAndLog("NOTE: Card number was truncated for AWID26 format (16-bit card number)");
+
+       uint8_t pre[] = {0x01, 0x1D, 0x80, 0x00,0x00,0x00,0x00, 0x11, 0x11, 0x11, 0x11, 0x11};
+       memcpy(AWIDBits, pre , sizeof(pre));
+       
+       // AWIDBits[0] = 0x01; // 6-bit Preamble with 2 parity bits
+       // AWIDBits[1] = 0x1D; // First byte from card format (26-bit) plus parity bits
+       // AWIDBits[2] = 0x80; // Set the next two bits as 0b10 to finish card format
+
+       // for (i = 7; i<12; i++)
+               // AWIDBits[i]=0x11;
+       
+       uBits = (fcode<<4) + (cnum>>12);
+       
+       if (!parityTest(uBits,12,0)) AWIDBits[2] |= (1<<5); // If not already even parity, set bit to make even
+       
+       uBits = AWIDBits[2]>>5;
+       
+       if (!parityTest(uBits, 3, 1)) AWIDBits[2] |= (1<<4);
+       
+       uBits = fcode>>5; // first 3 bits of facility-code
+       AWIDBits[2] += (uBits<<1);
+       
+       if (!parityTest(uBits, 3, 1)) AWIDBits[2]++; // Set parity bit to make odd parity
+       
+       uBits = (fcode & 0x1C)>>2;
+       AWIDBits[3] = 0;
+       
+       if (!parityTest(uBits,3,1)) AWIDBits[3] |= (1<<4);
+       
+       AWIDBits[3] += (uBits<<5);
+       uBits = ((fcode & 0x3)<<1) + ((cnum & 0x8000)>>15); // Grab/shift 2 LSBs from facility code and add shifted MSB from cardnum
+       
+       if (!parityTest(uBits,3,1))     AWIDBits[3]++; // Set LSB for parity
+       
+       AWIDBits[3]+= (uBits<<1);
+       uBits = (cnum & 0x7000)>>12;
+       AWIDBits[4] = uBits<<5;
+       
+       if (!parityTest(uBits,3,1))     AWIDBits[4] |= (1<<4);
+       
+       uBits = (cnum & 0x0E00)>>9;
+       AWIDBits[4] += (uBits<<1);
+       
+       if (!parityTest(uBits,3,1))     AWIDBits[4]++; // Set LSB for parity
+       
+       uBits = (cnum & 0x1C0)>>6; // Next bits from card number
+       AWIDBits[5]=(uBits<<5);
+       
+       if (!parityTest(uBits,3,1))     AWIDBits[5] |= (1<<4); // Set odd parity bit as needed
+       
+       uBits = (cnum & 0x38)>>3;
+       AWIDBits[5]+= (uBits<<1);
+       
+       if (!parityTest(uBits,3,1))     AWIDBits[5]++; // Set odd parity bit as needed
+       
+       uBits = (cnum & 0x7); // Last three bits from card number!
+       AWIDBits[6] = (uBits<<5);
+       
+       if (!parityTest(uBits,3,1))     AWIDBits[6] |= (1<<4);
+       
+       uBits = (cnum & 0x0FFF);
+       
+       if (!parityTest(uBits,12,1))
+               AWIDBits[6] |= (1<<3);
+       else
+               AWIDBits[6]++;
+       
+       return 1;
 }
 
 int CmdAWIDSim(const char *Cmd)
 {
-  uint32_t fcode = 0, cnum = 0, fc=0, cn=0, i=0;
-  uint8_t *BS, BitStream[12];
-  uint64_t arg1 = (10<<8) + 8; // fcHigh = 10, fcLow = 8
-  uint64_t arg2 = 50; // clk RF/50 invert=0
-  BS = BitStream;
-  if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) {
-    return usage_lf_awid_sim();
-  }
-
-  fcode=(fc & 0x000000FF);
-  cnum=(cn & 0x0000FFFF);
-  if (fc!=fcode)
-    PrintAndLog("Facility-Code (%u) truncated to 8-bits: %u",fc,fcode);
-  if (cn!=cnum)
-    PrintAndLog("Card number (%u) truncated to 16-bits: %u",cn,cnum);
-  PrintAndLog("Emulating AWID26 -- FC: %u; CN: %u\n",fcode,cnum);
-  PrintAndLog("Press pm3-button to abort simulation or run another command");
-  // AWID uses: fcHigh: 10, fcLow: 8, clk: 50, invert: 0
-  if (getAWIDBits(fc, cn, BS)) {
-      PrintAndLog("Running 'lf simfsk c 50 H 10 L 8 d %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x'", 
-                                        BS[0],BS[1],BS[2],BS[3],BS[4],BS[5],BS[6],
-                                        BS[7],BS[8],BS[9],BS[10],BS[11]);
-    } else
-      PrintAndLog("Error with tag bitstream generation.");
-  UsbCommand c;
-  c.cmd = CMD_FSK_SIM_TAG;
-  c.arg[0] = arg1; // fcHigh<<8 + fcLow
-  c.arg[1] = arg2; // Inversion and clk setting
-  c.arg[2] = 96; // Bitstream length: 96-bits == 12 bytes
-  for (i=0; i < 96; i++)
-    c.d.asBytes[i] = (BS[i/8] & (1<<(7-(i%8))))?1:0;
-  clearCommandBuffer();
-    SendCommand(&c);
-  return 0;
+       uint32_t fcode = 0, cnum = 0, fc=0, cn=0, i=0;
+       uint8_t bits[12];
+       uint8_t *bs=bits;
+
+       uint64_t arg1 = (10<<8) + 8; // fcHigh = 10, fcLow = 8
+       uint64_t arg2 = 50; // clk RF/50 invert=0
+  
+       if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) return usage_lf_awid_sim();
+
+       fcode = (fc & 0x000000FF);
+       cnum = (cn & 0x0000FFFF);
+       
+       if (fc!=fcode) PrintAndLog("Facility-Code (%u) truncated to 8-bits: %u", fc, fcode);
+       if (cn!=cnum)  PrintAndLog("Card number (%u) truncated to 16-bits: %u", cn, cnum);
+       
+       PrintAndLog("Emulating AWID26 -- FC: %u; CN: %u\n", fcode, cnum);
+       PrintAndLog("Press pm3-button to abort simulation or run another command");
+       
+       if (!getAWIDBits(fc, cn, bs)) {
+               PrintAndLog("Error with tag bitstream generation.");
+               return 1;
+       }
+       // AWID uses: fcHigh: 10, fcLow: 8, clk: 50, invert: 0
+       PrintAndLog("Running 'lf simfsk c 50 H 10 L 8 d %s'", sprint_hex(bs, sizeof(bs)));
+  
+       // arg1 --- fcHigh<<8 + fcLow
+       // arg2 --- Inversion and clk setting
+       // 96   --- Bitstream length: 96-bits == 12 bytes
+       UsbCommand c = {CMD_FSK_SIM_TAG, {arg1, arg2, 96}};  
+
+       for (i=0; i < 96; i++)
+               c.d.asBytes[i] = (bs[i/8] & (1<<(7-(i%8)))) ? 1 : 0;
+
+       clearCommandBuffer();
+       SendCommand(&c);
+       return 0;
 }
 
 int CmdAWIDClone(const char *Cmd)
 {
-       clearCommandBuffer();
-       uint32_t fc=0,cn=0,blocks[4] = {0x00107060, 0, 0, 0x11111111}, i=0;
-       uint8_t BitStream[12];
-       uint8_t *BS=BitStream;
-       UsbCommand c, resp;
-
-       if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) {
-               return usage_lf_awid_clone();
-       }
+       uint32_t blocks[4] = {0x00107060, 0, 0, 0x11111111};
+       uint32_t fc=0, cn=0, i=0;
+       uint8_t bits[12];
+       uint8_t *bs=bits;
+       
+       if (sscanf(Cmd, "%u %u", &fc, &cn ) != 2) return usage_lf_awid_clone();
 
        if ((fc & 0xFF) != fc) {
                fc &= 0xFF;
@@ -194,26 +212,36 @@ int CmdAWIDClone(const char *Cmd)
                cn &= 0xFFFF;
                PrintAndLog("Card Number Truncated to 16-bits (AWID26): %u", cn);
        }
+       
+       if ( !getAWIDBits(fc, cn, bs)) {
+               PrintAndLog("Error with tag bitstream generation.");
+               return 1;
+       }       
+
+       PrintAndLog("Preparing to clone AWID26 to T55x7 with FC: %u, CN: %u ", fc, cn);
+       PrintAndLog("Raw: %s", sprint_hex(bs, sizeof(bs)));
+
+       blocks[1] = (bs[0]<<24) + (bs[1]<<16) + (bs[2]<<8) + (bs[3]);
+       blocks[2] = (bs[4]<<24) + (bs[5]<<16) + (bs[6]<<8) + (bs[7]);
+       
+       PrintAndLog("Blk | Data ");
+       PrintAndLog("----+------------");
+       PrintAndLog(" 00 | 0x%08x", blocks[0]);
+       PrintAndLog(" 01 | 0x%08x", blocks[1]);
+       PrintAndLog(" 02 | 0x%08x", blocks[2]);
+       PrintAndLog(" 03 | 0x%08x", blocks[3]); 
+       
+       UsbCommand resp;
+       UsbCommand c = {CMD_T55XX_WRITE_BLOCK, {0,0,0}};
 
-       if (getAWIDBits(fc,cn,BS)) {
-               PrintAndLog("Preparing to clone AWID26 to T55x7 with FC: %u, CN: %u (Raw: %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x)", 
-                                         fc,cn, BS[0],BS[1],BS[2],BS[3],BS[4],BS[5],BS[6],BS[7],BS[8],BS[9],BS[10],BS[11]);
-               blocks[1] = (BS[0]<<24) + (BS[1]<<16) + (BS[2]<<8) + (BS[3]);
-               blocks[2] = (BS[4]<<24) + (BS[5]<<16) + (BS[6]<<8) + (BS[7]);
-               PrintAndLog("Block 0: 0x%08x", blocks[0]);
-               PrintAndLog("Block 1: 0x%08x", blocks[1]);
-               PrintAndLog("Block 2: 0x%08x", blocks[2]);
-               PrintAndLog("Block 3: 0x%08x", blocks[3]);
-               for (i=0; i<4; i++) {
-                       c.cmd = CMD_T55XX_WRITE_BLOCK;
-                       c.arg[0] = blocks[i];
-                       c.arg[1] = i;
-                       c.arg[2] = 0;
-                       SendCommand(&c);
-                       if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){
-                               PrintAndLog("Error occurred, device did not respond during write operation.");
-                               return -1;
-                       }
+       for (i=0; i<4; i++) {
+               c.arg[0] = blocks[i];
+               c.arg[1] = i;
+               clearCommandBuffer();
+               SendCommand(&c);
+               if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){
+                       PrintAndLog("Error occurred, device did not respond during write operation.");
+                       return -1;
                }
        }
        return 0;
index 31958eea12df0090e2617f2bc9edc65917cb25e6..21406fc8831ad369994fc6f19dfd126f617bd561 100644 (file)
@@ -461,14 +461,14 @@ bool tryDetectModulation(){
        } else {\r
                clk = GetAskClock("", FALSE, FALSE);\r
                if (clk>0) {\r
-                       if ( ASKDemod("0 0 1", TRUE, FALSE, 1) && test(DEMOD_ASK, &tests[hits].offset, &bitRate, clk, &tests[hits].Q5)) {\r
+                       if ( ASKDemod("0 0 1", FALSE, FALSE, 1) && test(DEMOD_ASK, &tests[hits].offset, &bitRate, clk, &tests[hits].Q5)) {\r
                                tests[hits].modulation = DEMOD_ASK;\r
                                tests[hits].bitrate = bitRate;\r
                                tests[hits].inverted = FALSE;\r
                                tests[hits].block0 = PackBits(tests[hits].offset, 32, DemodBuffer);\r
                                ++hits;\r
                        }\r
-                       if ( ASKDemod("0 1 1", TRUE, FALSE, 1)  && test(DEMOD_ASK, &tests[hits].offset, &bitRate, clk, &tests[hits].Q5)) {\r
+                       if ( ASKDemod("0 1 1", FALSE, FALSE, 1)  && test(DEMOD_ASK, &tests[hits].offset, &bitRate, clk, &tests[hits].Q5)) {\r
                                tests[hits].modulation = DEMOD_ASK;\r
                                tests[hits].bitrate = bitRate;\r
                                tests[hits].inverted = TRUE;\r
@@ -862,19 +862,21 @@ int CmdT55xxWriteBlock(const char *Cmd) {
        UsbCommand resp;\r
        c.d.asBytes[0] = (page1) ? 0x2 : 0; \r
 \r
-       PrintAndLog("Writing to page: %d  block: %d  data : 0x%08X", page1, block, data);\r
+       char pwdStr[16] = {0};\r
+       snprintf(pwdStr, sizeof(pwdStr), "pwd: 0x%08X", password);\r
+       \r
+       PrintAndLog("Writing page %d  block: %02d  data: 0x%08X %s", page1, block, data,  (usepwd) ? pwdStr : "" );\r
 \r
        //Password mode\r
        if (usepwd) {\r
                c.arg[2] = password;\r
                c.d.asBytes[0] |= 0x1; \r
-               PrintAndLog("pwd   : 0x%08X", password);\r
        }\r
        clearCommandBuffer();\r
        SendCommand(&c);\r
        if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){\r
                PrintAndLog("Error occurred, device did not ACK write operation. (May be due to old firmware)");\r
-       return 0;\r
+               return 0;\r
        }\r
        return 1;\r
 }\r
@@ -1230,26 +1232,24 @@ char * GetSelectedModulationStr( uint8_t id){
 }\r
 \r
 void t55x7_create_config_block( int tagtype ){\r
-       //switch?\r
-       \r
-       \r
-}\r
 \r
-/*\r
-uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits){\r
+       /*\r
+     T55X7_DEFAULT_CONFIG_BLOCK, T55X7_RAW_CONFIG_BLOCK\r
+     T55X7_EM_UNIQUE_CONFIG_BLOCK, T55X7_FDXB_CONFIG_BLOCK,\r
+        T55X7_FDXB_CONFIG_BLOCK, T55X7_HID_26_CONFIG_BLOCK, T55X7_INDALA_64_CONFIG_BLOCK, T55X7_INDALA_224_CONFIG_BLOCK \r
+        T55X7_GUARDPROXII_CONFIG_BLOCK, T55X7_VIKING_CONFIG_BLOCK,     T55X7_NORALYS_CONFIG_BLOCK, T55X7_IOPROX_CONFIG_BLOCK   \r
+       */\r
+       static char buf[60];\r
+       char *retStr = buf;\r
        \r
-       int i = start;\r
-       int j = len-1;\r
-\r
-       if (len > 32) return 0;\r
-\r
-       uint32_t tmp = 0;\r
-       for (; j >= 0; --j, ++i)\r
-               tmp     |= bits[i] << j;\r
-\r
-       return tmp;\r
+       switch (id){\r
+               case 0: snprintf(retStr, sizeof(buf),"%08X - T55X7 Default", T55X7_DEFAULT_CONFIG_BLOCK); break;\r
+               case 1: snprintf(retStr, sizeof(buf),"%08X - T55X7 Raw", T55X7_RAW_CONFIG_BLOCK); break;\r
+               default:\r
+                       break;\r
+       }\r
+       PrintAndLog(buf);\r
 }\r
-*/\r
 \r
 int CmdResetRead(const char *Cmd) {\r
        UsbCommand c = {CMD_T55XX_RESET_READ, {0,0,0}};\r
@@ -1271,19 +1271,23 @@ int CmdResetRead(const char *Cmd) {
 int CmdT55xxWipe(const char *Cmd) {\r
        char writeData[20] = {0};\r
        char *ptrData = writeData;\r
-       uint8_t blk = 0;\r
+       \r
        PrintAndLog("\nBeginning Wipe of a T55xx tag (assuming the tag is not password protected)\n");\r
+       \r
        //try with the default password to reset block 0  (with a pwd should work even if pwd bit not set)\r
-       snprintf(ptrData,sizeof(writeData),"b %d d 00088040 p 0", blk);\r
-       if (!CmdT55xxWriteBlock(ptrData)){\r
-               PrintAndLog("Error writing blk %d", blk);\r
-       }\r
-       blk = 1;\r
-       for (; blk<8; blk++) {\r
+       snprintf(ptrData,sizeof(writeData),"b 0 d 000880E0 p 0");\r
+       \r
+       if (!CmdT55xxWriteBlock(ptrData))\r
+               PrintAndLog("Error writing blk 0");\r
+       \r
+       for (uint8_t blk = 1; blk<8; blk++) {\r
+               \r
                snprintf(ptrData,sizeof(writeData),"b %d d 0", blk);\r
-               if (!CmdT55xxWriteBlock(ptrData)){\r
+               \r
+               if (!CmdT55xxWriteBlock(ptrData)) \r
                        PrintAndLog("Error writing blk %d", blk);\r
-               }\r
+               \r
+               memset(writeData, sizeof(writeData), 0x00);\r
        }\r
        return 0;\r
 }\r
index 79e37cef7a8146c09d3951e345f5eb464169c041..a58fa44e701705d7b071f6b79f59f8a811b6425b 100644 (file)
@@ -28,6 +28,7 @@
 #define T55X7_GUARDPROXII_CONFIG_BLOCK 0x00150060      // bitrate 64pcb, Direct modulation, Biphase, 3 data blocks\r
 #define T55X7_VIKING_CONFIG_BLOCK              0x00088040      // compat mode, data rate 32, Manchester, 2 data blocks\r
 #define T55X7_NORALYS_CONFIG_BLOCK             0x00088C6A      // compat mode,   (NORALYS - KCP3000)\r
+#define T55X7_IOPROX_CONFIG_BLOCK              0x00147040  // maxblock 2\r
 #define T55X7_bin 0b0010\r
 \r
 \r
Impressum, Datenschutz