X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/3612a8a8e2b3118e0bcb4ea0ef9a6c59d3635696..c71e7235da0dd2dd5f5d840360136844ea2ef1cb:/armsrc/appmain.c?ds=inline

diff --git a/armsrc/appmain.c b/armsrc/appmain.c
index ed89fe98..d7f05d16 100644
--- a/armsrc/appmain.c
+++ b/armsrc/appmain.c
@@ -124,6 +124,29 @@ void Dbprintf(const char *fmt, ...) {
 	DbpString(output_string);
 }
 
+// prints HEX & ASCII
+void Dbhexdump(int len, uint8_t *d) {
+	int l=0,i;
+	char ascii[9];
+
+	while (len>0) {
+		if (len>8) l=8;
+		else l=len;
+		
+		memcpy(ascii,d,l);
+		ascii[l]=0;	
+		
+		// filter safe ascii
+		for (i=0;i<l;i++) 
+			if (ascii[i]<32 || ascii[i]>126) ascii[i]='.';
+
+		Dbprintf("%-8s %*D",ascii,l,d," ");
+
+		len-=8;
+		d+=8;		
+	}
+}
+
 //-----------------------------------------------------------------------------
 // Read an ADC channel and block till it completes, then return the result
 // in ADC units (0 to 1023). Also a routine to average 32 samples and
@@ -148,7 +171,7 @@ static int ReadAdc(int ch)
 	return d;
 }
 
