μFR卡格式化程序 – Mifare卡编程工具是μFR系列设备的可执行软件工具。 它的GUI显示整个Mifare Classic结构,可轻松访问其所有扇区和块(16个扇区,4个块)。 这样,NFC RFID卡内存处理既简单又精确。
µFR Card Formatter
MIFARE® Card/Tag Programming Tool
Docs & Software Download
Software overview
软件功能:
- 扇区/块读取
- 扇区/块写入
- 扇区/块键 A 和键 B 分配
- 扇区拖车定义
- 将卡/标签钥匙存储到读卡器中
- 导入密钥
- 访问密码设置
- 生成卡/标签日志文件
- 递减块的内容并将结果存储在内部传输缓冲区中
- 递增块的内容并将结果存储在内部传输缓冲区中
- 将块的内容恢复到内部传输缓冲区中
- 将内部传输缓冲区的内容传输到值块
可用的编程语言:
- 可执行软件工具
支持的操作系统、平台和环境:
- 视窗操作系统
支持的硬件:
- μFR 系列器件
软件呼吸 | D标注 |
UFR-mifare_card_tag_programming_tool_executable |
MIFARE®经典1k卡标签编程工具,用于通过μFR系列器件对MIFARE®卡和标签进行编程。 |
Software manual
1. μFR 卡格式化程序 – 主要软件命令
下载: ufr-mifare_card_tag_programming_tool_executable
下载并解压缩软件包。 下载适用于您的操作系统的 μFR 库 ,提取下载的包,并将所有内容复制到 μFRCard 格式化程序工具 (ufr-mifare_card_tag_programming_tool_executable-master 的根文件夹中。
双击 uFCardFormatter v1.8.exe 文件以运行该软件。
1.1 μFR 卡格式化程序 – 主软件面板
主软件面板显示整个Mifare Classic结构,可轻松访问其所有扇区和块(16个扇区,4个块)。 第一个块(块零)是为卡工厂 UID 保留的,默认情况下它是只读的。 卡内存是完全空白的,无需访问。
如屏幕截图所示,该软件将卡/标签内容显示为十六进制和 ASCII 代码。 主面板还提供即时洞察和访问每个扇区的钥匙和扇区拖车以及卡/标签的拖车。
2. μFR 卡格式化程序 – 读取卡/标签
要读取卡片/标签数据,请单击左上角的 读取卡片 按钮。
如果您使用新的完全空白的卡片/标签,或者它已编程但未锁定,则其全部内容会立即出现。
2.1 μFR 读卡器工具 – 卡/标签 UID
第一个扇区(扇区0)的第一个数据块(块0)包含IC制造商数据(卡/标签4字节或7字节UID)。 该模块在生产测试中经过编程和写保护。
所有卡片/标签内容(包括 UID)也以 ASCII 格式显示。
3. μFR 卡格式化程序 – 写入卡/标签内容
μFR卡格式化程序支持以最简单的方式写入卡/标签的任何扇区和块。 为了确保您的卡/标签将按计划进行编程,您需要了解其结构并在将数据记录到卡中之前精确地输入软件表。 建议特别注意访问位值条目,因为错误可能会导致卡/标签永久损坏。
3.1 μFR 卡格式化程序 – 卡/标签扇区
所有扇区都包含 3 个 16 字节的块,用于存储数据(扇区 0 仅包含两个数据块和只读制造商块)。
数据块可由访问位
配置为
• 读/写块
• 价值块
价值块可用于例如电子钱包应用,其中提供了额外的命令,如递增和递减,以直接控制存储的价值。
必须执行成功的身份验证才能允许任何内存操作。
该软件在左上角的表格(卡上的数据)显示数据块,在右下角的表格(访问位)显示扇区拖车。
3.1 μFR 卡格式化程序 – 卡/标签值块
值块允许执行读取、写入、递增、递减、还原、传递函数。 它们具有固定的数据格式,允许错误检测、更正和备份管理。
值块只能通过值块格式的写入操作生成:
• 值:表示有符号的 4 字节值。 值的最低有效字节存储在最低地址字节中。 负值以标准 2 的补码格式存储。 出于数据完整性和安全性的原因,一个值存储三次,两次非反转,一次倒置。
• 地址:表示 1 字节地址,在实现强大的备份管理时,可用于保存块的存储地址。 地址字节存储四次,两次反转和非反转。 在递增、递减、还原和传输操作期间,地址保持不变。 它只能通过写入命令进行更改。
4. 微FR

4.1 微法
字节数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D标注 | 键 A | 访问位 | 按键 B(可选) | |||||||||||||
0xFF |
0x07 |
0x80 |
用户 |
访问位 | 的访问条件 | 应用程序 | |||||
---|---|---|---|---|---|---|---|
C10 | C20 | C30 | 读 | 写 | 增加 | 递减、传输、恢复 | |
0 | 0 | 0 | 键 A|乙1 | 键 A|乙1 | 键 A|乙1 | 键 A|乙1 | 传输配置 |
0 | 1 | 0 | 键 A|乙1 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 0 | 0 | 键 A|乙1 | 键 B1 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 1 | 0 | 键 A|乙1 | 键 B1 | 键 B1 | 键 A|乙1 | 值块 |
0 | 0 | 1 | 键 A|乙1 | 从来 没有 | 从来 没有 | 键 A|乙1 | 值块 |
0 | 1 | 1 | 键 B1 | 键 B1 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 0 | 1 | 键 B1 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 1 | 1 | 从来 没有 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 如果可以在相应的扇区尾部读取密钥 B,则它不能用于身份验证(最后一个表中所有灰色标记的行)。 因此,如果读卡器使用灰色标记的访问条件并使用密钥B对扇区的任何块进行身份验证,则卡将在身份验证后拒绝任何后续的内存访问。
访问位 | 的访问条件 | 应用程序 | |||||
---|---|---|---|---|---|---|---|
C11 | C21 | C31 | 读 | 写 | 增加 | 递减、传输、恢复 | |
0 | 0 | 0 | 键 A|乙1 | 键 A|乙1 | 键 A|乙1 | 键 A|乙1 | 传输配置 |
0 | 1 | 0 | 键 A|乙1 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 0 | 0 | 键 A|乙1 | 键 B1 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 1 | 0 | 键 A|乙1 | 键 B1 | 键 B1 | 键 A|乙1 | 值块 |
0 | 0 | 1 | 键 A|乙1 | 从来 没有 | 从来 没有 | 键 A|乙1 | 值块 |
0 | 1 | 1 | 键 B1 | 键 B1 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 0 | 1 | 键 B1 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 1 | 1 | 从来 没有 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 如果可以在相应的扇区尾部读取密钥 B,则它不能用于身份验证(最后一个表中所有灰色标记的行)。 因此,如果读卡器使用灰色标记的访问条件并使用密钥B对扇区的任何块进行身份验证,则卡将在身份验证后拒绝任何后续的内存访问。
访问位 | 的访问条件 | 应用程序 | |||||
---|---|---|---|---|---|---|---|
C12 | C22 | C32 | 读 | 写 | 增加 | 递减、传输、恢复 | |
0 | 0 | 0 | 键 A|乙1 | 键 A|乙1 | 键 A|乙1 | 键 A|乙1 | 传输配置 |
0 | 1 | 0 | 键 A|乙1 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 0 | 0 | 键 A|乙1 | 键 B1 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 1 | 0 | 键 A|乙1 | 键 B1 | 键 B1 | 键 A|乙1 | 值块 |
0 | 0 | 1 | 键 A|乙1 | 从来 没有 | 从来 没有 | 键 A|乙1 | 值块 |
0 | 1 | 1 | 键 B1 | 键 B1 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 0 | 1 | 键 B1 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 | 1 | 1 | 从来 没有 | 从来 没有 | 从来 没有 | 从来 没有 | 读/写块 |
1 如果可以在相应的扇区尾部读取密钥 B,则它不能用于身份验证(最后一个表中所有灰色标记的行)。 因此,如果读卡器使用灰色标记的访问条件并使用密钥B对扇区的任何块进行身份验证,则卡将在身份验证后拒绝任何后续的内存访问。
访问位 | 的访问条件 | 的话 | |||||||
---|---|---|---|---|---|---|---|---|---|
凯亚 | 访问位 | 凯布 | |||||||
C13 | C23 | C33 | 读 | 写 | 读 | 写 | 读 | 写 | |
0 | 0 | 0 | 从来 没有 | 键 A | 键 A | 从来 没有 | 键 A | 键 A | 可以读取密钥 B[1] |
0 | 1 | 0 | 从来 没有 | 从来 没有 | 键 A | 从来 没有 | 键 A | 从来 没有 | 可以读取密钥 B[1] |
1 | 0 | 0 | 从来 没有 | 键 B | 键 A|B | 从来 没有 | 从来 没有 | 键 B | |
1 | 1 | 0 | 从来 没有 | 从来 没有 | 键 A|B | 从来 没有 | 从来 没有 | 从来 没有 | |
0 | 0 | 1 | 从来 没有 | 键 A | 键 A | 键 A | 键 A | 键 A | 可读取密钥 B,传输配置[1] |
0 | 1 | 1 | 从来 没有 | 键 B | 键 A|B | 键 B | 从来 没有 | 键 B | |
1 | 0 | 1 | 从来 没有 | 从来 没有 | 键 A|B | 键 B | 从来 没有 | 从来 没有 | |
1 | 1 | 1 | 从来 没有 | 从来 没有 | 键 A|B | 从来 没有 | 从来 没有 | 从来 没有 |
[1] 对于此访问,条件键 B 是可读的,可用于数据
4.2 微法
jgjgzt

4.3 微法
嗯

本手册以C++编程语言提供带有源代码的可执行软件。 源代码 SDK 也可用。