From 4f131b53ea7e9a66f5c7269fc35b11f8038cbf3e Mon Sep 17 00:00:00 2001
From: merlokk <olegmsn@gmail.com>
Date: Fri, 9 Feb 2018 17:37:31 +0200
Subject: [PATCH 1/1] added cmdhflist file

---
 client/Makefile    |  1 +
 client/cmdhf.c     |  7 +++++++
 client/cmdhflist.c | 17 +++++++++++++++++
 client/cmdhflist.h | 11 +++++++++++
 common/protocols.h |  9 +++++----
 5 files changed, 41 insertions(+), 4 deletions(-)
 create mode 100644 client/cmdhflist.c
 create mode 100644 client/cmdhflist.h

diff --git a/client/Makefile b/client/Makefile
index bf642803..bf3c8d36 100644
--- a/client/Makefile
+++ b/client/Makefile
@@ -128,6 +128,7 @@ CMDSRCS = 	crapto1/crapto1.c\
 			emv/test/cda_test.c\
 			emv/cmdemv.c\
 			cmdhf.c \
+			cmdhflist.c \
 			cmdhf14a.c \
 			cmdhf14b.c \
 			cmdhf15.c \
diff --git a/client/cmdhf.c b/client/cmdhf.c
index 7a2f3252..34d95c50 100644
--- a/client/cmdhf.c
+++ b/client/cmdhf.c
@@ -1,5 +1,6 @@
 //-----------------------------------------------------------------------------
 // Copyright (C) 2010 iZsh <izsh at fail0verflow.com>
+// Merlok - 2017
 //
 // This code is licensed to you under the terms of the GNU GPL, version 2 or,
 // at your option, any later version. See the LICENSE.txt file for the text of
@@ -31,6 +32,7 @@
 #include "cmdhftopaz.h"
 #include "protocols.h"
 #include "emv/cmdemv.h"
+#include "cmdhflist.h"
 
 static int CmdHelp(const char *Cmd);
 
@@ -466,6 +468,7 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
 			case TOPAZ:
 				crcStatus = iso14443B_CRC_check(isResponse, frame, data_len); 
 				break;
+			case PROTO_MIFARE:
 			case ISO_14443A:
 				crcStatus = iso14443A_CRC_check(isResponse, frame, data_len);
 				break;
@@ -518,6 +521,7 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
 	{
 		switch(protocol) {
 			case ICLASS:		annotateIclass(explanation,sizeof(explanation),frame,data_len); break;
+			case PROTO_MIFARE:
 			case ISO_14443A:	annotateIso14443a(explanation,sizeof(explanation),frame,data_len); break;
 			case ISO_14443B:	annotateIso14443b(explanation,sizeof(explanation),frame,data_len); break;
 			case TOPAZ:			annotateTopaz(explanation,sizeof(explanation),frame,data_len); break;
@@ -583,6 +587,8 @@ int CmdHFList(const char *Cmd)
 	if(!errors) {
 		if(strcmp(type, "iclass") == 0)	{
 			protocol = ICLASS;
+		} else if(strcmp(type, "mf") == 0) {
+			protocol = PROTO_MIFARE;
 		} else if(strcmp(type, "14a") == 0) {
 			protocol = ISO_14443A;
 		} else if(strcmp(type, "14b") == 0)	{
@@ -604,6 +610,7 @@ int CmdHFList(const char *Cmd)
 		PrintAndLog("Supported <protocol> values:");
 		PrintAndLog("    raw    - just show raw data without annotations");
 		PrintAndLog("    14a    - interpret data as iso14443a communications");
+		PrintAndLog("    mf     - interpret data as iso14443a communications and decrypt crypto1 stream");
 		PrintAndLog("    14b    - interpret data as iso14443b communications");
 		PrintAndLog("    iclass - interpret data as iclass communications");
 		PrintAndLog("    topaz  - interpret data as topaz communications");
diff --git a/client/cmdhflist.c b/client/cmdhflist.c
new file mode 100644
index 00000000..86562e4c
--- /dev/null
+++ b/client/cmdhflist.c
@@ -0,0 +1,17 @@
+//-----------------------------------------------------------------------------
+// Copyright (C) Merlok - 2017
+//
+// This code is licensed to you under the terms of the GNU GPL, version 2 or,
+// at your option, any later version. See the LICENSE.txt file for the text of
+// the license.
+//-----------------------------------------------------------------------------
+// Command: hf mf list. It shows data from arm buffer.
+//-----------------------------------------------------------------------------
+
+#include "cmdhflist.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+
diff --git a/client/cmdhflist.h b/client/cmdhflist.h
new file mode 100644
index 00000000..138e5590
--- /dev/null
+++ b/client/cmdhflist.h
@@ -0,0 +1,11 @@
+//-----------------------------------------------------------------------------
+// Copyright (C) Merlok - 2017
+//
+// This code is licensed to you under the terms of the GNU GPL, version 2 or,
+// at your option, any later version. See the LICENSE.txt file for the text of
+// the license.
+//-----------------------------------------------------------------------------
+// Command: hf mf list. It shows data from arm buffer.
+//-----------------------------------------------------------------------------
+
+
diff --git a/common/protocols.h b/common/protocols.h
index 31252ad3..57e6011f 100644
--- a/common/protocols.h
+++ b/common/protocols.h
@@ -200,10 +200,11 @@ NXP/Philips CUSTOM COMMANDS
 #define TOPAZ_WRITE_NE8					0x1B	// Write-no-erase (eight bytes)
 
 
-#define ISO_14443A	0
-#define ICLASS		1
-#define ISO_14443B	2
-#define TOPAZ		3
+#define ISO_14443A		0
+#define ICLASS			1
+#define ISO_14443B		2
+#define TOPAZ			3
+#define PROTO_MIFARE	4
 
 //-- Picopass fuses
 #define FUSE_FPERS   0x80
-- 
2.39.5