mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-10-03 05:36:16 +08:00
Merge pull request #39 from RfidResearchGroup/master
Update from master
This commit is contained in:
commit
29ae24fee2
|
@ -60,7 +60,7 @@ void save_dump_to_file(legic_card_select_t *p_card) {
|
||||||
// legic functions puts it memory in Emulator reserved memory.
|
// legic functions puts it memory in Emulator reserved memory.
|
||||||
uint8_t *mem = BigBuf_get_EM_addr();
|
uint8_t *mem = BigBuf_get_EM_addr();
|
||||||
|
|
||||||
char *preferredName = (char*)BigBuf_malloc(30);
|
char *preferredName = (char *)BigBuf_malloc(30);
|
||||||
if (preferredName == NULL) {
|
if (preferredName == NULL) {
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ void save_dump_to_file(legic_card_select_t *p_card) {
|
||||||
sprintf(preferredName, "hf-legic-%02X%02X%02X%02X-dump", p_card->uid[0], p_card->uid[1], p_card->uid[2], p_card->uid[3]);
|
sprintf(preferredName, "hf-legic-%02X%02X%02X%02X-dump", p_card->uid[0], p_card->uid[1], p_card->uid[2], p_card->uid[3]);
|
||||||
uint16_t preferredNameLen = strlen(preferredName);
|
uint16_t preferredNameLen = strlen(preferredName);
|
||||||
|
|
||||||
char *filename = (char*)BigBuf_malloc(preferredNameLen + 4 + 1 + 10);
|
char *filename = (char *)BigBuf_malloc(preferredNameLen + 4 + 1 + 10);
|
||||||
if (filename == NULL) {
|
if (filename == NULL) {
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ void RunMod() {
|
||||||
|
|
||||||
LED_D_ON();
|
LED_D_ON();
|
||||||
uint8_t ct;
|
uint8_t ct;
|
||||||
switch(p_card->tagtype) {
|
switch (p_card->tagtype) {
|
||||||
case 0x0D:
|
case 0x0D:
|
||||||
ct = 0;
|
ct = 0;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -404,7 +404,7 @@ bool write_byte(uint16_t index, uint8_t byte, uint8_t addr_sz) {
|
||||||
//
|
//
|
||||||
// Only this functions are public / called from appmain.c
|
// Only this functions are public / called from appmain.c
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
legic_card_select_t* getLegicCardInfo(void) {
|
legic_card_select_t *getLegicCardInfo(void) {
|
||||||
return &card;
|
return &card;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,5 +21,5 @@ int LegicRfReaderEx(uint16_t offset, uint16_t len, uint8_t iv);
|
||||||
void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv);
|
void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv);
|
||||||
void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data);
|
void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data);
|
||||||
|
|
||||||
legic_card_select_t* getLegicCardInfo(void);
|
legic_card_select_t *getLegicCardInfo(void);
|
||||||
#endif /* __LEGICRF_H */
|
#endif /* __LEGICRF_H */
|
||||||
|
|
|
@ -2405,7 +2405,7 @@ void SendForward(uint8_t fwd_bit_count) {
|
||||||
WaitUS(32 * 8);
|
WaitUS(32 * 8);
|
||||||
} else {
|
} else {
|
||||||
TurnReadLF_off(23 * 8);
|
TurnReadLF_off(23 * 8);
|
||||||
TurnReadLFOn((32-23) * 8);
|
TurnReadLFOn((32 - 23) * 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -334,16 +334,16 @@ void MifareDES_Auth1(uint8_t *datain) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rndlen=8;
|
int rndlen = 8;
|
||||||
int expectedlen = 1 + 8 + 2 + 2;
|
int expectedlen = 1 + 8 + 2 + 2;
|
||||||
if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3K3DES) {
|
if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3K3DES) {
|
||||||
expectedlen = 1 + 16 + 2 + 2;
|
expectedlen = 1 + 16 + 2 + 2;
|
||||||
rndlen=16;
|
rndlen = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (payload->mode == MFDES_AUTH_PICC) {
|
if (payload->mode == MFDES_AUTH_PICC) {
|
||||||
expectedlen = 1 + 1 + 8 + 2;
|
expectedlen = 1 + 1 + 8 + 2;
|
||||||
rndlen=8;
|
rndlen = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len != expectedlen) {
|
if (len != expectedlen) {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
// PRIx64 definition missing with gcc-arm-none-eabi v8?
|
// PRIx64 definition missing with gcc-arm-none-eabi v8?
|
||||||
#ifndef PRIx64
|
#ifndef PRIx64
|
||||||
#define PRIx64 "llx"
|
#define PRIx64 "llx"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Basic macros
|
// Basic macros
|
||||||
|
|
|
@ -17,7 +17,7 @@ include ../Makefile.defs
|
||||||
INSTALLBIN = proxmark3
|
INSTALLBIN = proxmark3
|
||||||
INSTALLSHARE = cmdscripts lualibs luascripts resources dictionaries
|
INSTALLSHARE = cmdscripts lualibs luascripts resources dictionaries
|
||||||
|
|
||||||
VPATH = ../common uart
|
VPATH = ../common src/uart src deps
|
||||||
vpath %.dic dictionaries
|
vpath %.dic dictionaries
|
||||||
OBJDIR = obj
|
OBJDIR = obj
|
||||||
|
|
||||||
|
@ -32,15 +32,15 @@ ifneq ($(platform),Darwin)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# local libraries
|
# local libraries
|
||||||
LUALIBPATH = ./liblua
|
LUALIBPATH = ./deps/liblua
|
||||||
LUALIB = $(LUALIBPATH)/liblua.a
|
LUALIB = $(LUALIBPATH)/liblua.a
|
||||||
JANSSONLIBPATH = ./jansson
|
JANSSONLIBPATH = ./deps/jansson
|
||||||
JANSSONLIB = $(JANSSONLIBPATH)/libjansson.a
|
JANSSONLIB = $(JANSSONLIBPATH)/libjansson.a
|
||||||
CBORLIBPATH = ./tinycbor
|
CBORLIBPATH = ./deps/tinycbor
|
||||||
CBORLIB = $(CBORLIBPATH)/tinycbor.a
|
CBORLIB = $(CBORLIBPATH)/tinycbor.a
|
||||||
REVENGPATH = ./reveng
|
REVENGPATH = ./deps/reveng
|
||||||
REVENGLIB = $(REVENGPATH)/libreveng.a
|
REVENGLIB = $(REVENGPATH)/libreveng.a
|
||||||
AMIIBOLIBPATH = ./amiitool
|
AMIIBOLIBPATH = ./deps/amiitool
|
||||||
AMIIBOLIB = $(AMIIBOLIBPATH)/libamiibo.a
|
AMIIBOLIB = $(AMIIBOLIBPATH)/libamiibo.a
|
||||||
|
|
||||||
# common libraries
|
# common libraries
|
||||||
|
@ -50,7 +50,7 @@ ZLIBPATH = ../common/zlib
|
||||||
ZLIB = $(OBJDIR)/libz.a
|
ZLIB = $(OBJDIR)/libz.a
|
||||||
|
|
||||||
LIBS = -I$(LUALIBPATH) -I$(MBEDTLSLIBPATH) -I$(JANSSONLIBPATH) -I$(CBORLIBPATH) -I$(ZLIBPATH) -I$(REVENGPATH) -I$(AMIIBOLIBPATH)
|
LIBS = -I$(LUALIBPATH) -I$(MBEDTLSLIBPATH) -I$(JANSSONLIBPATH) -I$(CBORLIBPATH) -I$(ZLIBPATH) -I$(REVENGPATH) -I$(AMIIBOLIBPATH)
|
||||||
INCLUDES_CLIENT = -I. -I../include -I../common -Iuart $(LIBS)
|
INCLUDES_CLIENT = -I./src -I./deps -I../include -I../common -I./deps/cliparser -I./src/uart $(LIBS)
|
||||||
CFLAGS ?= -Wall -Werror -g -O3
|
CFLAGS ?= -Wall -Werror -g -O3
|
||||||
# We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env:
|
# We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env:
|
||||||
PM3CFLAGS = $(CFLAGS) -std=c99 -D_ISOC99_SOURCE $(INCLUDES_CLIENT)
|
PM3CFLAGS = $(CFLAGS) -std=c99 -D_ISOC99_SOURCE $(INCLUDES_CLIENT)
|
||||||
|
@ -59,7 +59,7 @@ ifneq (,$(findstring MINGW,$(platform)))
|
||||||
PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850
|
PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850
|
||||||
endif
|
endif
|
||||||
CXXFLAGS ?= -Wall -Werror -O3
|
CXXFLAGS ?= -Wall -Werror -O3
|
||||||
PM3CXXFLAGS = $(CXXFLAGS) -I../include
|
PM3CXXFLAGS = $(CXXFLAGS) -I../include -I/.deps/cliparser
|
||||||
|
|
||||||
LUAPLATFORM = generic
|
LUAPLATFORM = generic
|
||||||
ifneq (,$(findstring MINGW,$(platform)))
|
ifneq (,$(findstring MINGW,$(platform)))
|
||||||
|
@ -130,6 +130,7 @@ CORESRCS = uart_posix.c \
|
||||||
util_posix.c \
|
util_posix.c \
|
||||||
scandir.c \
|
scandir.c \
|
||||||
crc16.c \
|
crc16.c \
|
||||||
|
crc32.c \
|
||||||
comms.c
|
comms.c
|
||||||
|
|
||||||
CMDSRCS = crapto1/crapto1.c \
|
CMDSRCS = crapto1/crapto1.c \
|
||||||
|
@ -200,7 +201,7 @@ CMDSRCS = crapto1/crapto1.c \
|
||||||
cmdhfmfu.c \
|
cmdhfmfu.c \
|
||||||
cmdhfmfp.c \
|
cmdhfmfp.c \
|
||||||
cmdhfmfhard.c \
|
cmdhfmfhard.c \
|
||||||
hardnested/hardnested_bruteforce.c \
|
deps/hardnested/hardnested_bruteforce.c \
|
||||||
cmdhfmfdes.c \
|
cmdhfmfdes.c \
|
||||||
cmdhftopaz.c \
|
cmdhftopaz.c \
|
||||||
cmdhffido.c \
|
cmdhffido.c \
|
||||||
|
@ -258,13 +259,13 @@ CMDSRCS = crapto1/crapto1.c \
|
||||||
|
|
||||||
cpu_arch = $(shell uname -m)
|
cpu_arch = $(shell uname -m)
|
||||||
ifneq ($(findstring 86, $(cpu_arch)), )
|
ifneq ($(findstring 86, $(cpu_arch)), )
|
||||||
MULTIARCHSRCS = hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c
|
MULTIARCHSRCS = deps/hardnested/hardnested_bf_core.c deps/hardnested/hardnested_bitarray_core.c
|
||||||
endif
|
endif
|
||||||
ifneq ($(findstring amd64, $(cpu_arch)), )
|
ifneq ($(findstring amd64, $(cpu_arch)), )
|
||||||
MULTIARCHSRCS = hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c
|
MULTIARCHSRCS = deps/hardnested/hardnested_bf_core.c deps/hardnested/hardnested_bitarray_core.c
|
||||||
endif
|
endif
|
||||||
ifeq ($(MULTIARCHSRCS), )
|
ifeq ($(MULTIARCHSRCS), )
|
||||||
CMDSRCS += hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c
|
CMDSRCS += deps/hardnested/hardnested_bf_core.c deps/hardnested/hardnested_bitarray_core.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -310,13 +311,13 @@ proxmark3: $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS)
|
||||||
$(info [=] LD $@)
|
$(info [=] LD $@)
|
||||||
$(Q)$(LD) $(LDFLAGS) $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(LDLIBS) -o $@
|
$(Q)$(LD) $(LDFLAGS) $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS) $(MULTIARCHOBJS) $(LDLIBS) -o $@
|
||||||
|
|
||||||
proxgui.cpp: ui/ui_overlays.h
|
src/proxgui.cpp: src/ui/ui_overlays.h
|
||||||
|
|
||||||
proxguiqt.moc.cpp: proxguiqt.h
|
src/proxguiqt.moc.cpp: src/proxguiqt.h
|
||||||
$(info [-] MOC $@)
|
$(info [-] MOC $@)
|
||||||
$(Q)$(MOC) -o$@ $^
|
$(Q)$(MOC) -o$@ $^
|
||||||
|
|
||||||
ui/ui_overlays.h: ui/overlays.ui
|
src/ui/ui_overlays.h: src/ui/overlays.ui
|
||||||
$(info [-] UIC $@)
|
$(info [-] UIC $@)
|
||||||
$(Q)$(UIC) $^ > $@
|
$(Q)$(UIC) $^ > $@
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
MYSRCPATHS =
|
MYSRCPATHS =
|
||||||
MYINCLUDES = -I. -I.. -I../jansson -I../../common/ -I../../include/
|
MYINCLUDES = -I. -I.. -I../jansson -I../../../common -I../../../include
|
||||||
MYCFLAGS = -std=c99 -D_ISOC99_SOURCE
|
MYCFLAGS = -std=c99 -D_ISOC99_SOURCE
|
||||||
MYDEFS =
|
MYDEFS =
|
||||||
MYSRCS = \
|
MYSRCS = \
|
||||||
|
@ -9,11 +9,11 @@ MYSRCS = \
|
||||||
|
|
||||||
LIB_A = libamiibo.a
|
LIB_A = libamiibo.a
|
||||||
|
|
||||||
include ../../Makefile.host
|
include ../../../Makefile.host
|
||||||
|
|
||||||
# just for testing amiitool before complete migration into a lib:
|
# just for testing amiitool before complete migration into a lib:
|
||||||
|
|
||||||
amiitool:
|
amiitool:
|
||||||
gcc $(CFLAGS) \
|
gcc $(CFLAGS) \
|
||||||
amiitool.c $(MYSRCS) ../../common/commonutil.c ../ui.c -lreadline -lm ../../common/mbedtls/libmbedtls.a \
|
amiitool.c $(MYSRCS) ../../../common/commonutil.c ../ui.c -lreadline -lm ../../../common/mbedtls/libmbedtls.a \
|
||||||
-o amiitool
|
-o amiitool
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "fileutils.h"
|
#include "src/fileutils.h"
|
||||||
#include "amiibo.h"
|
#include "amiibo.h"
|
||||||
#include "getopt.h"
|
#include "getopt.h"
|
||||||
|
|
|
@ -59,8 +59,8 @@ THE SOFTWARE.
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "crapto1/crapto1.h"
|
#include "crapto1/crapto1.h"
|
||||||
#include "parity.h"
|
#include "parity.h"
|
||||||
#include "util.h"
|
//#include "util.h"
|
||||||
#include "common.h"
|
//#include "common.h"
|
||||||
|
|
||||||
// bitslice type
|
// bitslice type
|
||||||
// while AVX supports 256 bit vector floating point operations, we need integer operations for boolean logic
|
// while AVX supports 256 bit vector floating point operations, we need integer operations for boolean logic
|
|
@ -19,7 +19,33 @@
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "cmdhfmfhard.h"
|
|
||||||
|
#define NUM_SUMS 19 // number of possible sum property values
|
||||||
|
|
||||||
|
typedef struct guess_sum_a8 {
|
||||||
|
float prob;
|
||||||
|
uint64_t num_states;
|
||||||
|
uint8_t sum_a8_idx;
|
||||||
|
} guess_sum_a8_t;
|
||||||
|
|
||||||
|
typedef struct noncelistentry {
|
||||||
|
uint32_t nonce_enc;
|
||||||
|
uint8_t par_enc;
|
||||||
|
void *next;
|
||||||
|
} noncelistentry_t;
|
||||||
|
|
||||||
|
typedef struct noncelist {
|
||||||
|
uint16_t num;
|
||||||
|
uint16_t Sum;
|
||||||
|
guess_sum_a8_t sum_a8_guess[NUM_SUMS];
|
||||||
|
bool sum_a8_guess_dirty;
|
||||||
|
float expected_num_brute_force;
|
||||||
|
uint8_t BitFlips[0x400];
|
||||||
|
uint32_t *states_bitarray[2];
|
||||||
|
uint32_t num_states_bitarray[2];
|
||||||
|
bool all_bitflips_dirty[2];
|
||||||
|
noncelistentry_t *first;
|
||||||
|
} noncelist_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t *states[2];
|
uint32_t *states[2];
|
|
@ -18,4 +18,4 @@ MYSRCS = \
|
||||||
|
|
||||||
LIB_A = libjansson.a
|
LIB_A = libjansson.a
|
||||||
|
|
||||||
include ../../Makefile.host
|
include ../../../Makefile.host
|
|
@ -16,7 +16,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <jansson_config.h> /* for JSON_INLINE */
|
#include "jansson_config.h" /* for JSON_INLINE */
|
||||||
#include "jansson_private.h" /* for container_of() */
|
#include "jansson_private.h" /* for container_of() */
|
||||||
#include "hashtable.h"
|
#include "hashtable.h"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include <jansson.h>
|
#include "jansson.h"
|
||||||
#include "jansson_private.h"
|
#include "jansson_private.h"
|
||||||
|
|
||||||
json_t *json_path_get(const json_t *json, const char *path) {
|
json_t *json_path_get(const json_t *json, const char *path) {
|
|
@ -21,7 +21,7 @@ PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
|
||||||
|
|
||||||
default: $(PLAT)
|
default: $(PLAT)
|
||||||
|
|
||||||
include ../../Makefile.host
|
include ../../../Makefile.host
|
||||||
|
|
||||||
# Convenience targets for popular platforms
|
# Convenience targets for popular platforms
|
||||||
ALL= all
|
ALL= all
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue