X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/a3bef9863b9e06a820c7559b9caffeaaa1bb575b..refs/pull/910/head:/client/cmdhf14b.c

diff --git a/client/cmdhf14b.c b/client/cmdhf14b.c
index 4685f3f5..2ad35251 100644
--- a/client/cmdhf14b.c
+++ b/client/cmdhf14b.c
@@ -121,7 +121,7 @@ int HF14BCmdRaw(bool reply, bool *crc, bool power, uint8_t *data, uint8_t *datal
 	}
 
 	*datalen = ret;
-	
+
 	if (ret < 2) return 0;
 
 	memcpy(data, resp.d.asBytes, *datalen);
@@ -237,8 +237,11 @@ static int CmdHF14BCmdRaw (const char *Cmd) {
 
 		if (HF14BCmdRaw(true, &crc2, true, cmd2, &cmdLen, false) == 0) return switch_off_field_14b();
 
-		if (SRx && (cmdLen != 3 || !crc2) ) return switch_off_field_14b();
-		else if (cmd2[0] != 0x50 || cmdLen != 14 || !crc2) return switch_off_field_14b();
+		if (SRx) {
+			if (cmdLen != 3 || !crc2) return switch_off_field_14b();
+		} else {
+			if (cmd2[0] != 0x50 || cmdLen != 14 || !crc2) return switch_off_field_14b();
+		}
 
 		uint8_t chipID = 0;
 		if (SRx) {
@@ -263,7 +266,9 @@ static int CmdHF14BCmdRaw (const char *Cmd) {
 		if (cmdLen != 3 || !crc2) return switch_off_field_14b();
 		if (SRx && cmd2[0] != chipID) return switch_off_field_14b();
 	}
+
 	return HF14BCmdRaw(reply, &crc, power, data, &datalen, true);
+
 }
 
 
@@ -524,22 +529,21 @@ static bool HF14B_ST_Info(bool verbose) {
 
 
 // test for other 14b type tags (mimic another reader - don't have tags to identify)
-static bool HF14B_Other_Reader(bool verbose) {
-	uint8_t data[4];
+static bool HF14B_Other_Reader(uint8_t *data, bool verbose) {
 	uint8_t datalen;
-
 	bool crc = true;
-	datalen = 4;
+
 	//std read cmd
 	data[0] = 0x00;
 	data[1] = 0x0b;
 	data[2] = 0x3f;
 	data[3] = 0x80;
+	datalen = 4;
 
 	if (HF14BCmdRaw(true, &crc, true, data, &datalen, false) != 0) {
 		if (datalen > 2 || !crc) {
 			PrintAndLog ("\n14443-3b tag found:");
-			PrintAndLog ("Unknown tag type answered to a 0x000b3f80 command ans:");
+			PrintAndLog ("Unknown tag type answered to a 0x000b3f80 command:");
 			PrintAndLog ("%s", sprint_hex(data, datalen));
 			switch_off_field_14b();
 			return true;
@@ -553,7 +557,7 @@ static bool HF14B_Other_Reader(bool verbose) {
 	if (HF14BCmdRaw(true, &crc, true, data, &datalen, false) != 0) {
 		if (datalen > 0) {
 			PrintAndLog ("\n14443-3b tag found:");
-			PrintAndLog ("Unknown tag type answered to a 0x0A command ans:");
+			PrintAndLog ("Unknown tag type answered to a 0x0A command:");
 			PrintAndLog ("%s", sprint_hex(data, datalen));
 			switch_off_field_14b();
 			return true;
@@ -567,7 +571,7 @@ static bool HF14B_Other_Reader(bool verbose) {
 	if (HF14BCmdRaw(true, &crc, true, data, &datalen, false) != 0) {
 		if (datalen > 0) {
 			PrintAndLog ("\n14443-3b tag found:");
-			PrintAndLog ("Unknown tag type answered to a 0x0C command ans:");
+			PrintAndLog ("Unknown tag type answered to a 0x0C command:");
 			PrintAndLog ("%s", sprint_hex(data, datalen));
 			switch_off_field_14b();
 			return true;
@@ -601,7 +605,7 @@ int infoHF14B(bool verbose) {
 
 	// try unknown 14b read commands (to be identified later)
 	//   could be read of calypso, CEPAS, moneo, or pico pass.
-	if (HF14B_Other_Reader(verbose)) return 1;
+	if (HF14B_Other_Reader(data, verbose)) return 1;
 
 	if (verbose) PrintAndLog("no 14443B tag found");
 	return 0;
@@ -631,7 +635,7 @@ int readHF14B(bool verbose){
 
 	// try unknown 14b read commands (to be identified later)
 	//   could be read of calypso, CEPAS, moneo, or pico pass.
-	if (HF14B_Other_Reader(verbose)) return 1;
+	if (HF14B_Other_Reader(data, verbose)) return 1;
 
 	if (verbose) PrintAndLog("no 14443B tag found");
 	return 0;
@@ -674,7 +678,6 @@ int CmdSriWrite(const char *Cmd) {
 	uint8_t blockno = -1;
 	uint8_t data[4] = {0x00};
 	bool isSrix4k = true;
-	char str[20];
 
 	if (strlen(Cmd) < 1 || cmdp == 'h' || cmdp == 'H') {
 		PrintAndLog("Usage:  hf 14b write <1|2> <BLOCK> <DATA>");
@@ -720,7 +723,8 @@ int CmdSriWrite(const char *Cmd) {
 	else
 		PrintAndLog("[%s] Write block %02X [ %s ]", (isSrix4k)?"SRIX4K":"SRI512", blockno, sprint_hex(data, 4));
 
-	sprintf(str, "-c 09 %02x %02x%02x%02x%02x", blockno, data[0], data[1], data[2], data[3]);
+	char str[22];
+	sprintf(str, "-ss -c 09 %02x %02x%02x%02x%02x", blockno, data[0], data[1], data[2], data[3]);
 
 	CmdHF14BCmdRaw(str);
 	return 0;