feat(registers): self-describing config/frame registers
Add a BitField descriptor + Register base and per-IC config/frame
registers so opaque words decode themselves and build correctly:
- T5577Config LF block-0 config word, mode-dependent data rate
- EM4100Code 64-bit frame + all parities (EM4102/EM4200 too)
- Type2Config shared NXP CFG0/CFG1 base (auth0/prot/cfglck/authlim)
- Ntag21xConfig + mirror / MIRROR_PAGE / NFC counter fields
- UltralightEV1Config EV1 CFG0/CFG1
- UltralightCConfig UL-C AUTH0 + AUTH1 protect scope
- MifareAccessConditions per-block C1/C2/C3 -> English, inverted-copy
validation, build() that fills the inverted copy
Fields are documented attributes, so `<tab>` completes them in the shell
(bpython/ipython show each field's doc as the tooltip) and `repr` prints
the decode table. Bound to tags via `tag.config` / `tag.access(sector)`
/ `tag.code`. Bit layouts cross-checked against the firmware submodule
(cmdlft55xx, mifare4.c) and the NXP/EM datasheets. 40 new tests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,10 @@ pm3py/
|
||||
replay.py # Trace replay
|
||||
access_control/ # Wiegand, OSDP
|
||||
transponders/ # tag/transponder models (extracted from sim/)
|
||||
bitfield.py # BitField descriptor + Register base — self-describing config
|
||||
# registers (T5577Config, Ntag21xConfig, UL EV1/C, MFC access
|
||||
# bits). Fields are documented attrs -> shell completion + repr
|
||||
# decode table. Layouts cross-checked vs the firmware submodule.
|
||||
hf/iso14443a/ # Tag14443A_3/4, MifareClassic, DESFire, NfcType2/4
|
||||
# nxp/type2,ntag21x,ultralight,ntag_i2c
|
||||
# (NTAG210-216, Ultralight/C/EV1, NTAG I2C plus)
|
||||
|
||||
Reference in New Issue
Block a user