mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-09-22 08:16:16 +08:00
channel changes
This commit is contained in:
parent
15d97112aa
commit
660647ab5a
|
@ -171,19 +171,21 @@ static void DesfireSecureChannelEncodeEV1(DesfireContext *ctx, uint8_t cmd, uint
|
||||||
*dstdatalen = srcdatalen + DesfireGetMACLength(ctx);
|
*dstdatalen = srcdatalen + DesfireGetMACLength(ctx);
|
||||||
}
|
}
|
||||||
} else if (ctx->commMode == DCMEncrypted) {
|
} else if (ctx->commMode == DCMEncrypted) {
|
||||||
rlen = padded_data_length(srcdatalen + 4, desfire_get_key_block_length(ctx->keyType));
|
rlen = padded_data_length(srcdatalen + 4 - hdrlen, desfire_get_key_block_length(ctx->keyType));
|
||||||
data[0] = cmd;
|
data[0] = cmd;
|
||||||
memcpy(&data[1], srcdata, srcdatalen);
|
memcpy(&data[1], srcdata, srcdatalen);
|
||||||
desfire_crc32_append(data, srcdatalen + 1);
|
desfire_crc32_append(data, srcdatalen + 1);
|
||||||
|
|
||||||
DesfireCryptoEncDec(ctx, true, &data[1], rlen, dstdata, true);
|
PrintAndLogEx(INFO, "plain [%d]: %s", rlen, sprint_hex(&data[1 + hdrlen], rlen));
|
||||||
|
memcpy(dstdata, srcdata, hdrlen);
|
||||||
|
DesfireCryptoEncDec(ctx, true, &data[1 + hdrlen], rlen, &dstdata[hdrlen], true);
|
||||||
|
|
||||||
*dstdatalen = rlen;
|
*dstdatalen = hdrlen + rlen;
|
||||||
} else if (ctx->commMode == DCMEncryptedPlain) {
|
} else if (ctx->commMode == DCMEncryptedPlain) {
|
||||||
if (srcdatalen == 0 || srcdatalen <= hdrlen)
|
if (srcdatalen == 0 || srcdatalen <= hdrlen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
memcpy(&dstdata[0], srcdata, hdrlen);
|
memcpy(dstdata, srcdata, hdrlen);
|
||||||
memcpy(data, &srcdata[hdrlen], srcdatalen);
|
memcpy(data, &srcdata[hdrlen], srcdatalen);
|
||||||
rlen = padded_data_length(srcdatalen - hdrlen, desfire_get_key_block_length(ctx->keyType));
|
rlen = padded_data_length(srcdatalen - hdrlen, desfire_get_key_block_length(ctx->keyType));
|
||||||
DesfireCryptoEncDec(ctx, true, data, rlen, &dstdata[hdrlen], true);
|
DesfireCryptoEncDec(ctx, true, data, rlen, &dstdata[hdrlen], true);
|
||||||
|
|
Loading…
Reference in a new issue