
uFR Card Formatter – Mifare Card Programming Tool is an executable software tool for the µFR Series devices. Its GUI displays the entire Mifare Classic structure with simple access to all its sectors and blocks ( 16 sectors of 4 blocks). This way, the NFC RFID Card memory handling is easy and precise.
Software functions:
Available programming languages:
Supported operating systems, platforms, and environments:
Supported hardware:
| Software respiratory | Description |
| ufr-mifare_card_tag_programming_tool_executable |
MIFARE® Classic 1k Card Tag Programming Tool for programming MIFARE® cards and tags by µFR Series devices. |
Download: ufr-mifare_card_tag_programming_tool_executable
Download and extract the software pack. Download the µFR libraries for your operating system, extract the downloaded package, and copy all the content into the root folder of the µFRCard Formatter Tool (ufr-mifare_card_tag_programming_tool_executable-master).
Doubleclick the uFCardFormatter v1.8.exe file to run the software.
The main software panel displays the entire Mifare Classic structure with simple access to all its sectors and blocks ( 16 sectors of 4 blocks). The first block (block zero) is reserved for the card factory UID, and it is read-only by default. The of the card memory is completely blank and access-free.
As a screenshot shows, the software displays a card/tag content as HEX and ASCII code. The main panel also provides instant insight and access to the Keys and sector trailers for each sector and trailer of the card/tag.
To read the card/tag data, click the Read Card button at the top left.
If you use a new completely blank card/tag, or it is programmed but not locked, its entire content immediately appears.

The first data block (block 0) of the first sector (sector 0) contains the IC manufacturer data (card/tag 4-byte or 7-byte UID). This block is programmed and write protected in the production test.
All card/tag content, including the UID, is also visible in ASCII format.
µFR Card Formatter enables the simplest way to write any sector and block of the card/tag. To make sure that your card/tag will be programmed as planned, you need to understand the its structure and make the precise entry into the software tables before recording the data into the card. Special attention is recommended for Acces Bit Values entries, because the mistake may cause the card/tag permanent damage.
All sectors contain 3 blocks of 16 bytes for storing data (Sector 0 contains only two data blocks and the read-only manufacturer block).
The data blocks can be configured by the access bits as
• read/write blocks
• value blocks
Value blocks can be used for e.g. electronic purse applications, where additional commands like increment and decrement for direct control of the stored value are provided.
A successful authentication has to be performed to allow any memory operation.
The software displays data block at the top-left table (Data on the Card) and sector trailers at the bottom-right table (Access Bits).
Value blocks allow the execution of the read, write, increment, decrement, restore, transfer functions. They have a fixed data format that permits error detection, correction, and backup management.
A value block can only be generated through a write operation in value block format:
• Value: Signifies a signed 4-byte value. The lowest significant byte of a value is stored in the lowest address byte. Negative values are stored in standard 2´s complement format. For reasons of data integrity and security, a value is stored three times, twice non-inverted, and once inverted.
• Address: Signifies a 1-byte address, which can be used to save the storage address of a block, when implementing powerful backup management. The address byte is stored four times, twice inverted and non-inverted. During increment, decrement, restore, and transfer operations the address remains unchanged. It can only be altered via a write command.

