From: iceman1001 Date: Thu, 10 Dec 2015 09:30:13 +0000 (+0100) Subject: ADD: @marshmellow42 's fixes to cmdlft55xx.c (save_restoreGB) X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/0c97a4562dfc38dbda89277434b077d084e21588 ADD: @marshmellow42 's fixes to cmdlft55xx.c (save_restoreGB) ADD: started with a skeleton method for printing hex and ascill. --- diff --git a/client/cmdlft55xx.c b/client/cmdlft55xx.c index 386ac608..de0ade28 100644 --- a/client/cmdlft55xx.c +++ b/client/cmdlft55xx.c @@ -384,18 +384,22 @@ bool DecodeT55xxBlock(){ ans = ASKDemod(cmdStr, FALSE, FALSE, 1); break; case DEMOD_PSK1: - // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise) + // skip first 16 samples to allow antenna to settle in (psk gets inverted occasionally otherwise) + save_restoreGB(1); CmdLtrim("160"); snprintf(cmdStr, sizeof(buf),"%d %d 6", bitRate[config.bitrate], config.inverted ); ans = PSKDemod(cmdStr, FALSE); + save_restoreGB(0); break; case DEMOD_PSK2: //inverted won't affect this case DEMOD_PSK3: //not fully implemented // skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise) + save_restoreGB(1); CmdLtrim("160"); snprintf(cmdStr, sizeof(buf),"%d 0 6", bitRate[config.bitrate] ); ans = PSKDemod(cmdStr, FALSE); psk1TOpsk2(DemodBuffer, DemodBufferLen); + save_restoreGB(1); break; case DEMOD_NRZ: snprintf(cmdStr, sizeof(buf),"%d %d 1", bitRate[config.bitrate], config.inverted ); @@ -1011,8 +1015,14 @@ int CmdT55xxInfo(const char *Cmd){ if (!DecodeT55xxBlock()) return 1; + // too little space to start with if ( DemodBufferLen < 32) return 1; + // + PrintAndLog("Offset+32 ==%d\n DemodLen == %d", config.offset + 32,DemodBufferLen ); + + + uint8_t si = config.offset; uint32_t bl0 = PackBits(si, 32, DemodBuffer); diff --git a/client/util.c b/client/util.c index 057be9ed..29914667 100644 --- a/client/util.c +++ b/client/util.c @@ -124,7 +124,12 @@ char *sprint_hex(const uint8_t *data, const size_t len) { char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) { // make sure we don't go beyond our char array memory - int max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks); + int max_len; + if (breaks==0) + max_len = ( len > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len; + else + max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks); + static char buf[MAX_BIN_BREAK_LENGTH]; // 3072 + end of line characters if broken at 8 bits //clear memory memset(buf, 0x00, sizeof(buf)); @@ -150,6 +155,12 @@ char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t brea char *sprint_bin(const uint8_t *data, const size_t len) { return sprint_bin_break(data, len, 0); } + +char *sprint_hex_ascii(const uint8_t *data, const size_t len) { + static char buf[1024]; + memset(buf, 0x00, 1024); + return buf; +} void num_to_bytes(uint64_t n, size_t len, uint8_t* dest) { while (len--) { diff --git a/client/util.h b/client/util.h index 5ba5eb6a..c57df5c2 100644 --- a/client/util.h +++ b/client/util.h @@ -40,6 +40,7 @@ void print_hex(const uint8_t * data, const size_t len); char * sprint_hex(const uint8_t * data, const size_t len); char * sprint_bin(const uint8_t * data, const size_t len); char * sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks); +char *sprint_hex_ascii(const uint8_t *data, const size_t len); void num_to_bytes(uint64_t n, size_t len, uint8_t* dest); uint64_t bytes_to_num(uint8_t* src, size_t len);