int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len){\r
/*\r
uint32_t nt; // tag challenge\r
+ uint32_t nr_enc; // encrypted reader challenge\r
uint32_t ar_enc; // encrypted reader response\r
uint32_t at_enc; // encrypted tag response\r
*/\r
- if (traceCrypto1) {\r
- crypto1_destroy(traceCrypto1);\r
- }\r
+\r
+ struct Crypto1State *pcs = NULL;\r
+ \r
ks2 = ar_enc ^ prng_successor(nt, 64);\r
ks3 = at_enc ^ prng_successor(nt, 96);\r
- traceCrypto1 = lfsr_recovery64(ks2, ks3);\r
-\r
- mf_crypto1_decrypt(traceCrypto1, data, len, 0);\r
-\r
+ \r
+ PrintAndLog("Decrypting data with:");\r
+ PrintAndLog(" nt: %08x",nt);\r
+ PrintAndLog(" ar_enc: %08x",ar_enc);\r
+ PrintAndLog(" at_enc: %08x",at_enc);\r
+ PrintAndLog("\nEncrypted data: [%s]", sprint_hex(data,len) );\r
+\r
+ pcs = lfsr_recovery64(ks2, ks3);\r
+ mf_crypto1_decrypt(pcs, data, len, FALSE);\r
PrintAndLog("Decrypted data: [%s]", sprint_hex(data,len) );\r
- crypto1_destroy(traceCrypto1);\r
+ crypto1_destroy(pcs);\r
return 0;\r
}\r