FlipperZero NFC设备文件格式详解
概述
FlipperZero作为一款多功能安全工具,其NFC功能支持多种卡片类型的读写操作。本文将详细介绍FlipperZero固件中使用的NFC设备文件格式,帮助开发者理解如何存储和解析不同NFC设备的数据。
通用文件格式结构
所有NFC设备文件都遵循一个基本结构:
Filetype: Flipper NFC device
Version: 4
Device type: [设备类型]
UID: [UID值]
-------------------------
(设备特定数据)
其中:
- Version字段表示文件格式版本,目前最新为4
- Device type可以是ISO14443-3A、ISO14443-3B、ISO14443-4A、NTAG/Ultralight、Mifare Classic或Mifare DESFire
- UID是设备的唯一标识符,长度通常为4或7字节
各类型NFC设备文件详解
1. ISO14443-3A设备
用于存储符合ISO14443-3A标准的非接触式卡片数据。
特点:
- UID长度必须为4或7字节
- 包含ATQA(2字节)和SAK(1字节)字段
示例:
Device type: ISO14443-3A
UID: 34 19 6D 41 14 56 E6
ATQA: 00 44
SAK: 00
2. ISO14443-3B设备
用于存储符合ISO14443-3B标准的非接触式卡片数据。
特点:
- UID长度固定为4字节
- 包含应用数据(4字节)和协议信息(3字节)
示例:
Device type: ISO14443-3B
UID: 30 1D B3 28
Application data: 00 12 34 FF
Protocol info: 11 81 E1
3. ISO14443-4A设备
在ISO14443-3A基础上增加了ATS(Answer to Select)数据。
特点:
- ATS长度至少5字节
- 其他字段与ISO14443-3A相同
示例:
Device type: ISO14443-4A
UID: 04 48 6A 32 33 58 80
ATQA: 03 44
SAK: 20
ATS: 06 75 77 81 02 80
4. NTAG/Ultralight设备
用于存储NTAG和Mifare Ultralight系列卡片数据。
特点:
- 存储卡片类型(NTAG203/213/215/216等)
- 包含签名数据(32字节)
- 记录所有页(page)数据
- 支持计数器(3个)和撕裂标志
示例片段:
Device type: NTAG/Ultralight
NTAG/Ultralight type: NTAG216
Signature: 1B 84 EB 70 BD 4C BD 1B...
Pages total: 231
Page 0: 04 85 92 9B
Page 1: 8A A0 61 81
...
5. Mifare Classic设备
用于存储Mifare Classic(1K/4K)卡片数据。
特点:
- 指定卡片类型(1K或4K)
- 以块(block)为单位存储数据
- 未知数据用'??'表示
- 每个块16字节
示例片段:
Device type: Mifare Classic
Mifare Classic type: 4K
Block 0: BA E2 7C 9D B9 18 02 00...
Block 1: 00 00 00 00 00 00 00 00...
...
Block 255: FF FF FF FF FF FF FF 07...
6. Mifare DESFire设备
用于存储Mifare DESFire卡片数据。
特点:
- 存储PICC版本信息
- 记录应用数量和配置
- 按应用和文件组织数据
- 包含详细的访问权限信息
示例片段:
Device type: Mifare DESFire
PICC Version: 04 01 01 12 00 1A 05...
Application Count: 1
Application IDs: 56 34 12
Application 563412 File IDs: 01
Application 563412 File 1: 13 37 00 00...
辅助文件格式
1. Mifare Classic密钥字典
包含常见Mifare Classic密钥的文本文件。
特点:
- 每行一个密钥(12位十六进制)
- 以#开头的行视为注释
- 常用于测试Mifare Classic卡片
示例:
FFFFFFFFFFF
A0A1A2A3A4A5
D3F7D3F7D3F7
2. EMV资源文件
存储EMV相关编码对应关系。
特点:
- 包含货币代码、国家代码等
- 格式为"代码: 名称"
- 用于解析支付卡信息
示例:
0997: USN
0994: XSU
0990: CLF
版本变更说明
文件格式经历了多次迭代:
- 初始版本(已弃用)
- 使用LSB格式存储ATQA(如4400而非0044)
- 改用MSB格式存储ATQA(当前标准)
- 在ISO14443-3A设备中使用UID替代设备类型
实际应用建议
- 数据完整性检查:解析文件时应验证UID长度、各字段长度是否符合规范
- 版本兼容性:处理旧版本文件时需注意ATQA格式差异
- 安全存储:包含重要数据的文件应加密存储
- 性能优化:对于大容量卡片(如Mifare Classic 4K),考虑按需加载数据
通过理解这些文件格式,开发者可以更好地利用FlipperZero进行NFC相关应用的开发和数据分析。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考