| Byte Number | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Description | KEY A | Access Bits | KEY B (optional) | |||||||||||||
|
0xFF |
0x07 |
0x80 |
USER | |||||||||||||
| Access bits | Access condition for | Application | |||||
|---|---|---|---|---|---|---|---|
| C10 | C20 | C30 | read | write | increment | decrement, transfer, restore | |
| 0 | 0 | 0 | key A|B1 | key A|B1 | key A|B1 | key A|B1 | transport configuration |
| 0 | 1 | 0 | key A|B1 | never | never | never | read/write block |
| 1 | 0 | 0 | key A|B1 | key B1 | never | never | read/write block |
| 1 | 1 | 0 | key A|B1 | key B1 | key B1 | key A|B1 | value block |
| 0 | 0 | 1 | key A|B1 | never | never | key A|B1 | value block |
| 0 | 1 | 1 | key B1 | key B1 | never | never | read/write block |
| 1 | 0 | 1 | key B1 | never | never | never | read/write block |
| 1 | 1 | 1 | never | never | never | never | read/write block |
1 if Key B may be read in the corresponding Sector Trailer it cannot serve for authentication (all grey marked lines in the last table). As a consequence, if the reader authenticates any block of a sector which uses the grey marked access conditions and using key B, the card will refuse any subsequent memory access after authentication.
| Access bits | Access condition for | Application | |||||
|---|---|---|---|---|---|---|---|
| C11 | C21 | C31 | read | write | increment | decrement, transfer, restore | |
| 0 | 0 | 0 | key A|B1 | key A|B1 | key A|B1 | key A|B1 | transport configuration |
| 0 | 1 | 0 | key A|B1 | never | never | never | read/write block |
| 1 | 0 | 0 | key A|B1 | key B1 | never | never | read/write block |
| 1 | 1 | 0 | key A|B1 | key B1 | key B1 | key A|B1 | value block |
| 0 | 0 | 1 | key A|B1 | never | never | key A|B1 | value block |
| 0 | 1 | 1 | key B1 | key B1 | never | never | read/write block |
| 1 | 0 | 1 | key B1 | never | never | never | read/write block |
| 1 | 1 | 1 | never | never | never | never | read/write block |
1 if Key B may be read in the corresponding Sector Trailer it cannot serve for authentication (all grey marked lines in the last table). As a consequence, if the reader authenticates any block of a sector which uses the grey marked access conditions and using key B, the card will refuse any subsequent memory access after authentication.
| Access bits | Access condition for | Application | |||||
|---|---|---|---|---|---|---|---|
| C12 | C22 | C32 | read | write | increment | decrement, transfer, restore | |
| 0 | 0 | 0 | key A|B1 | key A|B1 | key A|B1 | key A|B1 | transport configuration |
| 0 | 1 | 0 | key A|B1 | never | never | never | read/write block |
| 1 | 0 | 0 | key A|B1 | key B1 | never | never | read/write block |
| 1 | 1 | 0 | key A|B1 | key B1 | key B1 | key A|B1 | value block |
| 0 | 0 | 1 | key A|B1 | never | never | key A|B1 | value block |
| 0 | 1 | 1 | key B1 | key B1 | never | never | read/write block |
| 1 | 0 | 1 | key B1 | never | never | never | read/write block |
| 1 | 1 | 1 | never | never | never | never | read/write block |
1 if Key B may be read in the corresponding Sector Trailer it cannot serve for authentication (all grey marked lines in the last table). As a consequence, if the reader authenticates any block of a sector which uses the grey marked access conditions and using key B, the card will refuse any subsequent memory access after authentication.
| Access bits | Access condition for | Remark | |||||||
|---|---|---|---|---|---|---|---|---|---|
| KEYA | Access bits | KEYB | |||||||
| C13 | C23 | C33 | read | write | read | write | read | write | |
| 0 | 0 | 0 | never | key A | key A | never | key A | key A | Key B may be read[1] |
| 0 | 1 | 0 | never | never | key A | never | key A | never | Key B may be read[1] |
| 1 | 0 | 0 | never | key B | key A|B | never | never | key B | |
| 1 | 1 | 0 | never | never | key A|B | never | never | never | |
| 0 | 0 | 1 | never | key A | key A | key A | key A | key A | Key B may be read, transport configuration[1] |
| 0 | 1 | 1 | never | key B | key A|B | key B | never | key B | |
| 1 | 0 | 1 | never | never | key A|B | key B | never | never | |
| 1 | 1 | 1 | never | never | key A|B | never | never | never | |
[1] for this access, condition key B is readable and may be used for data
jgjgzt

mmm

This manual presents the executable software with source code in the C++ programming language. Source code SDK s also available.