X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/a126332a7b3c85274a9988f8a6994fba930b5f52..810f53792ea438c1b70eaa1f934db1e5c96220cb:/armsrc/appmain.c?ds=sidebyside diff --git a/armsrc/appmain.c b/armsrc/appmain.c index b29a6101..10db4a39 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -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); @@ -1102,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); @@ -1131,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; @@ -1196,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: