From 022c8791c14841d9c32f19b8b06ef6651bdcbd15 Mon Sep 17 00:00:00 2001 From: bushing Date: Tue, 22 Dec 2009 12:54:24 +0000 Subject: [PATCH] fixes to make it work properly on the Mac --- client/Info.plist | 30 ++++++++++++++++++++++++++++++ client/Makefile | 24 +++++++++++++++++++++--- client/proxmark3.c | 18 +++++++----------- client/usb.c | 29 +---------------------------- 4 files changed, 59 insertions(+), 42 deletions(-) create mode 100644 client/Info.plist diff --git a/client/Info.plist b/client/Info.plist new file mode 100644 index 00000000..d1f87572 --- /dev/null +++ b/client/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion English + CFBundleIdentifier org.proxmark + CFBundleIconFile + CFBundleInfoDictionaryVersion 6.0 + CFBundlePackageType KEXT + CFBundleSignature ???? + CFBundleVersion 1.0.0 + IOKitPersonalities + + Proxmark3 + + CFBundleIdentifiercom.apple.kernel.iokit + IOClassIOService + IOProviderClassIOUSBInterface + bConfigurationValue 1 + bInterfaceNumber 0 + idProduct19343 + idVendor39620 + + + OSBundleLibraries + + com.apple.iokit.IOUSBFamily1.8 + + + diff --git a/client/Makefile b/client/Makefile index dc3046e8..007bb4b6 100644 --- a/client/Makefile +++ b/client/Makefile @@ -1,18 +1,25 @@ WINCC=c:\mingw\bin\gcc #COMMON_FLAGS = -m32 + LDLIBS = -L/opt/local/lib -L/usr/local/lib -lusb -lreadline -lpthread LDFLAGS = $(COMMON_FLAGS) CFLAGS = -I. -I/opt/local/include -Wall -Wno-unused-function $(COMMON_FLAGS) WINLIBS = -lgdi32 -lsetupapi -#CXXFLAGS = $(shell pkg-config --cflags QtCore QtGui 2>/dev/null) -Wall -arch i386 -D_ -#QTLDLIBS = $(shell pkg-config --libs QtCore QtGui 2>/dev/null) -arch i386 +CXXFLAGS = $(shell pkg-config --cflags QtCore QtGui 2>/dev/null) -Wall +QTLDLIBS = $(shell pkg-config --libs QtCore QtGui 2>/dev/null) + +ifeq ($(shell uname),Darwin) +CXXFLAGS += -arch i386 -DQ_WS_MAC32 +CFLAGS += -arch i386 +QTLDLIBS += -arch i386 +endif ifneq ($(QTLDLIBS),) QTGUI = proxgui.o proxguiqt.o proxguiqt.moc.o CFLAGS += -DHAVE_GUI -MOC = $(shell type moc-qt4 >/dev/null 2>&1 && echo moc-qt4 || echo moc) +MOC = $(shell pkg-config --variable=moc_location QtCore) LINK.o = $(LINK.cpp) else QTGUI = guidummy.o @@ -53,4 +60,15 @@ proxguiqt.moc.cpp: proxguiqt.h clean: $(RM) $(CLEAN) +# must be run as root +install_kext: Info.plist + mkdir -p /System/Library/Extensions/Proxmark3.kext/Contents + cp Info.plist /System/Library/Extensions/Proxmark3.kext/Contents + chown -R root:wheel /System/Library/Extensions/Proxmark3.kext + chmod 755 /System/Library/Extensions/Proxmark3.kext /System/Library/Extensions/Proxmark3.kext/Contents + chmod 644 /System/Library/Extensions/Proxmark3.kext/Contents/Info.plist + rm -rf /System/Library/Caches/com.apple.kext.caches + touch /System/Library/Extensions + @echo "*** You may need to reboot for the kext to take effect." + .PHONY: all clean diff --git a/client/proxmark3.c b/client/proxmark3.c index 280d07f9..05c2fe2d 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -45,21 +45,17 @@ static void *main_loop(void *targ) { struct main_loop_arg *arg = (struct main_loop_arg*)targ; char *cmd = NULL; + pthread_t reader_thread; - while(1) { + if (arg->usb_present == 1) { struct usb_receiver_arg rarg; - pthread_t reader_thread; - rarg.run=1; - if (arg->usb_present == 1) { - pthread_create(&reader_thread, NULL, &usb_receiver, &rarg); - } - cmd = readline(PROXPROMPT); - rarg.run=0; - if (arg->usb_present == 1) { - pthread_join(reader_thread, NULL); - } + pthread_create(&reader_thread, NULL, &usb_receiver, &rarg); + } + + while(1) { + cmd = readline(PROXPROMPT); if (cmd) { if (cmd[0] != 0x00) { CommandReceived(cmd); diff --git a/client/usb.c b/client/usb.c index 4f4bd2ca..e0836b82 100644 --- a/client/usb.c +++ b/client/usb.c @@ -41,19 +41,6 @@ void SendCommand(UsbCommand *c) { return; } -/* - if(wantAck) { - UsbCommand ack; - printf("waiting for ack\n"); - ReceiveCommand(&ack); - if(ack.cmd != CMD_ACK) { - printf("bad ACK\n"); - exit(-1); - } - } else { - printf("not waiting for ack\n"); - } -*/ } bool ReceiveCommandPoll(UsbCommand *c) { @@ -85,23 +72,9 @@ bool ReceiveCommandPoll(UsbCommand *c) { fprintf(stderr, "Read only %d instead of requested %d bytes!\n", ret, (int)sizeof(UsbCommand)); } - -#if 0 - { - int i; - - printf("Read %d bytes\n", ret); - for (i = 0; i < ret; i++) { - printf("0x%02X ", ((unsigned char*)c)[i]); - if (!((i+1)%8)) - printf("\n"); - } - printf("\n"); - } -#endif } - return ret != 0; + return ret > 0; } void ReceiveCommand(UsbCommand *c) { -- 2.39.2