MIFARE DESFire 芯片版本检测系统开发指南
核心要点
- 核心要点
- 详细内容
核心要点
- 项目名称:MIFARE DESFire Chip Inspector (MDCI)
- 核心目标:基于 ACR122U 读卡器,自动识别 DESFire 芯片版本(EV1/EV2/EV3),进行质量检验并生成报告。
- 技术栈:Python 3.7+,pyscard,python-desfire,pandas。
- 核心功能:读卡器管理、卡片检测、版本识别、质量判定、批量检测与CSV报告导出、API推送。
详细内容
一、项目概述
开发一套轻量级、跨平台的芯片检测工具,实现自动识别 ACR122U 读卡器,读取 MIFARE DESFire 芯片版本信息,判定是否符合目标版本(默认 EV3),支持单张/批量检测及报告导出。
二、技术栈与依赖
- 语言:Python 3.7+
- 核心库:pyscard (PC/SC通信), python-desfire (协议解析), pandas (数据处理), PyYAML (配置), colorama (终端输出)。
- 硬件:ACR122U USB NFC Reader。
三、核心功能需求
- 读卡器管理:自动检测连接 ACR122U,支持热插拔。
- 卡片检测:轮询检测,读取 ATR,发送 GetVersion APDU。
- 版本识别:通过软件主版本号识别 EV1(0x01)/EV2(0x02)/EV3(0x03)。
- 质量检验:对比目标版本,输出 PASS/FAIL/UNKNOWN。
- 批量与报告:连续检测,实时统计,导出 CSV。
四、核心代码实现
1. 读卡器连接 (CardReader)
使用 pyscard 的 readers() 查找 ACR 设备,创建 Connection。
2. 芯片检测 (ChipInspector)
发送 APDU 命令 90 60 00 00 00 获取版本。解析响应数据,提取软件主版本号进行映射。
3. 报告导出 (ReportExporter)
使用 pandas 将检测结果(序号、时间、芯片类型、结果、版本等)保存为 CSV 文件。
五、APDU 命令规范
GetVersion 命令:90 60 00 00 00
响应解析:成功返回 <version_data> 91 00。版本数据中 Byte 10 为软件主版本(0x01=EV1, 0x02=EV2, 0x03=EV3)。
六、环境与部署
- Windows:安装 ACS 官方驱动,pip install 依赖。
- Linux:安装 pcscd,配置 udev 规则赋予 USB 权限。
- 打包:使用 pyinstaller 打包为独立 exe 或可执行文件。