-static int AvgAdc(int ch)
+int AvgAdc(int ch) // was static - merlok
 {
 	int i;
 	int a = 0;
@@ -584,84 +607,152 @@ void UsbPacketReceived(uint8_t *packet, int len)
 			AcquireRawAdcSamples125k(c->arg[0]);
 			UsbSendPacket((uint8_t*)&ack, sizeof(ack));
 			break;
-#endif
-
-#ifdef WITH_LF
 		case CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K:
 			ModThenAcquireRawAdcSamples125k(c->arg[0],c->arg[1],c->arg[2],c->d.asBytes);
 			break;
+		case CMD_HID_DEMOD_FSK:
+			CmdHIDdemodFSK(0, 0, 0, 1);				// Demodulate HID tag
+			break;
+		case CMD_HID_SIM_TAG:
+			CmdHIDsimTAG(c->arg[0], c->arg[1], 1);					// Simulate HID tag by ID
+			break;
+		case CMD_HID_CLONE_TAG:
+			CopyHIDtoT5567(c->arg[0], c->arg[1]);					// Clone HID tag by ID to T55x7
+			break;
+		case CMD_EM410X_WRITE_TAG:
+			WriteEM410x(c->arg[0], c->arg[1], c->arg[2]);
+			break;
+		case CMD_READ_TI_TYPE:
+			ReadTItag();
+			break;
+		case CMD_WRITE_TI_TYPE:
+			WriteTItag(c->arg[0],c->arg[1],c->arg[2]);
+			break;
+		case CMD_SIMULATE_TAG_125K:
+			LED_A_ON();
+			SimulateTagLowFrequency(c->arg[0], c->arg[1], 1);
+			LED_A_OFF();
+			break;
+		case CMD_LF_SIMULATE_BIDIR:
+			SimulateTagLowFrequencyBidir(c->arg[0], c->arg[1]);
+			break;
 #endif
 
 #ifdef WITH_ISO15693
 		case CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_15693:
 			AcquireRawAdcSamplesIso15693();
 			break;
-#endif
-
-		case CMD_BUFF_CLEAR:
-			BufferClear();
+		case CMD_RECORD_RAW_ADC_SAMPLES_ISO_15693:
+			RecordRawAdcSamplesIso15693();
+			break;
+			
+		case CMD_ISO_15693_COMMAND:
+			DirectTag15693Command(c->arg[0],c->arg[1],c->arg[2],c->d.asBytes);
+			break;
+					
+		case CMD_ISO_15693_FIND_AFI:
+			BruteforceIso15693Afi(c->arg[0]);
+			break;	
+			
+		case CMD_ISO_15693_DEBUG:
+			SetDebugIso15693(c->arg[0]);
 			break;
 
-#ifdef WITH_ISO15693
 		case CMD_READER_ISO_15693:
 			ReaderIso15693(c->arg[0]);
 			break;
+		case CMD_SIMTAG_ISO_15693:
+			SimTagIso15693(c->arg[0]);
+			break;
 #endif
 
-        case CMD_SIMULATE_TAG_LEGIC_RF:
-            LegicRfSimulate(c->arg[0], c->arg[1], c->arg[2]);
-            break;
+#ifdef WITH_LEGICRF
+		case CMD_SIMULATE_TAG_LEGIC_RF:
+			LegicRfSimulate(c->arg[0], c->arg[1], c->arg[2]);
+			break;
 
-        case CMD_WRITER_LEGIC_RF:
-            LegicRfWriter(c->arg[1], c->arg[0]);
-            break;
+		case CMD_WRITER_LEGIC_RF:
+			LegicRfWriter(c->arg[1], c->arg[0]);
+			break;
 
 		case CMD_READER_LEGIC_RF:
 			LegicRfReader(c->arg[0], c->arg[1]);
 			break;
-
-#ifdef WITH_ISO15693
-		case CMD_SIMTAG_ISO_15693:
-			SimTagIso15693(c->arg[0]);
-			break;
 #endif
 
 #ifdef WITH_ISO14443b
 		case CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443:
 			AcquireRawAdcSamplesIso14443(c->arg[0]);
 			break;
-#endif
-
-#ifdef WITH_ISO14443b
 		case CMD_READ_SRI512_TAG:
 			ReadSRI512Iso14443(c->arg[0]);
 			break;
-               case CMD_READ_SRIX4K_TAG:
-                       ReadSRIX4KIso14443(c->arg[0]);
-                       break;
+		case CMD_READ_SRIX4K_TAG:
+			ReadSRIX4KIso14443(c->arg[0]);
+			break;
+		case CMD_SNOOP_ISO_14443:
+			SnoopIso14443();
+			break;
+		case CMD_SIMULATE_TAG_ISO_14443:
+			SimulateIso14443Tag();
+			break;
 #endif
 
 #ifdef WITH_ISO14443a
+		case CMD_SNOOP_ISO_14443a:
+			SnoopIso14443a();
+			break;
 		case CMD_READER_ISO_14443a:
-			ReaderIso14443a(c->arg[0]);
+			ReaderIso14443a(c, &ack);
 			break;
-#endif
-
-#ifdef WITH_ISO14443a
+		case CMD_SIMULATE_TAG_ISO_14443a:
+			SimulateIso14443aTag(c->arg[0], c->arg[1]);  // ## Simulate iso14443a tag - pass tag type & UID
+			break;
+			
 		case CMD_READER_MIFARE:
 			ReaderMifare(c->arg[0]);
 			break;
-#endif
-
-#ifdef WITH_ISO14443b
-		case CMD_SNOOP_ISO_14443:
-			SnoopIso14443();
+		case CMD_MIFARE_READBL:
+			MifareReadBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_MIFARE_READSC:
+			MifareReadSector(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_MIFARE_WRITEBL:
+			MifareWriteBlock(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;
+		case CMD_MIFARE_CHKKEYS:
+			MifareChkKeys(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_SIMULATE_MIFARE_CARD:
+			Mifare1ksim(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		
+		// emulator
+		case CMD_MIFARE_SET_DBGMODE:
+			MifareSetDbgLvl(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_MIFARE_EML_MEMCLR:
+			MifareEMemClr(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_MIFARE_EML_MEMSET:
+			MifareEMemSet(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_MIFARE_EML_MEMGET:
+			MifareEMemGet(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
+			break;
+		case CMD_MIFARE_EML_CARDLOAD:
+			MifareECardLoad(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes);
 			break;
 #endif
 
-#ifdef WITH_ISO14443a
-		case CMD_SNOOP_ISO_14443a:
-			SnoopIso14443a();
+#ifdef WITH_ICLASS
+		// Makes use of ISO14443a FPGA Firmware
+		case CMD_SNOOP_ICLASS:
+			SnoopIClass();
 			break;
 #endif
 
@@ -669,17 +760,9 @@ void UsbPacketReceived(uint8_t *packet, int len)
 			SimulateTagHfListen();
 			break;
 
-#ifdef WITH_ISO14443b
-		case CMD_SIMULATE_TAG_ISO_14443:
-			SimulateIso14443Tag();
-			break;
-#endif
-
-#ifdef WITH_ISO14443a
-		case CMD_SIMULATE_TAG_ISO_14443a:
-			SimulateIso14443aTag(c->arg[0], c->arg[1]);  // ## Simulate iso14443a tag - pass tag type & UID
+		case CMD_BUFF_CLEAR:
+			BufferClear();
 			break;
-#endif
 
 		case CMD_MEASURE_ANTENNA_TUNING:
 			MeasureAntennaTuning();
@@ -693,36 +776,12 @@ void UsbPacketReceived(uint8_t *packet, int len)
 			ListenReaderField(c->arg[0]);
 			break;
 
-#ifdef WITH_LF
-		case CMD_HID_DEMOD_FSK:
-			CmdHIDdemodFSK(0, 0, 0, 1);				// Demodulate HID tag
-			break;
-#endif
-
-#ifdef WITH_LF
-		case CMD_HID_SIM_TAG:
-			CmdHIDsimTAG(c->arg[0], c->arg[1], 1);					// Simulate HID tag by ID
-			break;
-#endif
-
 		case CMD_FPGA_MAJOR_MODE_OFF:		// ## FPGA Control
 			FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
 			SpinDelay(200);
 			LED_D_OFF(); // LED D indicates field ON or OFF
 			break;
 
-#ifdef WITH_LF
-		case CMD_READ_TI_TYPE:
-			ReadTItag();
-			break;
-#endif
-
-#ifdef WITH_LF
-		case CMD_WRITE_TI_TYPE:
-			WriteTItag(c->arg[0],c->arg[1],c->arg[2]);
-			break;
-#endif
-
 		case CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K: {
 			UsbCommand n;
 			if(c->cmd == CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K) {
@@ -732,7 +791,9 @@ void UsbPacketReceived(uint8_t *packet, int len)
 			}
 			n.arg[0] = c->arg[0];
 			memcpy(n.d.asDwords, BigBuf+c->arg[0], 12*sizeof(uint32_t));
+			LED_B_ON();
 			UsbSendPacket((uint8_t *)&n, sizeof(n));
+			LED_B_OFF();
 			break;
 		}
 
@@ -744,14 +805,6 @@ void UsbPacketReceived(uint8_t *packet, int len)
 			break;
 		}
 
-#ifdef WITH_LF
-		case CMD_SIMULATE_TAG_125K:
-			LED_A_ON();
-			SimulateTagLowFrequency(c->arg[0], c->arg[1], 1);
-			LED_A_OFF();
-			break;
-#endif
-
 		case CMD_READ_MEM:
 			ReadMem(c->arg[0]);
 			break;
@@ -774,9 +827,7 @@ void UsbPacketReceived(uint8_t *packet, int len)
 			break;
 
 #ifdef WITH_LF
-		case CMD_LF_SIMULATE_BIDIR:
-			SimulateTagLowFrequencyBidir(c->arg[0], c->arg[1]);
-			break;
+
 #endif
 
 #ifdef WITH_LCD
@@ -858,6 +909,8 @@ void  __attribute__((noreturn)) AppMain(void)
 	// Load the FPGA image, which we have stored in our flash.
 	FpgaDownloadAndGo();
 
+	StartTickCount();
+	
 #ifdef WITH_LCD
 
 	LCDInit();