From 20a0713441abc3ff9d5bc4c17cf2948308eec0ed Mon Sep 17 00:00:00 2001 From: mwalker33 <51802811+mwalker33@users.noreply.github.com> Date: Sat, 17 Aug 2024 13:41:16 +1000 Subject: [PATCH] Update cmdlfindala.c 25 But parity diz --- client/src/cmdlfindala.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index 0b5c7bd0a..4571ffedf 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -1136,6 +1136,7 @@ int getIndalaBits(uint8_t fc, uint16_t cn, uint8_t *bits) { bits[51] = ((cn >> 8) & 1); // b9 - c bits[46] = ((cn >> 7) & 1); // b8 bits[33] = ((cn >> 6) & 1); // b7 - c + // bits[61] = ((cn >> 6) & 1); // b7 - c bits[37] = ((cn >> 5) & 1); // b6 - c bits[54] = ((cn >> 4) & 1); // b5 bits[56] = ((cn >> 3) & 1); // b4 @@ -1164,11 +1165,25 @@ int getIndalaBits(uint8_t fc, uint16_t cn, uint8_t *bits) { } // add parity - bits[34] = 1; // p1 64 - 30 = 34 - bits[38] = 1; // p2 68 - 30 = 38 + // bits[34] = 1; // p1 64 - 30 = 34 + // bits[38] = 1; // p2 68 - 30 = 38 // 92 = 62 // 93 = 63 + + bits[34] = 0; // parity for odd bits + bits[38] = 0; // parity for even bits + uint8_t p1 = 1; + uint8_t p2 = 1; + + for (int i=33; i < 64; i++) { + if (i%2) + p1 ^= bits[i]; + else + p2 ^= bits[i]; + } + bits[34] = p1; // parity for odd bits + bits[38] = p2; // parity for even bits return PM3_SUCCESS; }