]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/appmain.c
Merge remote-tracking branch 'upstream/master'
[proxmark3-svn] / armsrc / appmain.c
index bbb062c0a75934ebe408b558b81bbb2cc395260c..ffe6b7f22f745e47ccdd5c3ed0890682e63081ab 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "legicrf.h"
 #include <hitag2.h>
+#include <hitagS.h>
 #include "lfsampling.h"
 #include "BigBuf.h"
 #include "mifareutil.h"
@@ -36,8 +37,6 @@
  #include "iso14443a.h"
 #endif
 
-#define abs(x) ( ((x)<0) ? -(x) : (x) )
-
 //=============================================================================
 // A buffer where we can queue things up to be sent through the FPGA, for
 // any purpose (fake tag, as reader, whatever). We go MSB first, since that
@@ -662,7 +661,7 @@ void SamyRun()
                        SpinDelay(500);
 
                        CmdHIDdemodFSK(1, &high[selected], &low[selected], 0);
-                       Dbprintf("Recorded %x %x %x", selected, high[selected], low[selected]);
+                       Dbprintf("Recorded %x %x%08x", selected, high[selected], low[selected]);
 
                        LEDsoff();
                        LED(selected + 1, 0);
@@ -683,7 +682,7 @@ void SamyRun()
                                        LED(LED_ORANGE, 0);
 
                                        // record
-                                       Dbprintf("Cloning %x %x %x", selected, high[selected], low[selected]);
+                                       Dbprintf("Cloning %x %x%08x", selected, high[selected], low[selected]);
 
                                        // wait for button to be released
                                        while(BUTTON_PRESS())
