From: martin.holst@gmail.com Date: Sun, 1 Sep 2013 20:00:56 +0000 (+0000) Subject: Merged latest trunk changes into scripting-branch X-Git-Tag: v1.0.0~80^2~7 X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/cda2a4c0a5e9b9e2a373aeb822111237ff9ec710?hp=-c Merged latest trunk changes into scripting-branch --- cda2a4c0a5e9b9e2a373aeb822111237ff9ec710 diff --combined armsrc/appmain.c index cecf4d35,4477a120..cfde4fbb --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@@ -626,7 -626,7 +626,7 @@@ void UsbPacketReceived(uint8_t *packet #ifdef WITH_LF case CMD_ACQUIRE_RAW_ADC_SAMPLES_125K: AcquireRawAdcSamples125k(c->arg[0]); - cmd_send(CMD_ACK,0,0,0,0,0); + cmd_send(CMD_ACK,0,0,0,0,0); break; case CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K: ModThenAcquireRawAdcSamples125k(c->arg[0],c->arg[1],c->arg[2],c->d.asBytes); @@@ -638,7 -638,7 +638,7 @@@ CmdHIDsimTAG(c->arg[0], c->arg[1], 1); // Simulate HID tag by ID break; case CMD_HID_CLONE_TAG: // Clone HID tag by ID to T55x7 - CopyHIDtoT55x7(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]); + CopyHIDtoT55x7(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]); break; case CMD_EM410X_WRITE_TAG: WriteEM410x(c->arg[0], c->arg[1], c->arg[2]); @@@ -663,26 -663,26 +663,26 @@@ case CMD_INDALA_CLONE_TAG_L: // Clone Indala 224-bit tag by UID to T55x7 CopyIndala224toT55x7(c->d.asDwords[0], c->d.asDwords[1], c->d.asDwords[2], c->d.asDwords[3], c->d.asDwords[4], c->d.asDwords[5], c->d.asDwords[6]); break; - case CMD_T55XX_READ_BLOCK: - T55xxReadBlock(c->arg[1], c->arg[2],c->d.asBytes[0]); - break; - 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: // Clone HID tag by ID to T55x7 - T55xxReadTrace(); - break; - case CMD_PCF7931_READ: // Read PCF7931 tag - ReadPCF7931(); - cmd_send(CMD_ACK,0,0,0,0,0); - // UsbSendPacket((uint8_t*)&ack, sizeof(ack)); - break; - case CMD_EM4X_READ_WORD: - EM4xReadWord(c->arg[1], c->arg[2],c->d.asBytes[0]); - break; - case CMD_EM4X_WRITE_WORD: - EM4xWriteWord(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]); - break; + case CMD_T55XX_READ_BLOCK: + T55xxReadBlock(c->arg[1], c->arg[2],c->d.asBytes[0]); + break; + 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: // Clone HID tag by ID to T55x7 + T55xxReadTrace(); + break; + case CMD_PCF7931_READ: // Read PCF7931 tag + ReadPCF7931(); + cmd_send(CMD_ACK,0,0,0,0,0); + // UsbSendPacket((uint8_t*)&ack, sizeof(ack)); + break; + case CMD_EM4X_READ_WORD: + EM4xReadWord(c->arg[1], c->arg[2],c->d.asBytes[0]); + break; + case CMD_EM4X_WRITE_WORD: + EM4xWriteWord(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes[0]); + break; #endif #ifdef WITH_HITAG @@@ -744,10 -744,10 +744,10 @@@ AcquireRawAdcSamplesIso14443(c->arg[0]); break; case CMD_READ_SRI512_TAG: - ReadSRI512Iso14443(c->arg[0]); + ReadSTMemoryIso14443(0x0F); break; case CMD_READ_SRIX4K_TAG: - ReadSRIX4KIso14443(c->arg[0]); + ReadSTMemoryIso14443(0x7F); break; case CMD_SNOOP_ISO_14443: SnoopIso14443(); @@@ -755,6 -755,9 +755,9 @@@ case CMD_SIMULATE_TAG_ISO_14443: SimulateIso14443Tag(); break; + case CMD_ISO_14443B_COMMAND: + SendRawCommand14443B(c->arg[0],c->arg[1],c->arg[2],c->d.asBytes); + break; #endif #ifdef WITH_ISO14443a @@@ -772,7 -775,7 +775,7 @@@ break; case CMD_READER_MIFARE: - ReaderMifare(c); + ReaderMifare(c->arg[0]); break; case CMD_MIFARE_READBL: MifareReadBlock(c->arg[0], c->arg[1], c->arg[2], c->d.asBytes); @@@ -863,7 -866,7 +866,7 @@@ LED_D_OFF(); // LED D indicates field ON or OFF break; - case CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K: + case CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K: { // UsbCommand n; // if(c->cmd == CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K) { // n.cmd = CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K; @@@ -877,24 -880,24 +880,24 @@@ // UsbSendPacket((uint8_t *)&n, sizeof(n)); // LED_B_OFF(); - LED_B_ON(); - for(size_t i=0; iarg[1]; i += USB_CMD_DATA_SIZE) { - size_t len = MIN((c->arg[1] - i),USB_CMD_DATA_SIZE); - cmd_send(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K,i,len,0,((byte_t*)BigBuf)+c->arg[0]+i,len); - } - // Trigger a finish downloading signal with an ACK frame - cmd_send(CMD_ACK,0,0,0,0,0); + LED_B_ON(); + for(size_t i=0; iarg[1]; i += USB_CMD_DATA_SIZE) { + size_t len = MIN((c->arg[1] - i),USB_CMD_DATA_SIZE); + cmd_send(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K,i,len,0,((byte_t*)BigBuf)+c->arg[0]+i,len); + } + // Trigger a finish downloading signal with an ACK frame + cmd_send(CMD_ACK,0,0,0,0,0); LED_B_OFF(); - break; + } break; case CMD_DOWNLOADED_SIM_SAMPLES_125K: { uint8_t *b = (uint8_t *)BigBuf; memcpy(b+c->arg[0], c->d.asBytes, 48); //Dbprintf("copied 48 bytes to %i",b+c->arg[0]); // UsbSendPacket((uint8_t*)&ack, sizeof(ack)); - cmd_send(CMD_ACK,0,0,0,0,0); - } break; - + cmd_send(CMD_ACK,0,0,0,0,0); + break; + } case CMD_READ_MEM: ReadMem(c->arg[0]); break; @@@ -926,35 -929,35 +929,35 @@@ #endif case CMD_SETUP_WRITE: case CMD_FINISH_WRITE: - case CMD_HARDWARE_RESET: { - usb_disable(); + case CMD_HARDWARE_RESET: + usb_disable(); SpinDelay(1000); SpinDelay(1000); AT91C_BASE_RSTC->RSTC_RCR = RST_CONTROL_KEY | AT91C_RSTC_PROCRST; for(;;) { // We're going to reset, and the bootrom will take control. } - } break; + break; - case CMD_START_FLASH: { + case CMD_START_FLASH: if(common_area.flags.bootrom_present) { common_area.command = COMMON_AREA_COMMAND_ENTER_FLASH_MODE; } - usb_disable(); + usb_disable(); AT91C_BASE_RSTC->RSTC_RCR = RST_CONTROL_KEY | AT91C_RSTC_PROCRST; for(;;); - } break; + break; case CMD_DEVICE_INFO: { uint32_t dev_info = DEVICE_INFO_FLAG_OSIMAGE_PRESENT | DEVICE_INFO_FLAG_CURRENT_MODE_OS; if(common_area.flags.bootrom_present) dev_info |= DEVICE_INFO_FLAG_BOOTROM_PRESENT; // UsbSendPacket((uint8_t*)&c, sizeof(c)); - cmd_send(CMD_DEVICE_INFO,dev_info,0,0,0,0); - } break; - - default: { + cmd_send(CMD_DEVICE_INFO,dev_info,0,0,0,0); + break; + } + default: Dbprintf("%s: 0x%04x","unknown command:",c->cmd); - } break; + break; } } diff --combined client/Makefile index 1f2f23e8,ff701a9f..b7376c92 --- a/client/Makefile +++ b/client/Makefile @@@ -5,7 -5,6 +5,7 @@@ #----------------------------------------------------------------------------- include ../common/Makefile.common + CC=gcc CXX=g++ #COMMON_FLAGS = -m32 @@@ -13,26 -12,24 +13,28 @@@ VPATH = ../common OBJDIR = obj -LDLIBS = -L/opt/local/lib -L/usr/local/lib -lreadline -lpthread +LDLIBS = -L/opt/local/lib -L/usr/local/lib -lreadline -lpthread ../liblua/liblua.a LDFLAGS = $(COMMON_FLAGS) -CFLAGS = -std=c99 -I. -I../include -I../common -I/opt/local/include -Wall -Wno-unused-function $(COMMON_FLAGS) -g -O4 +CFLAGS = -std=c99 -I. -I../include -I../common -I/opt/local/include -I../liblua -Wall -Wno-unused-function $(COMMON_FLAGS) -g -O4 +LUAPLATFORM = generic ifneq (,$(findstring MINGW,$(platform))) CXXFLAGS = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui QTLDLIBS = -L$(QTDIR)/lib -lQtCore4 -lQtGui4 MOC = $(QTDIR)/bin/moc +LUAPLATFORM = mingw else ifeq ($(platform),Darwin) CXXFLAGS = -I/Library/Frameworks/QtGui.framework/Versions/Current/Headers -I/Library/Frameworks/QtCore.framework/Versions/Current/Headers QTLDLIBS = -framework QtGui -framework QtCore MOC = moc +LUAPLATFORM = macosx else CXXFLAGS = $(shell pkg-config --cflags QtCore QtGui 2>/dev/null) -Wall -O4 QTLDLIBS = $(shell pkg-config --libs QtCore QtGui 2>/dev/null) MOC = $(shell pkg-config --variable=moc_location QtCore) + # Below is a variant you can use if you have problems compiling with QT5 on ubuntu. see http://www.proxmark.org/forum/viewtopic.php?id=1661 for more info. + #MOC = /usr/lib/x86_64-linux-gnu/qt4/bin/moc +LUAPLATFORM = linux endif @@@ -46,7 -43,8 +48,8 @@@ endi CORESRCS = uart.c \ util.c \ - sleep.c \ + sleep.c + CMDSRCS = nonce2key/crapto1.c\ nonce2key/crypto1.c\ @@@ -76,12 -74,7 +79,12 @@@ cmdparser.c \ cmdmain.c \ cmdlft55xx.c \ - cmdlfpcf7931.c + cmdlfpcf7931.c\ + pm3_binlib.c\ + scripting.c\ + cmdscript.c\ + + COREOBJS = $(CORESRCS:%.c=$(OBJDIR)/%.o) CMDOBJS = $(CMDSRCS:%.c=$(OBJDIR)/%.o) @@@ -90,7 -83,7 +93,7 @@@ RM = rm - BINS = proxmark3 flasher #snooper cli CLEAN = cli cli.exe flasher flasher.exe proxmark3 proxmark3.exe snooper snooper.exe $(CMDOBJS) $(OBJDIR)/*.o *.o *.moc.cpp -all: $(BINS) +all: lua_build $(BINS) all-static: LDLIBS:=-static $(LDLIBS) all-static: snooper cli flasher @@@ -119,7 -112,6 +122,7 @@@ proxguiqt.moc.cpp: proxguiqt. clean: $(RM) $(CLEAN) + cd ../liblua && make clean tarbin: $(BINS) $(TAR) $(TARFLAGS) ../proxmark3-$(platform)-bin.tar $(BINS:%=client/%) @@@ -135,8 -127,4 +138,8 @@@ install_kext: Info.plis touch /System/Library/Extensions @echo "*** You may need to reboot for the kext to take effect." +lua_build: + @echo Compiling liblua, using platform $(LUAPLATFORM) + cd ../liblua && make $(LUAPLATFORM) + .PHONY: all clean diff --combined client/cmdmain.c index 9da1b308,64e0c1b4..b6f32ada --- a/client/cmdmain.c +++ b/client/cmdmain.c @@@ -24,8 -24,8 +24,9 @@@ #include "cmdlf.h" #include "cmdmain.h" #include "util.h" +#include "cmdscript.h" + unsigned int current_command = CMD_UNKNOWN; //unsigned int received_command = CMD_UNKNOWN; //UsbCommand current_response; @@@ -51,7 -51,6 +52,7 @@@ static command_t CommandTable[] {"hw", CmdHW, 1, "{ Hardware commands... }"}, {"lf", CmdLF, 1, "{ LF commands... }"}, {"quit", CmdQuit, 1, "Quit program"}, + {"script", CmdScript, 1,"Run script"}, {NULL, NULL, 0, NULL} }; @@@ -66,6 -65,8 +67,6 @@@ int CmdQuit(const char *Cmd exit(0); return 0; } -int getCommand(UsbCommand* response); -void storeCommand(UsbCommand *command); /** * Waits for a certain response type. This method waits for a maximum of * ms_timeout milliseconds for a specified response command.