mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-22 14:23:50 -07:00
command header via array
This commit is contained in:
parent
e93291e61d
commit
34a5d15bfc
2 changed files with 20 additions and 5 deletions
|
@ -52,6 +52,7 @@ AllowedChannelModesS AllowedChannelModes[] = {
|
||||||
|
|
||||||
{MFDES_GET_UID, DACd40, DCCNative, DCMEncrypted},
|
{MFDES_GET_UID, DACd40, DCCNative, DCMEncrypted},
|
||||||
{MFDES_CHANGE_KEY_SETTINGS, DACd40, DCCNative, DCMEncrypted},
|
{MFDES_CHANGE_KEY_SETTINGS, DACd40, DCCNative, DCMEncrypted},
|
||||||
|
{MFDES_CHANGE_FILE_SETTINGS, DACd40, DCCNative, DCMEncrypted},
|
||||||
{MFDES_READ_DATA, DACd40, DCCNative, DCMEncrypted},
|
{MFDES_READ_DATA, DACd40, DCCNative, DCMEncrypted},
|
||||||
{MFDES_WRITE_DATA, DACd40, DCCNative, DCMEncrypted},
|
{MFDES_WRITE_DATA, DACd40, DCCNative, DCMEncrypted},
|
||||||
|
|
||||||
|
@ -73,17 +74,26 @@ AllowedChannelModesS AllowedChannelModes[] = {
|
||||||
|
|
||||||
{MFDES_GET_UID, DACEV1, DCCNative, DCMEncrypted},
|
{MFDES_GET_UID, DACEV1, DCCNative, DCMEncrypted},
|
||||||
{MFDES_CHANGE_KEY_SETTINGS, DACEV1, DCCNative, DCMEncrypted},
|
{MFDES_CHANGE_KEY_SETTINGS, DACEV1, DCCNative, DCMEncrypted},
|
||||||
|
{MFDES_CHANGE_FILE_SETTINGS, DACEV1, DCCNative, DCMEncrypted},
|
||||||
|
|
||||||
{MFDES_CHANGE_KEY, DACEV1, DCCNative, DCMEncryptedPlain},
|
{MFDES_CHANGE_KEY, DACEV1, DCCNative, DCMEncryptedPlain},
|
||||||
{MFDES_CHANGE_KEY_EV2, DACEV1, DCCNative, DCMEncryptedPlain},
|
{MFDES_CHANGE_KEY_EV2, DACEV1, DCCNative, DCMEncryptedPlain},
|
||||||
};
|
};
|
||||||
|
|
||||||
static uint8_t DesfireGetCmdHeaderLen(uint8_t cmd) {
|
#define CMD_HEADER_LEN_ALL 0xffff
|
||||||
if (cmd == MFDES_CHANGE_KEY || cmd == MFDES_CHANGE_CONFIGURATION)
|
CmdHeaderLengthsS CmdHeaderLengths[] = {
|
||||||
return 1;
|
{MFDES_CREATE_APPLICATION, CMD_HEADER_LEN_ALL},
|
||||||
|
{MFDES_DELETE_APPLICATION, CMD_HEADER_LEN_ALL},
|
||||||
|
{MFDES_CHANGE_KEY, 1},
|
||||||
|
{MFDES_CHANGE_KEY_EV2, 2},
|
||||||
|
{MFDES_CHANGE_CONFIGURATION, 1},
|
||||||
|
{MFDES_CHANGE_FILE_SETTINGS, 1},
|
||||||
|
};
|
||||||
|
|
||||||
if (cmd == MFDES_CHANGE_KEY_EV2)
|
static uint8_t DesfireGetCmdHeaderLen(uint8_t cmd) {
|
||||||
return 2;
|
for (int i = 0; i < ARRAY_LENGTH(CmdHeaderLengths); i++)
|
||||||
|
if (CmdHeaderLengths[i].cmd == cmd)
|
||||||
|
return CmdHeaderLengths[i].len;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,11 @@ typedef struct {
|
||||||
DesfireCommunicationMode commMode;
|
DesfireCommunicationMode commMode;
|
||||||
} AllowedChannelModesS;
|
} AllowedChannelModesS;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t cmd;
|
||||||
|
uint32_t len;
|
||||||
|
} CmdHeaderLengthsS;
|
||||||
|
|
||||||
void DesfireSecureChannelEncode(DesfireContext *ctx, uint8_t cmd, uint8_t *srcdata, size_t srcdatalen, uint8_t *dstdata, size_t *dstdatalen);
|
void DesfireSecureChannelEncode(DesfireContext *ctx, uint8_t cmd, uint8_t *srcdata, size_t srcdatalen, uint8_t *dstdata, size_t *dstdatalen);
|
||||||
void DesfireSecureChannelDecode(DesfireContext *ctx, uint8_t *srcdata, size_t srcdatalen, uint8_t respcode, uint8_t *dstdata, size_t *dstdatalen);
|
void DesfireSecureChannelDecode(DesfireContext *ctx, uint8_t *srcdata, size_t srcdatalen, uint8_t respcode, uint8_t *dstdata, size_t *dstdatalen);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue