]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/appmain.c
ADD: added the possibility to choose which block num to attack with "hf mf mifare...
[proxmark3-svn] / armsrc / appmain.c
index c51aa54e44e3d6ccfd90a41aab3aaf38c6c8cdbe..10db4a39f986d9b67eb904f3b3a15b60da19330b 100644 (file)
@@ -351,7 +351,6 @@ void SendStatus(void)
 #if defined(WITH_ISO14443a_StandAlone) || defined(WITH_LF)
 
 #define OPTS 2
-
 void StandAloneMode()
 {
        DbpString("Stand-alone mode! No PC necessary.");
@@ -365,13 +364,9 @@ void StandAloneMode()
        LED(LED_GREEN,  200);
        LED(LED_ORANGE, 200);
        LED(LED_RED,    200);
-
 }
-
 #endif
 
-
-
 #ifdef WITH_ISO14443a_StandAlone
 void StandAloneMode14a()
 {
@@ -410,8 +405,8 @@ void StandAloneMode14a()
                        /* need this delay to prevent catching some weird data */
                        SpinDelay(500);
                        /* Code for reading from 14a tag */
-                       uint8_t uid[10]  ={0};
-                       uint32_t cuid;
+                       uint8_t uid[10] {0};
+                       uint32_t cuid = 0;
                        iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD);
 
                        for ( ; ; )
@@ -432,7 +427,7 @@ void StandAloneMode14a()
                                                SpinDelay(300);
                                        }
                                }
-                               if (!iso14443a_select_card(uid, &hi14a_card[selected], &cuid))
+                               if (!iso14443a_select_card(uid, &hi14a_card[selected], &cuid, true, 0))
                                        continue;
                                else
                                {
@@ -640,8 +635,7 @@ void SamyRun()
        // Turn on selected LED
        LED(selected + 1, 0);
 
-       for (;;)
-       {
+       for (;;) {
                usb_poll();
                WDT_HIT();
 
@@ -672,49 +666,41 @@ void SamyRun()
                        LEDsoff();
                        LED(selected + 1, 0);
                        // Finished recording
-
                        // If we were previously playing, set playing off
                        // so next button push begins playing what we recorded
-                       playing = 0;
-                       
-                       cardRead = 1;
-       
+                       playing = 0;                    
+                       cardRead = 1;   
                }
+               else if (button_pressed > 0 && cardRead == 1) {
+                       LEDsoff();
+                       LED(selected + 1, 0);
+                       LED(LED_ORANGE, 0);
 
-               else if (button_pressed > 0 && cardRead == 1)
-               {
-                                       LEDsoff();
-                                       LED(selected + 1, 0);
-                                       LED(LED_ORANGE, 0);
-
-                                       // record
-                                       Dbprintf("Cloning %x %x %x", selected, high[selected], low[selected]);
+                       // record
+                       Dbprintf("Cloning %x %x %x", selected, high[selected], low[selected]);
 
-                                       // wait for button to be released
-                                       while(BUTTON_PRESS())
-                                               WDT_HIT();
+                       // wait for button to be released
+                       while(BUTTON_PRESS())
+                               WDT_HIT();
 
-                                       /* need this delay to prevent catching some weird data */
-                                       SpinDelay(500);
+                       /* need this delay to prevent catching some weird data */
+                       SpinDelay(500);
 
-                                       CopyHIDtoT55x7(high[selected], low[selected], 0, 0);
-                                       Dbprintf("Cloned %x %x %x", selected, high[selected], low[selected]);
+                       CopyHIDtoT55x7(high[selected], low[selected], 0, 0);
+                       Dbprintf("Cloned %x %x %x", selected, high[selected], low[selected]);
 
-                                       LEDsoff();
-                                       LED(selected + 1, 0);
-                                       // Finished recording
+                       LEDsoff();
+                       LED(selected + 1, 0);
+                       // Finished recording
 
-                                       // If we were previously playing, set playing off
-                                       // so next button push begins playing what we recorded
-                                       playing = 0;
-                                       
-                                       cardRead = 0;
-                       
+                       // If we were previously playing, set playing off
+                       // so next button push begins playing what we recorded
+                       playing = 0;                    
+                       cardRead = 0;                   
                }
 
                // Change where to record (or begin playing)
-               else if (button_pressed)
-               {
+               else if (button_pressed) {
                        // Next option if we were previously playing
                        if (playing)
                                selected = (selected + 1) % OPTS;
@@ -731,15 +717,16 @@ void SamyRun()
                                // wait for button to be released
                                while(BUTTON_PRESS())
                                        WDT_HIT();
+                               
                                Dbprintf("%x %x %x", selected, high[selected], low[selected]);
-                               CmdHIDsimTAG(high[selected], low[selected], 0);
+                               CmdHIDsimTAG(high[selected], low[selected], 0);         
                                DbpString("Done playing");
-                               if (BUTTON_HELD(1000) > 0)
-                                       {
+                               
+                               if (BUTTON_HELD(1000) > 0) {
                                        DbpString("Exiting");
                                        LEDsoff();
                                        return;
-                                       }
+                               }
 
                                /* We pressed a button so ignore it here with a delay */
                                SpinDelay(300);
@@ -1007,10 +994,8 @@ void UsbPacketReceived(uint8_t *packet, int len)
                        CmdAWIDdemodFSK(c->arg[0], 0, 0, 1);
                        break;
         case CMD_VIKING_CLONE_TAG:
-            CopyViKingtoT55x7(c->arg[0],c->arg[1]);
+                       CopyVikingtoT55xx(c->arg[0], c->arg[1], c->arg[2]);
             break;
-
-    
 #endif
 
 #ifdef WITH_HITAG
@@ -1104,7 +1089,7 @@ void UsbPacketReceived(uint8_t *packet, int len)
                        break;
                        
                case CMD_READER_MIFARE:
-            ReaderMifare(c->arg[0]);
+            ReaderMifare(c->arg[0], c->arg[1]);
                        break;
                case CMD_MIFARE_READBL:
                        MifareReadBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
@@ -1133,6 +1118,9 @@ void UsbPacketReceived(uint8_t *packet, int len)
                case CMD_MIFAREU_WRITEBL:
                        MifareUWriteBlock(c->arg[0], c->arg[1], c->d.asBytes);
                        break;
+               case CMD_MIFARE_ACQUIRE_ENCRYPTED_NONCES:
+                       MifareAcquireEncryptedNonces(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+                       break;
                case CMD_MIFARE_NESTED:
                        MifareNested(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
                        break;
@@ -1198,7 +1186,19 @@ void UsbPacketReceived(uint8_t *packet, int len)
                case CMD_MIFARE_COLLECT_NONCES:
                        break;
 #endif
-
+#ifdef WITH_EMV
+               case CMD_EMV_TRANSACTION:
+                       EMVTransaction();
+                       break;
+        case CMD_EMV_GET_RANDOM_NUM:
+            //EMVgetUDOL();
+            break;
+        case CMD_EMV_LOAD_VALUE:
+            EMVloadvalue(c->arg[0], c->d.asBytes);  
+            break;
+        case CMD_EMV_DUMP_CARD:
+            EMVdumpcard();
+#endif
 #ifdef WITH_ICLASS
                // Makes use of ISO14443a FPGA Firmware
                case CMD_SNOOP_ICLASS:
Impressum, Datenschutz