From: iceman1001 <iceman@iuse.se>
Date: Mon, 15 Feb 2016 21:05:26 +0000 (+0100)
Subject: ADD: a print_hex_break function,
X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/a182a680b0f1f434b6fab67e1eba4a3db3b8a141

ADD: a print_hex_break function,
CHG: "hf legic decode" looks better.
---

diff --git a/client/cmdhflegic.c b/client/cmdhflegic.c
index 0ef74534..3a520f6a 100644
--- a/client/cmdhflegic.c
+++ b/client/cmdhflegic.c
@@ -165,13 +165,12 @@ int CmdLegicDecode(const char *Cmd) {
     
 		if ( hasWRC ) {
 			PrintAndLog("WRC protected area:   (I %d | K %d| WRC %d)", i, k, wrc);
-			
-			for ( k=i; k < wrc; k++)
-				data_buf[k] ^= crc;
-			
-			//is WRC / 8? 
-			
-			// for ( k=i; k < wrc; k += 8)
+
+			// de-xor?  if not zero, assume it needs xoring.
+			if ( data_buf[i] > 0) {
+				for ( k=i; k < wrc; ++k)
+					data_buf[k] ^= crc;
+			}
 			print_hex_break( data_buf+i, wrc, 16);
 			
 			i += wrc;
@@ -182,34 +181,32 @@ int CmdLegicDecode(const char *Cmd) {
 
 			// de-xor?  if not zero, assume it needs xoring.
 			if ( data_buf[i] > 0) {
-				for (k=i; k < wrp_len; k++)
+				for (k=i; k < wrp_len; ++k)
 					data_buf[k] ^= crc;
 			}
 			
-			// for (k=i; k < wrp_len; k += 16) {
-				
 			print_hex_break( data_buf+i, wrp_len, 16);
-			// }
 			
 			i += wrp_len;
 			
+			// does this one work?
 			if( wrp_len == 8 )
 				PrintAndLog("Card ID: %2X%02X%02X", data_buf[i-4]^crc, data_buf[i-3]^crc, data_buf[i-2]^crc);			
 		}
     
-		PrintAndLog("Remaining segment payload:");
+		PrintAndLog("Remaining segment payload:  (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len);
 		
 		if ( data_buf[i] > 0 ) {
-			for ( k=i; k < remain_seg_payload_len; k++)
+			for ( k=i; k < remain_seg_payload_len; ++k)
 				data_buf[k] ^= crc;
 		}
 		
-		// for ( k=i; k < remain_seg_payload_len; k++)
 		print_hex_break( data_buf+i, remain_seg_payload_len, 16);
     
 		i += remain_seg_payload_len;
 		
 		printf("\n-------------------------------------\n");
+
 		// end with last segment
 		if (segment_flag & 0x8) return 0;
 
diff --git a/client/util.c b/client/util.c
index 2bc5b2ba..04daffc2 100644
--- a/client/util.c
+++ b/client/util.c
@@ -111,7 +111,7 @@ void print_hex_break(const uint8_t *data, const size_t len, uint8_t breaks) {
 		
 		// check if a line break is needed
 		if ( (breaks > 0) && (i > 0) && !(i % breaks) )
-			printf("\n");
+			printf("(%d %d)\n", i , breaks);
 	}
 	printf("\n");
 }