]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/appmain.c
Merge pull request #658 from grauerfuchs/master
[proxmark3-svn] / armsrc / appmain.c
index 4034788afc5f0260bd3545d3ddf4ab5f8201c50e..e6d40abceb7e580ec4453b0a45a1c9509967c6d6 100644 (file)
@@ -21,6 +21,7 @@
 #include "printf.h"
 #include "string.h"
 #include "legicrf.h"
+#include "legicrfsim.h"
 #include "hitag2.h"
 #include "hitagS.h"
 #include "lfsampling.h"
@@ -649,7 +650,7 @@ void SamyRun()
        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;
@@ -683,8 +684,11 @@ void SamyRun()
                        /* 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);
@@ -705,7 +709,10 @@ void SamyRun()
                                        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())
@@ -714,8 +721,11 @@ void SamyRun()
                                        /* 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);
@@ -748,8 +758,12 @@ void SamyRun()
                                // 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)
                                        {
@@ -947,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:
-                       CmdHIDdemodFSK(c->arg[0], 0, 0, 1);
+                       CmdHIDdemodFSK(c->arg[0], 0, 0, 0, 1);
                        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);
@@ -1090,7 +1104,7 @@ void UsbPacketReceived(uint8_t *packet, int len)
 
 #ifdef WITH_LEGICRF
                case CMD_SIMULATE_TAG_LEGIC_RF:
-                       LegicRfSimulate(c->arg[0], c->arg[1], c->arg[2]);
+                       LegicRfSimulate(c->arg[0]);
                        break;
 
                case CMD_WRITER_LEGIC_RF:
Impressum, Datenschutz