README.md
July 15, 2026 · View on GitHub
NFC 卡片读写工具
方式一:使用微信小程序(推荐)
本项目提供微信小程序版本,无需安装 APP,微信扫码即可使用。
功能特点
- 无需安装:微信扫码即用,无需下载额外应用
- 智能扫描:扇区优先扫描,密钥命中率智能排序,找到密钥后自动广播测试其他扇区
- 断点续扫:卡片离开后自动保存进度,重新贴卡可继续扫描
- 实时进度:显示扫描速度(次/秒)、已验证扇区数
- 读取验证:扫描完成后可验证读取权限,确保密钥有效
- 数据读取:支持读取卡片扇区数据,手动输入密钥测试
- 多种导出:JSON、文本、MFD、Dump 格式导出
- 统计记录:记录扫描历史,密钥命中率分析
使用方法
-
打开小程序
- 使用微信扫描下方二维码进入小程序
- 小程序预览截图
-
开启检测
- 小程序自动加载密钥库(显示密钥条数)
- 点击「开启检测」按钮,等待 NFC 监听开启
- 将 M1 卡片靠近手机背面 NFC 区域
-
扫描密钥
- 检测到卡片后,点击「开始扫描」按钮
- 实时显示扫描进度、速度、已找到扇区数
- 找到密钥会自动显示在「已发现」区域
- 如需暂停,卡片离开会自动保存进度
-
验证读取
- 扫描完成后,点击「验证读卡」按钮
- 验证所有扇区的实际读取权限
- 验证成功后自动保存记录
-
查看记录
- 点击「记录管理」查看所有扫描历史
- 显示每张卡的 UID、类型、验证状态、扫描时间
-
读取数据
- 在记录详情页点击「读取」读取卡片数据
- 支持手动输入密钥测试特定扇区
- 显示每个扇区的数据块内容
-
导出记录
- 在记录详情页选择导出格式:
- JSON 格式:完整结构化数据
- 文本格式:易读的密钥报告
- MFD 格式:标准 Mifare Dump 格式
- Dump 格式:二进制数据文件
- 在记录详情页选择导出格式:
扫描策略说明
小程序采用智能扫描策略以提高效率:
- 扇区优先:优先扫描扇区 0 和高扇区(通常使用默认密钥)
- 密钥广播:找到密钥后立即测试其他扇区,减少重复测试
- 命中率排序:根据历史命中率排序密钥,高频密钥优先测试
- 失败记录:记录失败的密钥-扇区组合,避免重复无效测试
注意事项
- 仅支持 Android:iOS 不支持 NFC Reader 模式,无法读取实体卡
- 需要 NFC 支持:手机需支持 NFC 功能并已开启
- 微信版本要求:需微信版本支持 NFC API(建议 8.0+)
- 离线模式:网络不可达时使用内置常用密钥(约 8 个)
重要提示
正确操作流程:
- 扫描过程中如需暂停,让卡片离开即可(自动保存进度)
- 重新贴卡后,小程序会自动检测并提示继续
- 完成后点击「停止扫描」断开卡片连接
⚠️ 扫描过程中请保持卡片稳定贴在手机背面,频繁移动可能导致连接中断
使用方式
方式二:使用本项目的 Android 扫描 APP
本项目提供了一个独立的 Android 应用,内置密钥库,无需下载额外文件,支持自动扫描 M1 卡密钥。
功能特点
- 内置密钥库,开箱即用
- 自动扫描 Mifare Classic 1K/4K 卡片密钥
- 支持断点续扫(卡片离开后可继续扫描)
- 扫描记录自动保存
- 支持多种格式导出(JSON/文本/MFD)
- 实时显示扫描进度和速度
安装步骤
- 打开 Releases 下载最新 APK(
Assets区) - 安装到支持 NFC 的 Android 手机(需 Android 6.0+)
- 确保 NFC 功能已开启
使用方法
-
开始扫描
- 打开 APP,点击「开始扫描」按钮
- 将 M1 卡片靠近手机背面 NFC 区域
- APP 会自动检测卡片并开始扫描密钥
-
扫描过程
- 实时显示已找到的密钥和扫描进度
- 显示当前扫描速度(次/秒)
- 如卡片离开,会自动保存进度
-
断点续扫
- 如果扫描过程中卡片离开,进度会自动保存
- 重新靠近卡片后,会从上次位置继续扫描
-
查看记录
- 点击右上角「记录」按钮查看所有扫描历史
- 显示每张卡的 UID、扫描时间、完成状态
-
导出记录
- 在记录页面,点击单条记录的「导出」按钮
- 选择导出格式:
- JSON 格式:完整的结构化数据,适合程序处理
- 文本格式:易读的文本报告
- MFD 格式:标准 Mifare Classic Dump 格式,可用于复制卡片
-
批量导出
- 在记录页面点击「导出全部」
- 导出所有卡片记录为 JSON 文件
导出格式说明
JSON 格式示例:
{
"uid": "A1B2C3D4",
"scanTime": 1712123456789,
"cardType": "Mifare Classic",
"sectorCount": 16,
"sectorKeys": {
"0": { "keyA": "FFFFFFFFFFFF", "keyB": "A0A1A2A3A4A5" },
"1": { "keyA": "FFFFFFFFFFFF", "keyB": null }
}
}
文本格式示例:
═══════════════════════════════════════
NFC M1 卡片密钥记录
═══════════════════════════════════════
卡片 UID: A1B2C3D4
扫描时间: 2024-04-03 12:34:56
卡片类型: Mifare Classic
扇区数量: 16
───────────────────────────────────────
密钥信息:
───────────────────────────────────────
扇区 0:
密钥A: FFFFFFFFFFFF
密钥B: A0A1A2A3A4A5
扇区 1:
密钥A: FFFFFFFFFFFF
密钥B: 未找到
Android 扫描 APP 下载地址(Releases):https://github.com/hugh999999/nfc_tool_share_key/releases/latest
方式三:使用官方 NFC Tool APP
- 下载密钥txt文件到手机目录
- 安装nfc_tool.apk
- 打开app -> 一键读写-> 点击使用联动密钥按钮-> 点击加载-> 选择密钥txt文件-> 点击确定-> 开始读卡-> 等待破解完成
其他模拟门禁过程参考官方文档