mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-09-11 18:29:22 -07:00
One read cannot see the fault this suite is most useful for. A block that comes back silently wrong on some reads and right on others scores the same as one that is simply wrong, and the same as one that is fine. Read each block three times and mark disagreement between them as `unstable`. Where a block is wrong the same way every time, name it: `rol1`, `ror5`, `inverted`, `inv+ror2`, `shr1`. The kind matters. A rotation says the word boundary moved, an inversion says psk picked the opposite phase, and a shift says a demodulation opened a bit early and padded with zero - three different faults that want three different fixes, and all of them previously reported as "block 3,4 bad". Measured on a T5577 over the 21 PSK1 configurations, this turns 56 fields of "bad" into 56 marked unstable, and on a build that has since fixed part of it, into 24 rotations whose size tracks the bit rate - ror5 at RF/32, ror4 at RF/40, ror2 at RF/100 - which is a fixed sample offset rather than noise, and says where to look. Block 1 is 00000000, which equals all of its own rotations, so a rotated read of it cannot be told from a correct one. Noted in the header rather than changed, since the payload is the suite's own choice. Also corrects the header, which described block 2 as ffffffff where the script writes aa5500ff. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>