From fb9acd45888ec05381f8a21835e3c071c582346d Mon Sep 17 00:00:00 2001 From: pwpiwi Date: Fri, 31 Mar 2017 16:04:04 +0200 Subject: [PATCH] Update/cleanup Makefiles (#265) - add new target "make mfkey" to build mfkey32 and mfkey64 - include above when "make all" - fix Qt detection for Kali Linux - create and use dependency files when building client - create client/lualibs/usb_cmd.lua from include/usb_cmd.h when building client - add Windows *.exe files with "make tarbin" - For the time being don't include Makefile.common in Makefile and client/Makefile - set com3 as default flashing port for Windows (including mingw) - remove static targets snooper and cli. Remove their sources as well. --- Makefile | 39 +++++-- client/Makefile | 129 ++++++++++++++-------- client/cli.c | 58 ---------- client/{guidummy.c => guidummy.cpp} | 12 +-- client/lualibs/commands.lua | 160 +--------------------------- client/lualibs/usb_cmd.lua | 137 ++++++++++++++++++++++++ client/snooper.c | 46 -------- client/usb_cmd_h2lua.awk | 15 +++ 8 files changed, 274 insertions(+), 322 deletions(-) delete mode 100644 client/cli.c rename client/{guidummy.c => guidummy.cpp} (71%) create mode 100644 client/lualibs/usb_cmd.lua delete mode 100644 client/snooper.c create mode 100644 client/usb_cmd_h2lua.awk diff --git a/Makefile b/Makefile index bafd8161..1ab83f9e 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,40 @@ -include common/Makefile.common - +GZIP=gzip +# Windows' echo echos its input verbatim, on Posix there is some +# amount of shell command line parsing going on. echo "" on +# Windows yields literal "", on Linux yields an empty line +ifeq ($(shell echo ""),) +# This is probably a proper system, so we can use uname +DELETE=rm -rf +FLASH_TOOL=client/flasher +platform=$(shell uname) +ifneq (,$(findstring MINGW,$(platform))) +FLASH_PORT=com3 +PATHSEP=\\# +else FLASH_PORT=/dev/ttyACM0 +PATHSEP=/ +endif +else +# Assume that we are running on native Windows +DELETE=del /q +FLASH_TOOL=client/flasher.exe +platform=Windows +FLASH_PORT=com3 +PATHSEP=\\# +endif -all clean: %: client/% bootrom/% armsrc/% recovery/% +all clean: %: client/% bootrom/% armsrc/% recovery/% mfkey/% bootrom/%: FORCE - $(MAKE) -C bootrom $(patsubst bootrom/%,%,$@) + $(MAKE) -C bootrom $(patsubst bootrom/%, %, $@) armsrc/%: FORCE - $(MAKE) -C armsrc $(patsubst armsrc/%,%,$@) + $(MAKE) -C armsrc $(patsubst armsrc/%, %, $@) client/%: FORCE - $(MAKE) -C client $(patsubst client/%,%,$@) + $(MAKE) -C client $(patsubst client/%, %, $@) recovery/%: FORCE - $(MAKE) -C recovery $(patsubst recovery/%,%,$@) + $(MAKE) -C recovery $(patsubst recovery/%, %, $@) +mfkey/%: FORCE + $(MAKE) -C tools/mfkey $(patsubst mfkey/%, %, $@) FORCE: # Dummy target to force remake in the subdirectories, even if files exist (this Makefile doesn't know about the prerequisites) .PHONY: all clean help _test flash-bootrom flash-os flash-all FORCE @@ -28,6 +51,8 @@ help: client: client/all +mfkey: mfkey/all + flash-bootrom: bootrom/obj/bootrom.elf $(FLASH_TOOL) $(FLASH_TOOL) $(FLASH_PORT) -b $(subst /,$(PATHSEP),$<) diff --git a/client/Makefile b/client/Makefile index a6b1942f..3b4ce89e 100644 --- a/client/Makefile +++ b/client/Makefile @@ -3,11 +3,15 @@ # at your option, any later version. See the LICENSE.txt file for the text of # the license. #----------------------------------------------------------------------------- -include ../common/Makefile.common +CC = gcc +CXX = g++ +LD = g++ +TAR = tar +TARFLAGS = -C .. --ignore-failed-read -rvf +RM = rm -f +MV = mv -CC=gcc -CXX=g++ #COMMON_FLAGS = -m32 VPATH = ../common ../zlib OBJDIR = obj @@ -15,46 +19,52 @@ OBJDIR = obj LDLIBS = -L/opt/local/lib -L/usr/local/lib -lreadline -lpthread -lm LUALIB = ../liblua/liblua.a LDFLAGS = $(COMMON_FLAGS) -CFLAGS = -std=c99 -D_ISOC99_SOURCE -I. -I../include -I../common -I../tools -I../zlib -I/opt/local/include -I../liblua -Wall $(COMMON_FLAGS) -g -O4 +CFLAGS = -std=c99 -D_ISOC99_SOURCE -I. -I../include -I../common -I../zlib -I/opt/local/include -I../liblua -Wall $(COMMON_FLAGS) -g -O4 LUAPLATFORM = generic +platform = $(shell uname) ifneq (,$(findstring MINGW,$(platform))) CXXFLAGS = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui - MOC = $(QTDIR)/bin/moc - LUAPLATFORM = mingw ifneq ($(wildcard $(QTDIR)/include/QtWidgets),) CXXFLAGS += -I$(QTDIR)/include/QtWidgets QTLDLIBS = -L$(QTDIR)/lib -lQt5Core -lQt5Gui -lQt5Widgets else QTLDLIBS = -L$(QTDIR)/lib -lQtCore4 -lQtGui4 endif -else ifeq ($(platform),Darwin) - 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) - LUAPLATFORM = macosx + MOC = $(QTDIR)/bin/moc + LUAPLATFORM = mingw else - CXXFLAGS = $(shell pkg-config --cflags QtCore QtGui 2>/dev/null) -Wall -O4 - QTLDLIBS = $(shell pkg-config --libs QtCore QtGui 2>/dev/null) - LUALIB += -ldl - LDLIBS += -ltermcap -lncurses - 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 + CXXFLAGS = $(shell pkg-config --cflags Qt5Core Qt5Widgets 2>/dev/null) -Wall -O4 + QTLDLIBS = $(shell pkg-config --libs Qt5Core Qt5Widgets 2>/dev/null) + MOC = $(shell pkg-config --variable=host_bins Qt5Core)/moc + ifeq ($(QTLDLIBS), ) + 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) + endif + ifeq ($(platform),Darwin) + LUAPLATFORM = macosx + else + LUALIB += -ldl + LDLIBS += -ltermcap -lncurses + LUAPLATFORM = linux + endif endif ifneq ($(QTLDLIBS),) - QTGUI = $(OBJDIR)/proxgui.o $(OBJDIR)/proxguiqt.o $(OBJDIR)/proxguiqt.moc.o + QTGUIOBJS = $(OBJDIR)/proxgui.o $(OBJDIR)/proxguiqt.o $(OBJDIR)/proxguiqt.moc.o CFLAGS += -DHAVE_GUI - LINK.o = $(LINK.cpp) else - QTGUI = guidummy.o + QTGUIOBJS = $(OBJDIR)/guidummy.o endif -CORESRCS = uart.c \ - util.c \ +# Flags to generate temporary dependency files +DEPFLAGS = -MT $@ -MMD -MP -MF $(OBJDIR)/$*.Td +# make temporary to final dependeny files after successful compilation +POSTCOMPILE = $(MV) -f $(OBJDIR)/$*.Td $(OBJDIR)/$*.d +CORESRCS = uart.c \ + util.c CMDSRCS = crapto1/crapto1.c\ crapto1/crypto1.c\ @@ -129,57 +139,82 @@ CMDSRCS = crapto1/crapto1.c\ reveng/getopt.c\ ZLIBSRCS = deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c -ZLIB_FLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED +ZLIBFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED #-DDEBUG -Dverbose=1 +QTGUISRCS = proxgui.cpp proxguiqt.cpp proxguiqt.moc.cpp guidummy.cpp COREOBJS = $(CORESRCS:%.c=$(OBJDIR)/%.o) CMDOBJS = $(CMDSRCS:%.c=$(OBJDIR)/%.o) ZLIBOBJS = $(ZLIBSRCS:%.c=$(OBJDIR)/%.o) -RM = rm -f -BINS = proxmark3 flasher fpga_compress #snooper cli -CLEAN = cli cli.exe flasher flasher.exe proxmark3 proxmark3.exe fpga_compress fpga_compress.exe snooper snooper.exe $(CMDOBJS) $(OBJDIR)/*.o *.o *.moc.cpp +BINS = proxmark3 flasher fpga_compress +WINBINS = $(patsubst %, %.exe, $(BINS)) +CLEAN = $(BINS) $(WINBINS) $(COREOBJS) $(CMDOBJS) $(ZLIBOBJS) $(QTGUIOBJS) $(OBJDIR)/*.o *.moc.cpp -all: lua_build $(BINS) +all: lua_build $(BINS) all-static: LDLIBS:=-static $(LDLIBS) -all-static: snooper cli flasher fpga_compress +all-static: proxmark3 flasher fpga_compress proxmark3: LDLIBS+=$(LUALIB) $(QTLDLIBS) -proxmark3: $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(QTGUI) - $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@ - -snooper: $(OBJDIR)/snooper.o $(COREOBJS) $(CMDOBJS) $(OBJDIR)/guidummy.o - $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@ - -cli: $(OBJDIR)/cli.o $(COREOBJS) $(CMDOBJS) $(OBJDIR)/guidummy.o - $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@ +proxmark3: $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(QTGUIOBJS) lualibs/usb_cmd.lua + $(LD) $(LDFLAGS) $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(QTGUIOBJS) $(LDLIBS) -o $@ flasher: $(OBJDIR)/flash.o $(OBJDIR)/flasher.o $(COREOBJS) - $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@ + $(LD) $(LDFLAGS) $^ $(LDLIBS) -o $@ fpga_compress: $(OBJDIR)/fpga_compress.o $(ZLIBOBJS) - $(CXX) $(CXXFLAGS) $(ZLIB_FLAGS) $^ $(LDLIBS) -o $@ - -$(OBJDIR)/%.o: %.c - $(CC) $(CFLAGS) $(ZLIB_FLAGS) -c -o $@ $< - -$(OBJDIR)/%.o: %.cpp - $(CXX) $(CXXFLAGS) -c -o $@ $< + $(LD) $(LDFLAGS) $(ZLIBFLAGS) $^ $(LDLIBS) -o $@ proxguiqt.moc.cpp: proxguiqt.h $(MOC) -o$@ $^ +lualibs/usb_cmd.lua: ../include/usb_cmd.h + awk -f usb_cmd_h2lua.awk $^ > $@ + clean: $(RM) $(CLEAN) cd ../liblua && make clean tarbin: $(BINS) - $(TAR) $(TARFLAGS) ../proxmark3-$(platform)-bin.tar $(BINS:%=client/%) + $(TAR) $(TARFLAGS) ../proxmark3-$(platform)-bin.tar $(BINS:%=client/%) $(WINBINS:%=client/%) lua_build: @echo Compiling liblua, using platform $(LUAPLATFORM) cd ../liblua && make $(LUAPLATFORM) .PHONY: all clean + +%.o: %.c +$(OBJDIR)/%.o : %.c $(OBJDIR)/%.d + $(CC) $(DEPFLAGS) $(CFLAGS) $(ZLIBFLAGS) -c -o $@ $< + $(POSTCOMPILE) + +%.o: %.cpp +$(OBJDIR)/%.o : %.cpp $(OBJDIR)/%.d + $(CXX) $(DEPFLAGS) $(CXXFLAGS) -c -o $@ $< + $(POSTCOMPILE) + + +#$(CMDOBJS) $(COREOBJS): $(notdir $(%.c)) %.d +# $(CC) $(DEPFLAGS) $(CFLAGS) -c -o $@ $< +# $(POSTCOMPILE) + +#$(ZLIBOBJS): $(notdir $(%.c)) %.d +# $(CC) $(DEPFLAGS) $(CFLAGS) $(ZLIBFLAGS) -c -o $@ $< +# $(POSTCOMPILE) + +#$(QTGUIOBJS): $(notdir $(%.cpp)) %.d +# $(CXX) $(DEPFLAGS) $(CXXFLAGS) -c -o $@ $< +# $(POSTCOMPILE) + +DEPENDENCY_FILES = $(patsubst %.c, $(OBJDIR)/%.d, $(CORESRCS) $(CMDSRCS) $(ZLIBSRCS)) \ + $(patsubst %.cpp, $(OBJDIR)/%.d, $(QTGUISRCS)) \ + $(OBJDIR)/proxmark3.d $(OBJDIR)/flash.d $(OBJDIR)/flasher.d $(OBJDIR)/fpga_compress.d + +$(DEPENDENCY_FILES): ; +.PRECIOUS: $(DEPENDENCY_FILES) + +-include $(DEPENDENCY_FILES) + diff --git a/client/cli.c b/client/cli.c deleted file mode 100644 index c5c2acf4..00000000 --- a/client/cli.c +++ /dev/null @@ -1,58 +0,0 @@ -//----------------------------------------------------------------------------- -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -// Command line binary -//----------------------------------------------------------------------------- - -#include -#include "sleep.h" -#include "ui.h" -#include "proxusb.h" -#include "cmdmain.h" - -#define HANDLE_ERROR if (error_occured) { \ - error_occured = 0;\ - break;\ -} - -int main(int argc, char **argv) -{ - if (argc != 3 && argc != 4) - { - printf("\n\tusage: cli [logfile (default cli.log)]\n"); - printf("\n"); - printf("\texample: cli hi14asnoop hi14alist h14a.log\n"); - printf("\n"); - return -1; - } - - usb_init(); - if (argc == 4) - SetLogFilename(argv[3]); - else - SetLogFilename("cli.log"); - - return_on_error = 1; - - while (1) { - while (!OpenProxmark(0)) { sleep(1); } - while (1) { - UsbCommand cmdbuf; - CommandReceived(argv[1]); - HANDLE_ERROR; - ReceiveCommand(&cmdbuf); - HANDLE_ERROR; - for (int i = 0; i < 5; ++i) { - ReceiveCommandPoll(&cmdbuf); - } - HANDLE_ERROR; - CommandReceived(argv[2]); - HANDLE_ERROR; - } - } - - CloseProxmark(); - return 0; -} diff --git a/client/guidummy.c b/client/guidummy.cpp similarity index 71% rename from client/guidummy.c rename to client/guidummy.cpp index b42dea24..6c24973b 100644 --- a/client/guidummy.c +++ b/client/guidummy.cpp @@ -10,7 +10,7 @@ #include -void ShowGraphWindow(void) +extern "C" void ShowGraphWindow(void) { static int warned = 0; @@ -20,8 +20,8 @@ void ShowGraphWindow(void) } } -void HideGraphWindow(void) {} -void RepaintGraphWindow(void) {} -void MainGraphics() {} -void InitGraphics(int argc, char **argv) {} -void ExitGraphics(void) {} +extern "C" void HideGraphWindow(void) {} +extern "C" void RepaintGraphWindow(void) {} +extern "C" void MainGraphics() {} +extern "C" void InitGraphics(int argc, char **argv) {} +extern "C" void ExitGraphics(void) {} diff --git a/client/lualibs/commands.lua b/client/lualibs/commands.lua index 2a97196a..dadd2fc5 100644 --- a/client/lualibs/commands.lua +++ b/client/lualibs/commands.lua @@ -1,164 +1,8 @@ --[[ -These are command definitions. This file should correspond exactly to usb_cmd.h. +Handle Proxmark USB Commands --]] ---// For the bootloader -local _commands = { - CMD_DEVICE_INFO = 0x0000, - CMD_SETUP_WRITE = 0x0001, - CMD_FINISH_WRITE = 0x0003, - CMD_HARDWARE_RESET = 0x0004, - CMD_START_FLASH = 0x0005, - CMD_NACK = 0x00fe, - CMD_ACK = 0x00ff, - - --// For general mucking around - CMD_DEBUG_PRINT_STRING = 0x0100, - CMD_DEBUG_PRINT_INTEGERS = 0x0101, - CMD_DEBUG_PRINT_BYTES = 0x0102, - CMD_LCD_RESET = 0x0103, - CMD_LCD = 0x0104, - CMD_BUFF_CLEAR = 0x0105, - CMD_READ_MEM = 0x0106, - CMD_VERSION = 0x0107, - CMD_STATUS = 0x0108, - CMD_PING = 0x0109, - --// For low-frequency tags - CMD_READ_TI_TYPE = 0x0202, - CMD_WRITE_TI_TYPE = 0x0203, - CMD_DOWNLOADED_RAW_BITS_TI_TYPE = 0x0204, - CMD_ACQUIRE_RAW_ADC_SAMPLES_125K = 0x0205, - CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K = 0x0206, - CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K = 0x0207, - CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K = 0x0208, - CMD_DOWNLOADED_SIM_SAMPLES_125K = 0x0209, - CMD_SIMULATE_TAG_125K = 0x020A, - CMD_HID_DEMOD_FSK = 0x020B, - CMD_HID_SIM_TAG = 0x020C, - CMD_SET_LF_DIVISOR = 0x020D, - CMD_LF_SIMULATE_BIDIR = 0x020E, - CMD_SET_ADC_MUX = 0x020F, - CMD_HID_CLONE_TAG = 0x0210, - CMD_EM410X_WRITE_TAG = 0x0211, - CMD_INDALA_CLONE_TAG = 0x0212, - --// for 224 bits UID - CMD_INDALA_CLONE_TAG_L = 0x0213, - CMD_T55XX_READ_BLOCK = 0x0214, - CMD_T55XX_WRITE_BLOCK = 0x0215, - CMD_T55XX_RESET_READ = 0x0216, - CMD_PCF7931_READ = 0x0217, - CMD_EM4X_READ_WORD = 0x0218, - CMD_EM4X_WRITE_WORD = 0x0219, - CMD_IO_DEMOD_FSK = 0x021A, - CMD_IO_CLONE_TAG = 0x021B, - CMD_EM410X_DEMOD = 0x021c, - CMD_SET_LF_SAMPLING_CONFIG = 0x021d, - CMD_FSK_SIM_TAG = 0x021E, - CMD_ASK_SIM_TAG = 0x021F, - CMD_PSK_SIM_TAG = 0x0220, - CMD_AWID_DEMOD_FSK = 0x0221, - CMD_VIKING_CLONE_TAG = 0x0223, - CMD_T55XX_WAKEUP = 0x0224, - CMD_COTAG = 0x0225, - --/* CMD_SET_ADC_MUX: ext1 is 0 for lopkd, 1 for loraw, 2 for hipkd, 3 for hiraw */ - - --// For the 13.56 MHz tags - CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_15693 = 0x0300, - CMD_READ_SRI512_TAG = 0x0303, - CMD_READ_SRIX4K_TAG = 0x0304, - CMD_READER_ISO_15693 = 0x0310, - CMD_SIMTAG_ISO_15693 = 0x0311, - CMD_RECORD_RAW_ADC_SAMPLES_ISO_15693 = 0x0312, - CMD_ISO_15693_COMMAND = 0x0313, - CMD_ISO_15693_COMMAND_DONE = 0x0314, - CMD_ISO_15693_FIND_AFI = 0x0315, - CMD_ISO_15693_DEBUG = 0x0316, - CMD_LF_SNOOP_RAW_ADC_SAMPLES = 0x0317, - - --// For Hitag2 transponders - CMD_SNOOP_HITAG = 0x0370, - CMD_SIMULATE_HITAG = 0x0371, - CMD_READER_HITAG = 0x0372, - - CMD_SIMULATE_TAG_ISO_14443B = 0x0381, - CMD_SNOOP_ISO_14443B = 0x0382, - CMD_SNOOP_ISO_14443a = 0x0383, - CMD_SIMULATE_TAG_ISO_14443a = 0x0384, - CMD_READER_ISO_14443a = 0x0385, - CMD_SIMULATE_TAG_LEGIC_RF = 0x0387, - CMD_READER_LEGIC_RF = 0x0388, - CMD_WRITER_LEGIC_RF = 0x0389, - CMD_EPA_PACE_COLLECT_NONCE = 0x038A, - --//CMD_EPA_ = 0x038B, - - CMD_ICLASS_READCHECK = 0x038F, - CMD_ICLASS_CLONE = 0x0390, - CMD_ICLASS_DUMP = 0x0391, - CMD_SNOOP_ICLASS = 0x0392, - CMD_SIMULATE_TAG_ICLASS = 0x0393, - CMD_READER_ICLASS = 0x0394, - CMD_READER_ICLASS_REPLAY = 0x0395, - CMD_ICLASS_READBLOCK = 0x0396, - CMD_ICLASS_WRITEBLOCK = 0x0397, - CMD_ICLASS_EML_MEMSET = 0x0398, - CMD_ICLASS_AUTHENTICATION = 0x0399, - - --// For measurements of the antenna tuning - CMD_MEASURE_ANTENNA_TUNING = 0x0400, - CMD_MEASURE_ANTENNA_TUNING_HF = 0x0401, - CMD_MEASURED_ANTENNA_TUNING = 0x0410, - CMD_LISTEN_READER_FIELD = 0x0420, - - --// For direct FPGA control - CMD_FPGA_MAJOR_MODE_OFF = 0x0500, - - --// For mifare commands - CMD_MIFARE_SET_DBGMODE = 0x0600, - CMD_MIFARE_EML_MEMCLR = 0x0601, - CMD_MIFARE_EML_MEMSET = 0x0602, - CMD_MIFARE_EML_MEMGET = 0x0603, - CMD_MIFARE_EML_CARDLOAD = 0x0604, - - --// magic chinese card commands - CMD_MIFARE_CSETBLOCK = 0x0605, - CMD_MIFARE_CGETBLOCK = 0x0606, - CMD_MIFARE_CIDENT = 0x0607, - - CMD_SIMULATE_MIFARE_CARD = 0x0610, - - CMD_READER_MIFARE = 0x0611, - CMD_MIFARE_NESTED = 0x0612, - - CMD_MIFARE_READBL = 0x0620, - CMD_MIFAREU_READBL = 0x0720, - - CMD_MIFARE_READSC = 0x0621, - CMD_MIFAREU_READCARD = 0x0721, - - CMD_MIFARE_WRITEBL = 0x0622, - CMD_MIFAREU_WRITEBL = 0x0722, - CMD_MIFAREU_WRITEBL_COMPAT = 0x0723, - - CMD_MIFARE_CHKKEYS = 0x0623, - - CMD_MIFARE_SNIFFER = 0x0630, - - --//ultralightC - CMD_MIFAREUC_AUTH = 0x0724, - CMD_MIFAREUC_SETPWD = 0x0727, - CMD_MIFAREU_SETUID = 0x0728, - - --// mifare desfire - CMD_MIFARE_DESFIRE_READBL = 0x0728, - CMD_MIFARE_DESFIRE_WRITEBL = 0x0729, - CMD_MIFARE_DESFIRE_AUTH1 = 0x072a, - CMD_MIFARE_DESFIRE_AUTH2 = 0x072b, - CMD_MIFARE_DES_READER = 0x072c, - CMD_MIFARE_DESFIRE_INFO = 0x072d, - CMD_MIFARE_DESFIRE = 0x072e, - - CMD_UNKNOWN = 0xFFFF, -} +local _commands = require('usb_cmd') local _reverse_lookup,k,v = {} for k, v in pairs(_commands) do diff --git a/client/lualibs/usb_cmd.lua b/client/lualibs/usb_cmd.lua new file mode 100644 index 00000000..52757990 --- /dev/null +++ b/client/lualibs/usb_cmd.lua @@ -0,0 +1,137 @@ +--[[ +These are Proxmark command definitions. +This file is automatically generated from usb_cmd.h - DON'T EDIT MANUALLY. +--]] +local __commands = { +CMD_DEVICE_INFO = 0x0000, +CMD_SETUP_WRITE = 0x0001, +CMD_FINISH_WRITE = 0x0003, +CMD_HARDWARE_RESET = 0x0004, +CMD_START_FLASH = 0x0005, +CMD_NACK = 0x00fe, +CMD_ACK = 0x00ff, +CMD_DEBUG_PRINT_STRING = 0x0100, +CMD_DEBUG_PRINT_INTEGERS = 0x0101, +CMD_DEBUG_PRINT_BYTES = 0x0102, +CMD_LCD_RESET = 0x0103, +CMD_LCD = 0x0104, +CMD_BUFF_CLEAR = 0x0105, +CMD_READ_MEM = 0x0106, +CMD_VERSION = 0x0107, +CMD_STATUS = 0x0108, +CMD_PING = 0x0109, +CMD_READ_TI_TYPE = 0x0202, +CMD_WRITE_TI_TYPE = 0x0203, +CMD_DOWNLOADED_RAW_BITS_TI_TYPE = 0x0204, +CMD_ACQUIRE_RAW_ADC_SAMPLES_125K = 0x0205, +CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K = 0x0206, +CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K = 0x0207, +CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K = 0x0208, +CMD_DOWNLOADED_SIM_SAMPLES_125K = 0x0209, +CMD_SIMULATE_TAG_125K = 0x020A, +CMD_HID_DEMOD_FSK = 0x020B, +CMD_HID_SIM_TAG = 0x020C, +CMD_SET_LF_DIVISOR = 0x020D, +CMD_LF_SIMULATE_BIDIR = 0x020E, +CMD_SET_ADC_MUX = 0x020F, +CMD_HID_CLONE_TAG = 0x0210, +CMD_EM410X_WRITE_TAG = 0x0211, +CMD_INDALA_CLONE_TAG = 0x0212, +CMD_INDALA_CLONE_TAG_L = 0x0213, +CMD_T55XX_READ_BLOCK = 0x0214, +CMD_T55XX_WRITE_BLOCK = 0x0215, +CMD_T55XX_RESET_READ = 0x0216, +CMD_PCF7931_READ = 0x0217, +CMD_PCF7931_WRITE = 0x0222, +CMD_EM4X_READ_WORD = 0x0218, +CMD_EM4X_WRITE_WORD = 0x0219, +CMD_IO_DEMOD_FSK = 0x021A, +CMD_IO_CLONE_TAG = 0x021B, +CMD_EM410X_DEMOD = 0x021c, +CMD_SET_LF_SAMPLING_CONFIG = 0x021d, +CMD_FSK_SIM_TAG = 0x021E, +CMD_ASK_SIM_TAG = 0x021F, +CMD_PSK_SIM_TAG = 0x0220, +CMD_AWID_DEMOD_FSK = 0x0221, +CMD_VIKING_CLONE_TAG = 0x0223, +CMD_T55XX_WAKEUP = 0x0224, +CMD_COTAG = 0x0225, +CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_15693 = 0x0300, +CMD_READ_SRI512_TAG = 0x0303, +CMD_READ_SRIX4K_TAG = 0x0304, +CMD_ISO_14443B_COMMAND = 0x0305, +CMD_READER_ISO_15693 = 0x0310, +CMD_SIMTAG_ISO_15693 = 0x0311, +CMD_RECORD_RAW_ADC_SAMPLES_ISO_15693 = 0x0312, +CMD_ISO_15693_COMMAND = 0x0313, +CMD_ISO_15693_COMMAND_DONE = 0x0314, +CMD_ISO_15693_FIND_AFI = 0x0315, +CMD_ISO_15693_DEBUG = 0x0316, +CMD_LF_SNOOP_RAW_ADC_SAMPLES = 0x0317, +CMD_SNOOP_HITAG = 0x0370, +CMD_SIMULATE_HITAG = 0x0371, +CMD_READER_HITAG = 0x0372, +CMD_SIMULATE_HITAG_S = 0x0368, +CMD_TEST_HITAGS_TRACES = 0x0367, +CMD_READ_HITAG_S = 0x0373, +CMD_WR_HITAG_S = 0x0375, +CMD_EMU_HITAG_S = 0x0376, +CMD_SIMULATE_TAG_ISO_14443B = 0x0381, +CMD_SNOOP_ISO_14443B = 0x0382, +CMD_SNOOP_ISO_14443a = 0x0383, +CMD_SIMULATE_TAG_ISO_14443a = 0x0384, +CMD_READER_ISO_14443a = 0x0385, +CMD_SIMULATE_TAG_LEGIC_RF = 0x0387, +CMD_READER_LEGIC_RF = 0x0388, +CMD_WRITER_LEGIC_RF = 0x0389, +CMD_EPA_PACE_COLLECT_NONCE = 0x038A, +CMD_EPA_PACE_REPLAY = 0x038B, +CMD_ICLASS_READCHECK = 0x038F, +CMD_ICLASS_CLONE = 0x0390, +CMD_ICLASS_DUMP = 0x0391, +CMD_SNOOP_ICLASS = 0x0392, +CMD_SIMULATE_TAG_ICLASS = 0x0393, +CMD_READER_ICLASS = 0x0394, +CMD_READER_ICLASS_REPLAY = 0x0395, +CMD_ICLASS_READBLOCK = 0x0396, +CMD_ICLASS_WRITEBLOCK = 0x0397, +CMD_ICLASS_EML_MEMSET = 0x0398, +CMD_ICLASS_AUTHENTICATION = 0x0399, +CMD_MEASURE_ANTENNA_TUNING = 0x0400, +CMD_MEASURE_ANTENNA_TUNING_HF = 0x0401, +CMD_MEASURED_ANTENNA_TUNING = 0x0410, +CMD_LISTEN_READER_FIELD = 0x0420, +CMD_FPGA_MAJOR_MODE_OFF = 0x0500, +CMD_MIFARE_SET_DBGMODE = 0x0600, +CMD_MIFARE_EML_MEMCLR = 0x0601, +CMD_MIFARE_EML_MEMSET = 0x0602, +CMD_MIFARE_EML_MEMGET = 0x0603, +CMD_MIFARE_EML_CARDLOAD = 0x0604, +CMD_MIFARE_CSETBLOCK = 0x0605, +CMD_MIFARE_CGETBLOCK = 0x0606, +CMD_MIFARE_CIDENT = 0x0607, +CMD_SIMULATE_MIFARE_CARD = 0x0610, +CMD_READER_MIFARE = 0x0611, +CMD_MIFARE_NESTED = 0x0612, +CMD_MIFARE_READBL = 0x0620, +CMD_MIFAREU_READBL = 0x0720, +CMD_MIFARE_READSC = 0x0621, +CMD_MIFAREU_READCARD = 0x0721, +CMD_MIFARE_WRITEBL = 0x0622, +CMD_MIFAREU_WRITEBL = 0x0722, +CMD_MIFAREU_WRITEBL_COMPAT = 0x0723, +CMD_MIFARE_CHKKEYS = 0x0623, +CMD_MIFARE_SNIFFER = 0x0630, +CMD_MIFAREUC_AUTH = 0x0724, +CMD_MIFAREUC_SETPWD = 0x0727, +CMD_MIFARE_DESFIRE_READBL = 0x0728, +CMD_MIFARE_DESFIRE_WRITEBL = 0x0729, +CMD_MIFARE_DESFIRE_AUTH1 = 0x072a, +CMD_MIFARE_DESFIRE_AUTH2 = 0x072b, +CMD_MIFARE_DES_READER = 0x072c, +CMD_MIFARE_DESFIRE_INFO = 0x072d, +CMD_MIFARE_DESFIRE = 0x072e, +CMD_HF_SNIFFER = 0x0800, +CMD_UNKNOWN = 0xFFFF, +} +return __commands diff --git a/client/snooper.c b/client/snooper.c deleted file mode 100644 index 14f07063..00000000 --- a/client/snooper.c +++ /dev/null @@ -1,46 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) 2009 Michael Gernoth -// -// This code is licensed to you under the terms of the GNU GPL, version 2 or, -// at your option, any later version. See the LICENSE.txt file for the text of -// the license. -//----------------------------------------------------------------------------- -// Snooper binary -//----------------------------------------------------------------------------- - -#include "ui.h" -#include "proxusb.h" -#include "cmdmain.h" - -#define HANDLE_ERROR if (error_occured) { \ - error_occured = 0;\ - break;\ -} - -int main() -{ - usb_init(); - SetLogFilename("snooper.log"); - - return_on_error = 1; - - while(1) { - while (!OpenProxmark(0)) { sleep(1); } - while (1) { - UsbCommand cmdbuf; - CommandReceived("hf 14a snoop"); - HANDLE_ERROR; - ReceiveCommand(&cmdbuf); - HANDLE_ERROR; - for (int i = 0; i < 5; ++i) { - ReceiveCommandPoll(&cmdbuf); - } - HANDLE_ERROR; - CommandReceived("hf 14a list"); - HANDLE_ERROR; - } - } - - CloseProxmark(); - return 0; -} diff --git a/client/usb_cmd_h2lua.awk b/client/usb_cmd_h2lua.awk new file mode 100644 index 00000000..8e003562 --- /dev/null +++ b/client/usb_cmd_h2lua.awk @@ -0,0 +1,15 @@ +BEGIN { + print "--[[" + print "These are Proxmark command definitions." + print "This file is automatically generated from usb_cmd.h - DON'T EDIT MANUALLY." + print "--]]" + print "local __commands = {" +} + +#$1 ~ /#define/ && $2 ~ /^CMD_([[:alnum:]_])+/ { print $2, "=", $3, "," } +$1 ~ /#define/ && $2 ~ /^CMD_[A-Za-z0-9_]+/ { sub(/\r/, ""); print $2, "=", $3 "," } + +END { + print "}" + print "return __commands" +} -- 2.39.5