@@ -692,8 +691,8 @@ void SamyRun()
                                        /* 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(0, high[selected], low[selected], 0);
+                                       Dbprintf("Cloned %x %x%08x", selected, high[selected], low[selected]);
 
                                        LEDsoff();
                                        LED(selected + 1, 0);
@@ -726,7 +725,7 @@ void SamyRun()
                                // wait for button to be released
                                while(BUTTON_PRESS())
                                        WDT_HIT();
-                               Dbprintf("%x %x %x", selected, high[selected], low[selected]);
+                               Dbprintf("%x %x%08x", selected, high[selected], low[selected]);
                                CmdHIDsimTAG(high[selected], low[selected], 0);
                                DbpString("Done playing");
                                if (BUTTON_HELD(1000) > 0)
@@ -841,7 +840,7 @@ void ListenReaderField(int limit)
 
                if (limit != HF_ONLY) {
                        if(mode == 1) {
-                               if (abs(lf_av - lf_baseline) > REPORT_CHANGE) 
+                               if (ABS(lf_av - lf_baseline) > REPORT_CHANGE) 
                                        LED_D_ON();
                                else
                                        LED_D_OFF();
@@ -849,7 +848,7 @@ void ListenReaderField(int limit)
 
                        lf_av_new = AvgAdc(ADC_CHAN_LF);
                        // see if there's a significant change
-                       if(abs(lf_av - lf_av_new) > REPORT_CHANGE) {
+                       if(ABS(lf_av - lf_av_new) > REPORT_CHANGE) {
                                Dbprintf("LF 125/134kHz Field Change: %5dmV", (MAX_ADC_LF_VOLTAGE * lf_av_new) >> 10);
                                lf_av = lf_av_new;
                                if (lf_av > lf_max)
@@ -859,7 +858,7 @@ void ListenReaderField(int limit)
 
                if (limit != LF_ONLY) {
                        if (mode == 1){
-                               if (abs(hf_av - hf_baseline) > REPORT_CHANGE)   
+                               if (ABS(hf_av - hf_baseline) > REPORT_CHANGE)   
                                        LED_B_ON();
                                else
                                        LED_B_OFF();
@@ -867,7 +866,7 @@ void ListenReaderField(int limit)
 
                        hf_av_new = AvgAdc(ADC_CHAN_HF);
                        // see if there's a significant change
-                       if(abs(hf_av - hf_av_new) > REPORT_CHANGE) {
+                       if(ABS(hf_av - hf_av_new) > REPORT_CHANGE) {
                                Dbprintf("HF 13.56MHz Field Change: %5dmV", (MAX_ADC_HF_VOLTAGE * hf_av_new) >> 10);
                                hf_av = hf_av_new;
                                if (hf_av > hf_max)
@@ -946,7 +945,7 @@ void UsbPacketReceived(uint8_t *packet, int len)
                        CmdIOdemodFSK(c->arg[0], 0, 0, 1);
                        break;
                case CMD_IO_CLONE_TAG:
-                       CopyIOtoT55x7(c->arg[0], c->arg[1], c->d.asBytes[0]);
+                       CopyIOtoT55x7(c->arg[0], c->arg[1]);
                        break;
                case CMD_EM410X_DEMOD:
                        CmdEM410xdemod(c->arg[0], 0, 0, 1);
@@ -980,8 +979,11 @@ void UsbPacketReceived(uint8_t *packet, int len)
                case CMD_T55XX_WRITE_BLOCK:
                        T55xxWriteBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]);
                        break;
-               case CMD_T55XX_READ_TRACE:
-                       T55xxReadTrace();
+               case CMD_T55XX_WAKEUP:
+                       T55xxWakeUp(c->arg[0]);
+                       break;
+               case CMD_T55XX_RESET_READ:
+                       T55xxResetRead();
                        break;
                case CMD_PCF7931_READ:
                        ReadPCF7931();
@@ -998,6 +1000,9 @@ void UsbPacketReceived(uint8_t *packet, int len)
                case CMD_AWID_DEMOD_FSK: // Set realtime AWID demodulation
                        CmdAWIDdemodFSK(c->arg[0], 0, 0, 1);
                        break;
+               case CMD_VIKING_CLONE_TAG:
+                       CopyVikingtoT55xx(c->arg[0], c->arg[1], c->arg[2]);
+                       break;
 #endif
 
 #ifdef WITH_HITAG
@@ -1010,6 +1015,18 @@ void UsbPacketReceived(uint8_t *packet, int len)
                case CMD_READER_HITAG: // Reader for Hitag tags, args = type and function
                        ReaderHitag((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes);
                        break;
+               case CMD_SIMULATE_HITAG_S:// Simulate Hitag s tag, args = memory content
+                       SimulateHitagSTag((bool)c->arg[0],(byte_t*)c->d.asBytes);
+                       break;
+               case CMD_TEST_HITAGS_TRACES:// Tests every challenge within the given file
+                       check_challenges((bool)c->arg[0],(byte_t*)c->d.asBytes);
+                       break;
+               case CMD_READ_HITAG_S://Reader for only Hitag S tags, args = key or challenge
+                       ReadHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes);
+                       break;
+               case CMD_WR_HITAG_S://writer for Hitag tags args=data to write,page and key or challenge
+                       WritePageHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes,c->arg[2]);
+                       break;
 #endif
 
 #ifdef WITH_ISO15693
@@ -1201,6 +1218,11 @@ void UsbPacketReceived(uint8_t *packet, int len)
                        iClass_Clone(c->arg[0], c->arg[1], c->d.asBytes);
                        break;
 #endif
+#ifdef WITH_HFSNOOP
+               case CMD_HF_SNIFFER:
+                       HfSnoop(c->arg[0], c->arg[1]);
+                       break;
+#endif
 
                case CMD_BUFF_CLEAR:
                        BigBuf_Clear();
@@ -1337,7 +1359,7 @@ void  __attribute__((noreturn)) AppMain(void)
        AT91C_BASE_PMC->PMC_SCER = AT91C_PMC_PCK0;
        // PCK0 is PLL clock / 4 = 96Mhz / 4 = 24Mhz
        AT91C_BASE_PMC->PMC_PCKR[0] = AT91C_PMC_CSS_PLL_CLK |
-               AT91C_PMC_PRES_CLK_4;
+               AT91C_PMC_PRES_CLK_4; //  4 for 24Mhz pck0, 2 for 48 MHZ pck0
        AT91C_BASE_PIOA->PIO_OER = GPIO_PCK0;
 
        // Reset SPI
Impressum, Datenschutz