]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/appmain.c
Merge branch 'master' into master
[proxmark3-svn] / armsrc / appmain.c
index f7bcd620348a0b5e90fc0ab1f3f19699d5cd2236..e6d40abceb7e580ec4453b0a45a1c9509967c6d6 100644 (file)
@@ -650,7 +650,7 @@ void SamyRun()
        StandAloneMode();
        FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
 
        StandAloneMode();
        FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
 
-       int high[OPTS], low[OPTS];
+       int tops[OPTS], high[OPTS], low[OPTS];
        int selected = 0;
        int playing = 0;
        int cardRead = 0;
        int selected = 0;
        int playing = 0;
        int cardRead = 0;
@@ -684,8 +684,11 @@ void SamyRun()
                        /* need this delay to prevent catching some weird data */
                        SpinDelay(500);
 
                        /* need this delay to prevent catching some weird data */
                        SpinDelay(500);
 
-                       CmdHIDdemodFSK(1, &high[selected], &low[selected], 0);
-                       Dbprintf("Recorded %x %x%08x", selected, high[selected], low[selected]);
+                       CmdHIDdemodFSK(1, &tops[selected], &high[selected], &low[selected], 0);
+                       if (tops[selected] > 0)
+                               Dbprintf("Recorded %x %x%08x%08x", selected, tops[selected], high[selected], low[selected]);
+                       else
+                               Dbprintf("Recorded %x %x%08x", selected, high[selected], low[selected]);
 
                        LEDsoff();
                        LED(selected + 1, 0);
 
                        LEDsoff();
                        LED(selected + 1, 0);
@@ -706,7 +709,10 @@ void SamyRun()
                                        LED(LED_ORANGE, 0);
 
                                        // record
                                        LED(LED_ORANGE, 0);
 
                                        // record
-                                       Dbprintf("Cloning %x %x%08x", selected, high[selected], low[selected]);
+                                       if (tops[selected] > 0)
+                                               Dbprintf("Cloning %x %x%08x%08x", selected, tops[selected], high[selected], low[selected]);
+                                       else
+                                               Dbprintf("Cloning %x %x%08x", selected, high[selected], low[selected]);
 
                                        // wait for button to be released
                                        while(BUTTON_PRESS())
 
                                        // wait for button to be released
                                        while(BUTTON_PRESS())
@@ -715,8 +721,11 @@ void SamyRun()
                                        /* need this delay to prevent catching some weird data */
                                        SpinDelay(500);
 
                                        /* need this delay to prevent catching some weird data */
                                        SpinDelay(500);
 
-                                       CopyHIDtoT55x7(0, high[selected], low[selected], 0);
-                                       Dbprintf("Cloned %x %x%08x", selected, high[selected], low[selected]);
+                                       CopyHIDtoT55x7(tops[selected] & 0x000FFFFF, high[selected], low[selected], (tops[selected] != 0 && ((high[selected]& 0xFFFFFFC0) != 0)));
+                                       if (tops[selected] > 0)
+                                               Dbprintf("Cloned %x %x%08x%08x", selected, tops[selected], high[selected], low[selected]);
+                                       else
+                                               Dbprintf("Cloned %x %x%08x", selected, high[selected], low[selected]);
 
                                        LEDsoff();
                                        LED(selected + 1, 0);
 
                                        LEDsoff();
                                        LED(selected + 1, 0);
@@ -749,8 +758,12 @@ void SamyRun()
                                // wait for button to be released
                                while(BUTTON_PRESS())
                                        WDT_HIT();
                                // wait for button to be released
                                while(BUTTON_PRESS())
                                        WDT_HIT();
-                               Dbprintf("%x %x%08x", selected, high[selected], low[selected]);
-                               CmdHIDsimTAG(high[selected], low[selected], 0);
+                               if (tops[selected] > 0)
+                                       Dbprintf("%x %x%08x%08x", selected, tops[selected], high[selected], low[selected]);
+                               else
+                                       Dbprintf("%x %x%08x", selected, high[selected], low[selected]);
+                               
+                               CmdHIDsimTAG(tops[selected], high[selected], low[selected], 0);
                                DbpString("Done playing");
                                if (BUTTON_HELD(1000) > 0)
                                        {
                                DbpString("Done playing");
                                if (BUTTON_HELD(1000) > 0)
                                        {
@@ -948,10 +961,10 @@ void UsbPacketReceived(uint8_t *packet, int len)
                        cmd_send(CMD_ACK,SnoopLF(),0,0,0,0);
                        break;
                case CMD_HID_DEMOD_FSK:
                        cmd_send(CMD_ACK,SnoopLF(),0,0,0,0);
                        break;
                case CMD_HID_DEMOD_FSK:
-                       CmdHIDdemodFSK(c->arg[0], 0, 0, 1);
+                       CmdHIDdemodFSK(c->arg[0], 0, 0, 0, 1);
                        break;
                case CMD_HID_SIM_TAG:
                        break;
                case CMD_HID_SIM_TAG:
-                       CmdHIDsimTAG(c->arg[0], c->arg[1], 1);
+                       CmdHIDsimTAG(c->arg[0], c->arg[1], c->arg[2], 1);
                        break;
                case CMD_FSK_SIM_TAG:
                        CmdFSKsimTAG(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
                        break;
                case CMD_FSK_SIM_TAG:
                        CmdFSKsimTAG(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
Impressum, Datenschutz