Flipper Zero Unleashed固件NFC格式:近场通信文件规范
概述
Flipper Zero Unleashed固件提供了完整的NFC(Near Field Communication,近场通信)功能支持,能够读取、写入和模拟多种NFC标签类型。本文档详细介绍了Flipper Zero中使用的NFC文件格式规范,帮助开发者理解和使用这些格式进行NFC应用开发。
通用文件格式结构
所有NFC文件都遵循相同的基本结构:
Filetype: Flipper NFC device
Version: 4
Device type: [设备类型]
UID: [UID十六进制数据]
-------------------------
[设备特定数据]
版本历史
- 版本1: 初始版本,已弃用
- 版本2: LSB ATQA格式(如4400而非0044)
- 版本3: MSB ATQA格式(当前版本)
- 版本4: 使用ISO14443-3A替换UID设备类型
ISO14443-3A格式
示例
Filetype: Flipper NFC device
Version: 4
Device type: ISO14443-3A
UID: 34 19 6D 41 14 56 E6
ATQA: 00 44
SAK: 00
技术规范
| 字段 | 长度 | 描述 |
|---|---|---|
| UID | 4或7字节 | 唯一标识符 |
| ATQA | 2字节 | 请求应答 |
| SAK | 1字节 | 选择应答 |
ISO14443-3B格式
示例
Filetype: Flipper NFC device
Version: 4
Device type: ISO14443-3B
UID: 30 1D B3 28
Application data: 00 12 34 FF
Protocol info: 11 81 E1
技术规范
| 字段 | 长度 | 描述 |
|---|---|---|
| UID | 4字节 | 唯一标识符 |
| Application data | 4字节 | 应用数据 |
| Protocol info | 3字节 | 协议信息 |
ISO14443-4A格式
示例
Filetype: Flipper NFC device
Version: 4
Device type: ISO14443-4A
UID: 04 48 6A 32 33 58 80
ATQA: 03 44
SAK: 20
ATS: 06 75 77 81 02 80
技术规范
| 字段 | 长度 | 描述 |
|---|---|---|
| UID | 4或7字节 | 唯一标识符 |
| ATQA | 2字节 | 请求应答 |
| SAK | 1字节 | 选择应答 |
| ATS | ≥5字节 | 选择应答数据 |
NTAG/Ultralight格式
示例
Filetype: Flipper NFC device
Version: 4
Device type: NTAG/Ultralight
UID: 04 85 90 54 12 98 23
ATQA: 00 44
SAK: 00
Data format version: 2
NTAG/Ultralight type: NTAG216
Signature: 1B 84 EB 70 BD 4C BD 1B 1D E4 98 0B 18 58 BD 7C 72 85 B4 E4 7B 38 8E 96 CF 88 6B EE A3 43 AD 90
Mifare version: 00 04 04 02 01 00 13 03
Counter 0: 0
Tearing 0: 00
Counter 1: 0
Tearing 1: 00
Counter 2: 0
Tearing 2: 00
Pages total: 231
Pages read: 231
Page 0: 04 85 92 9B
Page 1: 8A A0 61 81
...
Failed authentication attempts: 0
支持的设备类型
Mifare Classic格式
示例
Filetype: Flipper NFC device
Version: 4
Device type: Mifare Classic
UID: BA E2 7C 9D
ATQA: 00 02
SAK: 18
Mifare Classic type: 4K
Data format version: 2
Block 0: BA E2 7C 9D B9 18 02 00 46 44 53 37 30 56 30 01
Block 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Block 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Block 3: FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF
...
Block 255: FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF
版本差异
Mifare DESFire格式
示例
Filetype: Flipper NFC device
Version: 4
Device type: Mifare DESFire
UID: 04 2F 19 0A CD 66 80
ATQA: 03 44
SAK: 20
ATS: 06 75 77 81 02 80
PICC Version: 04 01 01 12 00 1A 05 04 01 01 02 01 1A 05 04 2F 19 0A CD 66 80 CE ED D4 51 80 31 19
PICC Free Memory: 7520
PICC Change Key ID: 00
PICC Config Changeable: true
PICC Free Create Delete: true
PICC Free Directory List: true
PICC Key Changeable: true
PICC Max Keys: 01
PICC Key 0 Version: 00
Application Count: 1
Application IDs: 56 34 12
...
Mifare Classic字典格式
示例
# Key dictionary from https://github.com/ikarus23/MifareClassicTool.git
# Standard keys
FFFFFFFFFFFF
A0A1A2A3A4A5
D3F7D3F7D3F7
000000000000
# Keys from mfoc
B0B1B2B3B4B5
4D3A99C351DD
1A982C7E459A
...
EMV资源格式
示例
Filetype: Flipper EMV resources
Version: 1
# EMV currency code: currency name
0997: USN
0994: XSU
0990: CLF
0986: BRL
0985: PLN
0984: BOV
...
文件操作流程
开发实践指南
1. 文件路径管理
Flipper Zero使用固定的文件路径结构:
- 主目录:
/ext/nfc/ - 字典文件:
/ext/nfc/assets/mf_classic_dict.nfc - 用户字典:
/ext/nfc/assets/mf_classic_dict_user.nfc
2. 数据验证
在开发NFC应用时,务必进行数据验证:
// 示例:验证UID长度
bool validate_uid_length(const uint8_t* uid, size_t length) {
return (length == 4 || length == 7);
}
// 示例:验证ATQA格式
bool validate_atqa(const uint8_t* atqa) {
return (atqa != NULL);
}
3. 错误处理
完善的错误处理机制:
typedef enum {
NfcErrorNone = 0,
NfcErrorInvalidFormat,
NfcErrorChecksum,
NfcErrorProtocol,
NfcErrorTimeout
} NfcError;
NfcError nfc_device_load(NfcDevice* device, const char* path) {
// 实现文件加载逻辑
if (!file_exists(path)) return NfcErrorInvalidFormat;
// ... 其他验证
return NfcErrorNone;
}
性能优化建议
内存管理
文件大小优化
| 设备类型 | 典型文件大小 | 优化建议 |
|---|---|---|
| ISO14443-3A | 100-200字节 | 无需优化 |
| Mifare Classic 1K | 4-8KB | 使用数据压缩 |
| Mifare Classic 4K | 16-32KB | 分块存储 |
| NTAG216 | 1-2KB | 页面级压缩 |
安全注意事项
- 数据完整性: 所有NFC文件都应包含校验和验证
- 访问控制: 敏感数据应加密存储
- 版本兼容性: 确保向后兼容旧版本格式
- 错误恢复: 实现完善的错误恢复机制
总结
Flipper Zero Unleashed固件的NFC文件格式提供了强大而灵活的近场通信数据存储方案。通过理解这些格式规范,开发者可以:
- ✅ 创建兼容的NFC应用
- ✅ 实现高效的数据存储和检索
- ✅ 确保跨版本兼容性
- ✅ 优化性能和内存使用
掌握这些文件格式将帮助您充分利用Flipper Zero的NFC功能,开发出更加出色的近场通信应用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



