1 # Notes on MFU binary formats
9 The new mfu binary format was created to compensate for different manufactures tag functions.
10 Like UL-Ev1 has three counter and tearing bytes, while NTAG only has one counter and tearing byte.
11 PACK was removed from header, since its just normally part of the tag memory, unreadable, but when
12 a proxmark3 dumps a tag and we have pwd/pack, we add those to their normal location in memory.
13 This makes memory not a exact memory dump from a tag, but a "what it should have looked like" if we could read all memory
16 // New Ultralight/NTAG dump file format
17 // Length must be aligned to 4 bytes (UL/NTAG page)
18 #define MFU_DUMP_PREFIX_LENGTH 56
24 uint8_t pages; // max page number in dump
25 uint8_t signature[32];
26 uint8_t counter_tearing[3][4]; // 3 bytes counter, 1 byte tearing flag
32 The old binary format saved the extra data on tag in order for the Proxmark3 to able to simulate a real tag.
35 // Old Ultralight/NTAG dump file format
36 #define OLD_MFU_DUMP_PREFIX_LENGTH 48
44 uint8_t signature[32];
50 The first binary format for MFU was just a memory dump from the tag block 0 to end.
51 No extra data was saved.
57 For developers of apps and other tools, like libnfc, we don't recommend using binary formats.
58 We decided to adopt a JSON based format, which is much more flexible to changes of new tag functionality.
63 "Created": "proxmark3",
66 "UID": "04F654CAFC388",
67 "Version": "0004030101000B0",
70 "Signature": "BC9BFD4B550C16B2B5A5ABA10B644A027B4CB03DDB46F94D992DC0FB02E0C3F",