X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/f53020e729d583f7975095ca7b4b467741d99edb..a126332a7b3c85274a9988f8a6994fba930b5f52:/armsrc/mifareutil.c

diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c
index c9ff8c64..7546919d 100644
--- a/armsrc/mifareutil.c
+++ b/armsrc/mifareutil.c
@@ -272,7 +272,7 @@ int mifare_ul_ev1_auth(uint8_t *keybytes, uint8_t *pack){
 	if (MF_DBGLEVEL >= MF_DBG_EXTENDED)
 		Dbprintf("EV1 Auth : %02x%02x%02x%02x",	key[0], key[1], key[2], key[3]);
 	len = mifare_sendcmd(0x1B, key, sizeof(key), resp, respPar, NULL);
-	//len = mifare_sendcmd_short_mfuev1auth(NULL, 0, 0x1B, key, resp, respPar, NULL);
+
 	if (len != 4) {
 		if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("Cmd Error: %02x %u", resp[0], len);
 		return 0;
@@ -501,22 +501,21 @@ int mifare_ultra_writeblock(uint8_t blockNo, uint8_t *blockData)
     }
     return 0;
 }
-
-int mifare_classic_halt(struct Crypto1State *pcs, uint32_t uid) 
-{
+int mifare_classic_halt_ex(struct Crypto1State *pcs) {
 	uint16_t len;	
-	uint8_t receivedAnswer[MAX_MIFARE_FRAME_SIZE];
-	uint8_t receivedAnswerPar[MAX_MIFARE_PARITY_SIZE];
+	uint8_t receivedAnswer[4];
+	uint8_t receivedAnswerPar[4];
 
 	len = mifare_sendcmd_short(pcs, pcs == NULL ? false:true, 0x50, 0x00, receivedAnswer, receivedAnswerPar, NULL);
 	if (len != 0) {
-		if (MF_DBGLEVEL >= MF_DBG_ERROR)
-			Dbprintf("halt error. response len: %x", len);  
+		if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("halt error. response len: %x", len);  
 		return 1;
 	}
-
 	return 0;
 }
+int mifare_classic_halt(struct Crypto1State *pcs, uint32_t uid) {
+	return mifare_classic_halt_ex(pcs);
+}
 
 int mifare_ultra_halt()
 {
@@ -556,8 +555,12 @@ uint8_t FirstBlockOfSector(uint8_t sectorNo)
 
 // work with emulator memory
 void emlSetMem(uint8_t *data, int blockNum, int blocksCount) {
+	emlSetMem_xt(data, blockNum, blocksCount, 16);
+}
+
+void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth) {
 	uint8_t* emCARD = BigBuf_get_EM_addr();
-	memcpy(emCARD + blockNum * 16, data, blocksCount * 16);
+	memcpy(emCARD + blockNum * blockBtWidth, data, blocksCount * blockBtWidth);
 }
 
 void emlGetMem(uint8_t *data, int blockNum, int blocksCount) {