diff --git a/tools/mfc/card_only/staticnested_2x1nt_rf08s.c b/tools/mfc/card_only/staticnested_2x1nt_rf08s.c index 10f31875d..0a83c10fd 100644 --- a/tools/mfc/card_only/staticnested_2x1nt_rf08s.c +++ b/tools/mfc/card_only/staticnested_2x1nt_rf08s.c @@ -31,11 +31,23 @@ static void init_lfsr16_table(void) { } // static uint16_t next_lfsr16(uint16_t nonce) { -// return s_lfsr16[(i_lfsr16[nonce]+1) % 65535]; +// uint16_t i = i_lfsr16[nonce]; +// if (i == 0xffff) { +// i = 1; +// } else { +// i++; +// } +// return s_lfsr16[i]; // } static uint16_t prev_lfsr16(uint16_t nonce) { - return s_lfsr16[(i_lfsr16[nonce] - 1) % 65535]; + uint16_t i = i_lfsr16[nonce]; + if (i == 1) { + i = 0xffff; + } else { + i--; + } + return s_lfsr16[i]; } static uint16_t compute_seednt16_nt32(uint32_t nt32, uint64_t key) { diff --git a/tools/mfc/card_only/staticnested_2x1nt_rf08s_1key.c b/tools/mfc/card_only/staticnested_2x1nt_rf08s_1key.c index 66f0cecab..f7b74ce0e 100644 --- a/tools/mfc/card_only/staticnested_2x1nt_rf08s_1key.c +++ b/tools/mfc/card_only/staticnested_2x1nt_rf08s_1key.c @@ -33,11 +33,23 @@ static void init_lfsr16_table(void) { } // static uint16_t next_lfsr16(uint16_t nonce) { -// return s_lfsr16[(i_lfsr16[nonce]+1) % 65535]; +// uint16_t i = i_lfsr16[nonce]; +// if (i == 0xffff) { +// i = 1; +// } else { +// i++; +// } +// return s_lfsr16[i]; // } static uint16_t prev_lfsr16(uint16_t nonce) { - return s_lfsr16[(i_lfsr16[nonce] - 1) % 65535]; + uint16_t i = i_lfsr16[nonce]; + if (i == 1) { + i = 0xffff; + } else { + i--; + } + return s_lfsr16[i]; } static uint16_t compute_seednt16_nt32(uint32_t nt32, uint64_t key) {