X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/e98572a1e2dde603f31cc06f330c6abd295139de..acd7ccdbc9b98f2e10df25e7cf2a6d17824f1b7e:/client/mifarehost.c?ds=sidebyside diff --git a/client/mifarehost.c b/client/mifarehost.c index 830b61cd..dc3b988a 100644 --- a/client/mifarehost.c +++ b/client/mifarehost.c @@ -634,19 +634,25 @@ int mfTraceDecode(uint8_t *data_src, int len, bool wantSaveToEmlFile) { int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len){ /* uint32_t nt; // tag challenge + uint32_t nr_enc; // encrypted reader challenge uint32_t ar_enc; // encrypted reader response uint32_t at_enc; // encrypted tag response */ - if (traceCrypto1) { - crypto1_destroy(traceCrypto1); - } + + struct Crypto1State *pcs = NULL; + ks2 = ar_enc ^ prng_successor(nt, 64); ks3 = at_enc ^ prng_successor(nt, 96); - traceCrypto1 = lfsr_recovery64(ks2, ks3); - - mf_crypto1_decrypt(traceCrypto1, data, len, 0); - + + PrintAndLog("Decrypting data with:"); + PrintAndLog(" nt: %08x",nt); + PrintAndLog(" ar_enc: %08x",ar_enc); + PrintAndLog(" at_enc: %08x",at_enc); + PrintAndLog("\nEncrypted data: [%s]", sprint_hex(data,len) ); + + pcs = lfsr_recovery64(ks2, ks3); + mf_crypto1_decrypt(pcs, data, len, FALSE); PrintAndLog("Decrypted data: [%s]", sprint_hex(data,len) ); - crypto1_destroy(traceCrypto1); + crypto1_destroy(pcs); return 0; }