This commit is contained in:
merlokk 2018-10-26 16:52:02 +03:00
commit dc78d947c9
3 changed files with 6 additions and 6 deletions

View file

@ -88,14 +88,14 @@ int MFPCommitPerso(bool activateField, bool leaveSignalON, uint8_t *dataout, int
int MFPReadBlock(mf4Session *session, bool plain, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) { int MFPReadBlock(mf4Session *session, bool plain, uint8_t blockNum, uint8_t blockCount, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, uint8_t *mac) {
uint8_t rcmd[4 + 8] = {(plain?(0x37):(0x33)), blockNum, 0x00, blockCount}; uint8_t rcmd[4 + 8] = {(plain?(0x37):(0x33)), blockNum, 0x00, blockCount};
if (!plain && session) if (!plain && session)
CalulateMAC(session, rcmd, 4, &rcmd[4], VerboseMode); CalculateMAC(session, rcmd, 4, &rcmd[4], VerboseMode);
int res = intExchangeRAW14aPlus(rcmd, plain?4:sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); int res = intExchangeRAW14aPlus(rcmd, plain?4:sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen);
if(res) if(res)
return res; return res;
if(session && mac) if(session && mac)
CalulateMAC(session, dataout, *dataoutlen, mac, VerboseMode); CalculateMAC(session, dataout, *dataoutlen, mac, VerboseMode);
return 0; return 0;
} }
@ -104,14 +104,14 @@ int MFPWriteBlock(mf4Session *session, uint8_t blockNum, uint8_t *data, bool act
uint8_t rcmd[1 + 2 + 16 + 8] = {0xA3, blockNum, 0x00}; uint8_t rcmd[1 + 2 + 16 + 8] = {0xA3, blockNum, 0x00};
memmove(&rcmd[3], data, 16); memmove(&rcmd[3], data, 16);
if (session) if (session)
CalulateMAC(session, rcmd, 19, &rcmd[19], VerboseMode); CalculateMAC(session, rcmd, 19, &rcmd[19], VerboseMode);
int res = intExchangeRAW14aPlus(rcmd, sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen); int res = intExchangeRAW14aPlus(rcmd, sizeof(rcmd), activateField, leaveSignalON, dataout, maxdataoutlen, dataoutlen);
if(res) if(res)
return res; return res;
if(session && mac) if(session && mac)
CalulateMAC(session, dataout, *dataoutlen, mac, VerboseMode); CalculateMAC(session, dataout, *dataoutlen, mac, VerboseMode);
return 0; return 0;
} }

View file

@ -16,7 +16,7 @@
#include "ui.h" #include "ui.h"
#include "polarssl/libpcrypto.h" #include "polarssl/libpcrypto.h"
int CalulateMAC(mf4Session *session, uint8_t *data, int datalen, uint8_t *mac, bool verbose) { int CalculateMAC(mf4Session *session, uint8_t *data, int datalen, uint8_t *mac, bool verbose) {
if (!session || !session->Authenticated || !mac || !data || !datalen) if (!session || !session->Authenticated || !mac || !data || !datalen)
return 1; return 1;

View file

@ -24,7 +24,7 @@ typedef struct {
}mf4Session; }mf4Session;
extern int CalulateMAC(mf4Session *session, uint8_t *data, int datalen, uint8_t *mac, bool verbose); extern int CalculateMAC(mf4Session *session, uint8_t *data, int datalen, uint8_t *mac, bool verbose);
extern int MifareAuth4(mf4Session *session, uint8_t *keyn, uint8_t *key, bool activateField, bool leaveSignalON, bool verbose); extern int MifareAuth4(mf4Session *session, uint8_t *keyn, uint8_t *key, bool activateField, bool leaveSignalON, bool verbose);
extern uint8_t mfNumBlocksPerSector(uint8_t sectorNo); extern uint8_t mfNumBlocksPerSector(uint8_t sectorNo);