1 # Notes on MFU binary formats
6 - [Notes on MFU binary formats](#notes-on-mfu-binary-formats)
7 - [Table of Contents](#table-of-contents)
8 - [New mfu format](#new-mfu-format)
9 - [Old mfu format](#old-mfu-format)
10 - [Plain mfu format](#plain-mfu-format)
11 - [future mfu format](#future-mfu-format)
18 The new mfu binary format was created to compensate for different manufactures tag functions.
19 Like UL-Ev1 has three counter and tearing bytes, while NTAG only has one counter and tearing byte.
20 PACK was removed from header, since its just normally part of the tag memory, unreadable, but when
21 a proxmark3 dumps a tag and we have pwd/pack, we add those to their normal location in memory.
22 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
25 // New Ultralight/NTAG dump file format
26 // Length must be aligned to 4 bytes (UL/NTAG page)
27 #define MFU_DUMP_PREFIX_LENGTH 56
33 uint8_t pages; // max page number in dump
34 uint8_t signature[32];
35 uint8_t counter_tearing[3][4]; // 3 bytes counter, 1 byte tearing flag
43 The old binary format saved the extra data on tag in order for the Proxmark3 to able to simulate a real tag.
46 // Old Ultralight/NTAG dump file format
47 #define OLD_MFU_DUMP_PREFIX_LENGTH 48
55 uint8_t signature[32];
63 The first binary format for MFU was just a memory dump from the tag block 0 to end.
64 No extra data was saved.
72 For developers of apps and other tools, like libnfc, we don't recommend using binary formats.
73 We decided to adopt a JSON based format, which is much more flexible to changes of new tag functionality.
78 "Created": "proxmark3",
81 "UID": "04F654CAFC388",
82 "Version": "0004030101000B0",
85 "Signature": "BC9BFD4B550C16B2B5A5ABA10B644A027B4CB03DDB46F94D992DC0FB02E0C3F",