mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
Add 2k3 des iso support preparation
This commit is contained in:
parent
37aa19ad6c
commit
6afc8d39a4
1 changed files with 17 additions and 6 deletions
|
@ -213,8 +213,9 @@ typedef enum {
|
|||
typedef enum {
|
||||
MFDES_ALGO_DES = 1,
|
||||
MFDES_ALGO_3DES = 2,
|
||||
MFDES_ALGO_3K3DES = 3,
|
||||
MFDES_ALGO_AES = 4
|
||||
MFDES_ALGO_2K3DES = 3,
|
||||
MFDES_ALGO_3K3DES = 4,
|
||||
MFDES_ALGO_AES = 5
|
||||
} mifare_des_authalgo_t;
|
||||
|
||||
void MifareDES_Auth1(uint8_t *datain) {
|
||||
|
@ -273,9 +274,9 @@ void MifareDES_Auth1(uint8_t *datain) {
|
|||
LED_C_OFF();
|
||||
|
||||
if (payload->key == NULL) {
|
||||
if (payload->algo == MFDES_AUTH_DES) {
|
||||
if (payload->algo == MFDES_AUTH_DES) {
|
||||
memcpy(keybytes, PICC_MASTER_KEY8, 8);
|
||||
} else if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3DES) {
|
||||
} else if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3DES || payload->algo == MFDES_ALGO_2K3DES) {
|
||||
memcpy(keybytes, PICC_MASTER_KEY16, 16);
|
||||
} else if (payload->algo == MFDES_ALGO_3DES) {
|
||||
memcpy(keybytes, PICC_MASTER_KEY24, 24);
|
||||
|
@ -291,11 +292,11 @@ void MifareDES_Auth1(uint8_t *datain) {
|
|||
mbedtls_aes_init(&ctx);
|
||||
Desfire_aes_key_new(keybytes, key);
|
||||
} else if (payload->algo == MFDES_ALGO_3DES) {
|
||||
key->type = T_3DES;
|
||||
Desfire_3des_key_new_with_version(keybytes, key);
|
||||
} else if (payload->algo == MFDES_ALGO_DES) {
|
||||
key->type = T_DES;
|
||||
Desfire_des_key_new(keybytes, key);
|
||||
} else if (payload->algo == MFDES_ALGO_2K3DES) {
|
||||
Desfire_2k3des_key_new_with_version(keybytes, key);
|
||||
} else if (payload->algo == MFDES_ALGO_3K3DES) {
|
||||
Desfire_3k3des_key_new_with_version(keybytes, key);
|
||||
}
|
||||
|
@ -372,6 +373,8 @@ void MifareDES_Auth1(uint8_t *datain) {
|
|||
tdes_dec(&RndB, &encRndB, key->data);
|
||||
else if (payload->algo == MFDES_ALGO_DES)
|
||||
des_dec(&RndB, &encRndB, key->data);
|
||||
else if (payload->algo == MFDES_ALGO_2K3DES)
|
||||
tdes_2key_dec(&RndB, &encRndB, 8, key->data, IV);
|
||||
else if (payload->algo == MFDES_ALGO_3K3DES)
|
||||
tdes_3key_dec(&RndB, &encRndB, 16, key->data, IV);
|
||||
|
||||
|
@ -389,6 +392,9 @@ void MifareDES_Auth1(uint8_t *datain) {
|
|||
} else if (payload->algo == MFDES_ALGO_DES) {
|
||||
des_dec(&encRndA, &RndA, key->data);
|
||||
memcpy(both, encRndA, 8);
|
||||
} else if (payload->algo == MFDES_ALGO_2K3DES) {
|
||||
tdes_2key_dec(&encRndA, &RndA, 8, key->data, IV);
|
||||
memcpy(both, encRndA, 8);
|
||||
} else if (payload->algo == MFDES_ALGO_3K3DES) {
|
||||
tdes_3key_dec(&encRndA, &RndA, 16, key->data, IV);
|
||||
memcpy(both, encRndA, 16);
|
||||
|
@ -405,6 +411,9 @@ void MifareDES_Auth1(uint8_t *datain) {
|
|||
} else if (payload->algo == MFDES_ALGO_DES) {
|
||||
des_dec(&encRndB, &rotRndB, key->data);
|
||||
memcpy(both + 8, encRndB, 8);
|
||||
} else if (payload->algo == MFDES_ALGO_2K3DES) {
|
||||
tdes_2key_dec(&encRndB, &rotRndB, 8, key->data, IV);
|
||||
memcpy(both + 8, encRndB, 8);
|
||||
} else if (payload->algo == MFDES_ALGO_3K3DES) {
|
||||
tdes_3key_dec(&encRndB, &rotRndB, 16, key->data, IV);
|
||||
memcpy(both + 16, encRndB, 16);
|
||||
|
@ -485,6 +494,8 @@ void MifareDES_Auth1(uint8_t *datain) {
|
|||
tdes_dec(&encRndA, &encRndA, key->data);
|
||||
else if (payload->algo == MFDES_ALGO_DES)
|
||||
des_dec(&encRndA, &encRndA, key->data);
|
||||
else if (payload->algo == MFDES_ALGO_2K3DES)
|
||||
tdes_2key_dec(&encRndA, &encRndA, 8, key->data, IV);
|
||||
else if (payload->algo == MFDES_ALGO_3K3DES)
|
||||
tdes_3key_dec(&encRndA, &encRndA, 16, key->data, IV);
|
||||
} else if (payload->mode == MFDES_AUTH_AES) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue