- crypto1_word(pcs, nr_enc , 1);
- at_enc = prng_successor(nt, 96) ^ crypto1_word(pcs, 0, 0);
+ s = lfsr_recovery32(ar0_enc ^ p640, 0);
+
+ for(t = s; t->odd | t->even; ++t) {
+ lfsr_rollback_word(t, 0, 0);
+ lfsr_rollback_word(t, nr0_enc, 1);
+ lfsr_rollback_word(t, uid ^ nt0, 0);
+ crypto1_get_lfsr(t, &key);
+
+ crypto1_word(t, uid ^ nt1, 0);
+ crypto1_word(t, nr1_enc, 1);
+ if (ar1_enc == (crypto1_word(t, 0, 0) ^ p641)) {
+ //PrintAndLog("Found Key: [%012"llx"]",key);
+ outkey=key;
+ ++counter;
+ if (counter==20) break;
+ }
+ }
+ isSuccess = (counter > 0);
+ t1 = clock() - t1;
+ if ( t1 > 0 ) PrintAndLog("Time in mfkey32_moebius: %.0f ticks - possible keys %d\n", (float)t1, counter);