
用于探索 RFID/NFC 标签和读卡器的 Python 库与工具:可对受支持的 ACG 串行硬件进行读取、写入、克隆和分析,以供研究和安全测试使用。
/* RFIDIOt.py - RFID IO tools for python *
Copyright (c) 2006-2026 Adam Laurie [email protected]
*** 这是 RFIDIOt 的 Python 3 版本。 ***
所有内容都用 python3 运行。原始的 Python 2.7 代码保留在 'python2.7' 分支上,并打了 'v1.0-python2.7' 标签——它无法在 python3 下运行, 而本版本也无法在 python2 下运行。
特别感谢 Pete Shipley(evilpete),他完成了 Python 3 移植的大部分工作, 并为最终成为本版本的 python3 分支做出了巨大贡献。
问:什么是 RFIDIOt? 答:一套用 python 编写的、用于探索 RFID/NFC 技术的工具和库集合。
问:为什么叫 RFIDIOt? 答:我喜欢无聊的双关语。另外,我是从一个白痴的视角来做这件事的: 我对 RFID 标签一无所知,对 python 更是知之甚少。因此,我刚开始时 觉得自己完全是个白痴。:)
问:我该如何贡献? 答:给我发补丁、信息、新工具、咖啡、钱、毒品和/或一首 Miles Davis 的歌 :)
问:支持哪些硬件? 答:
问:我该如何安装? 答: pip install -r requirements.txt # pycryptodome、pyscard、Pillow 等(passiveauth 使用 openssl CLI) sudo python3 ./setup.py install 系统软件包:为 libnfc 读卡器安装 libnfc;为 PC/SC 读卡器安装 守护进程和 CCID 驱动,并确保守护进程正在运行,例如在 Debian/ Ubuntu 上: sudo apt install pcscd libccid pcsc-tools 部分工具有额外需求:mrpkey.py 使用 PIL/Pillow 显示护照 照片,并使用 openssl 处理证书;jcoptool.py 需要 pyasn1。
问:Python 3 版本有什么新内容? 答:除了移植本身之外:
ChAP.py(“Chip And PIN”)是一款非接触/接触式 EMV 读卡器,可同时通过 PC/SC 和 libnfc 工作(使用标准选项选择读卡器——例如 libnfc 用 '-f 0', PC/SC 非接触插槽用 '-r 1')。它会遍历卡片(PPSE -> AID -> GPO -> 记录),解码 EMV BER-TLV(AIP、AFL、CVM 列表、CDOL/DDOL、拆分为 PAN / 有效期 / 服务代码的 Track 2、加密信息等),并读取卡片的交易日志 (每条记录的金额 / 日期 / 时间 / 货币 / ATC)。使用 '-c' 时,它会执行完整的 离线数据认证——恢复 CA -> 发卡行 -> ICC 证书链 (内置 26 个方案 CA 密钥表:Visa、Mastercard、Amex、CB、JCB、Discover、 UnionPay、RuPay,每个都对照其 EMVCo CAPK 校验和进行检查),然后按卡片支持的 任一方法验证卡片签名:
mrpkey.py 读取电子护照,passiveauth.py 针对公共 CSCA 主列表执行被动认证 (数据组完整性 + DS/CSCA 信任),将护照标记为 SAFE / TAMPERED / UNTRUSTED。rfidiot-cli.py 也可读取非接触式 EMV。
q: 那么这里究竟有什么? a: 请参阅 http://www.rfidiot.org/documentation.html