-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
client: client/all
+mfkey: mfkey/all
+
flash-bootrom: bootrom/obj/bootrom.elf $(FLASH_TOOL)
$(FLASH_TOOL) $(FLASH_PORT) -b $(subst /,$(PATHSEP),$<)
# 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
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\
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)
+
+++ /dev/null
-//-----------------------------------------------------------------------------
-// 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 <stdio.h>
-#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 <command 1> <command 2> [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;
-}
+++ /dev/null
-//-----------------------------------------------------------------------------
-// Copyright (C) 2009 Michael Gernoth <michael at gernoth.net>
-//
-// 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.
-//-----------------------------------------------------------------------------
-// GUI dummy file
-//-----------------------------------------------------------------------------
-
-#include <stdio.h>
-
-void ShowGraphWindow(void)
-{
- static int warned = 0;
-
- if (!warned) {
- printf("No GUI in this build!\n");
- warned = 1;
- }
-}
-
-void HideGraphWindow(void) {}
-void RepaintGraphWindow(void) {}
-void MainGraphics() {}
-void InitGraphics(int argc, char **argv) {}
-void ExitGraphics(void) {}
--- /dev/null
+//-----------------------------------------------------------------------------
+// Copyright (C) 2009 Michael Gernoth <michael at gernoth.net>
+//
+// 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.
+//-----------------------------------------------------------------------------
+// GUI dummy file
+//-----------------------------------------------------------------------------
+
+#include <stdio.h>
+
+extern "C" void ShowGraphWindow(void)
+{
+ static int warned = 0;
+
+ if (!warned) {
+ printf("No GUI in this build!\n");
+ warned = 1;
+ }
+}
+
+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) {}
--[[
-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
--- /dev/null
+--[[
+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
+++ /dev/null
-//-----------------------------------------------------------------------------
-// Copyright (C) 2009 Michael Gernoth <michael at gernoth.net>
-//
-// 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;
-}
--- /dev/null
+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"
+}