mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-23 14:45:37 -07:00
fix 2tdea/d40 authentication
This commit is contained in:
parent
1699d8a90e
commit
6a6ec86791
2 changed files with 14 additions and 3 deletions
|
@ -4986,7 +4986,7 @@ static int CmdHF14ADesChangeKey(const char *Cmd) {
|
|||
PrintAndLogEx(INFO, _CYAN_("Changing PICC key"));
|
||||
PrintAndLogEx(INFO, "auth key %d: %s [%d] %s", dctx.keyNum, CLIGetOptionListStr(DesfireAlgoOpts, dctx.keyType), desfire_get_key_length(dctx.keyType), sprint_hex(dctx.key, desfire_get_key_length(dctx.keyType)));
|
||||
PrintAndLogEx(INFO, "changing key number " _YELLOW_("0x%02x") " (%d)", newkeynum, newkeynum);
|
||||
PrintAndLogEx(INFO, "old key: %s [%d] %s", CLIGetOptionListStr(DesfireAlgoOpts, newkeytype), desfire_get_key_length(oldkeytype), sprint_hex(oldkey, desfire_get_key_length(oldkeytype)));
|
||||
PrintAndLogEx(INFO, "old key: %s [%d] %s", CLIGetOptionListStr(DesfireAlgoOpts, oldkeytype), desfire_get_key_length(oldkeytype), sprint_hex(oldkey, desfire_get_key_length(oldkeytype)));
|
||||
PrintAndLogEx(INFO, "new key: %s [%d] %s", CLIGetOptionListStr(DesfireAlgoOpts, newkeytype), desfire_get_key_length(newkeytype), sprint_hex(newkey, desfire_get_key_length(newkeytype)));
|
||||
if (newkeyver < 0x100 || newkeytype == T_AES)
|
||||
PrintAndLogEx(INFO, "new key version: 0x%02x", newkeyver & 0x00);
|
||||
|
|
|
@ -764,7 +764,15 @@ int DesfireAuthenticate(DesfireContext *dctx, DesfireSecureChannel secureChannel
|
|||
des_decrypt(encRndB, rotRndB, key->data);
|
||||
memcpy(both + rndlen, encRndB, rndlen);
|
||||
} else if (dctx->keyType == T_3DES) {
|
||||
//TODO
|
||||
des3_decrypt(encRndA, RndA, key->data, 2);
|
||||
memcpy(both, encRndA, rndlen);
|
||||
|
||||
for (uint32_t x = 0; x < rndlen; x++) {
|
||||
rotRndB[x] = rotRndB[x] ^ encRndA[x];
|
||||
}
|
||||
|
||||
des3_decrypt(encRndB, rotRndB, key->data, 2);
|
||||
memcpy(both + rndlen, encRndB, rndlen);
|
||||
}
|
||||
} else if (secureChannel == DACEV1 && dctx->keyType != T_AES) {
|
||||
if (dctx->keyType == T_DES) {
|
||||
|
@ -857,6 +865,9 @@ int DesfireAuthenticate(DesfireContext *dctx, DesfireSecureChannel secureChannel
|
|||
if (secureChannel == DACEV1)
|
||||
des_decrypt_cbc(encRndA, encRndA, rndlen, key->data, IV);
|
||||
} else if (dctx->keyType == T_3DES)
|
||||
if (secureChannel == DACd40)
|
||||
des3_decrypt(encRndA, encRndA, key->data, 2);
|
||||
else
|
||||
tdes_nxp_receive(encRndA, encRndA, rndlen, key->data, IV, 2);
|
||||
else if (dctx->keyType == T_3K3DES)
|
||||
tdes_nxp_receive(encRndA, encRndA, rndlen, key->data, IV, 3);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue