p4->even = 0; p4->odd = 0;\r
statelists[0].len = p3 - statelists[0].head.slhead;\r
statelists[1].len = p4 - statelists[1].head.slhead;\r
p4->even = 0; p4->odd = 0;\r
statelists[0].len = p3 - statelists[0].head.slhead;\r
statelists[1].len = p4 - statelists[1].head.slhead;\r
\r
// the statelists now contain possible keys. The key we are searching for must be in the\r
// intersection of both lists. Create the intersection:\r
\r
// the statelists now contain possible keys. The key we are searching for must be in the\r
// intersection of both lists. Create the intersection:\r
memset(buf, 0, sizeof(buf));\r
if (fgets(buf, sizeof(buf), f) == NULL) {\r
PrintAndLog("No trace file found or reading error.");\r
memset(buf, 0, sizeof(buf));\r
if (fgets(buf, sizeof(buf), f) == NULL) {\r
PrintAndLog("No trace file found or reading error.");\r
\r
int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len){\r
PrintAndLog("\nEncrypted data: [%s]", sprint_hex(data, len) );\r
\r
int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len){\r
PrintAndLog("\nEncrypted data: [%s]", sprint_hex(data, len) );\r
ks2 = ar_enc ^ prng_successor(nt, 64);\r
ks3 = at_enc ^ prng_successor(nt, 96);\r
ks2 = ar_enc ^ prng_successor(nt, 64);\r
ks3 = at_enc ^ prng_successor(nt, 96);\r
- pcs = lfsr_recovery64(ks2, ks3);\r
- mf_crypto1_decrypt(pcs, data, len, FALSE);\r
+ s = lfsr_recovery64(ks2, ks3);\r
+ mf_crypto1_decrypt(s, data, len, FALSE);\r