nfc-list使用教程
nfc-list 是 Kali Linux 中基于libnfc 库开源 NFC 开发框架的基础 NFC/RFID 设备检测工具核心功能是扫描并列出当前连接的 NFC 读卡器设备以及贴近读卡器的 NFC 卡片或标签的详细信息包括卡片类型、UID唯一标识符、协议标准、数据传输速率等。该工具是 NFC 安全测试与开发的“入门级检测工具”主要用于快速确认硬件连接状态、识别卡片基础属性为后续使用 mfoc、mfcuk、mfterm 等工具提供前置信息支持需对检测的卡片/设备拥有合法所有权或授权。其核心特性与适用范围如下多设备/多卡片兼容支持主流 USB 接口 NFC 读卡器如 ACR122U、PN532、SCL3711可识别 ISO14443A/B、Felica、NFC Barcode 等多种协议标准的 NFC 卡片/标签覆盖绝大多数民用 NFC 设备类型。精细化扫描控制通过“协议类型位域bitfield”参数-t X可指定仅扫描特定协议的卡片如仅扫描 ISO14443A 协议的 MIFARE Classic 卡片避免无关卡片干扰提升扫描效率。详细信息输出默认输出读卡器型号、卡片 UID、卡片类型如 MIFARE Classic 1K、协议版本、数据速率等关键信息启用 verbose 模式-v后可显示更底层的通信参数如 ATQA、SAK 响应值辅助卡片逆向分析。轻量无依赖作为 libnfc 库的基础工具体积小、启动快无需复杂配置可直接在终端执行适合快速排查硬件连接问题如读卡器未识别、卡片无响应等。适用场景确认 NFC 读卡器是否被 Kali 系统正常识别排除硬件驱动或连接问题快速识别未知 NFC 卡片的协议类型与基础属性如判断是 MIFARE Classic 还是 Ultralight 卡片批量检测卡片 UID如门禁卡、公交卡的唯一标识作为 NFC 工具链的前置检测步骤如执行 mfoc 前确认卡片类型是否支持。二、命令参数解析表格形式1. 核心选项参数参数英文说明中文解析使用示例-vverbose display启用详细输出模式verbose mode除默认信息外额外显示卡片的底层通信参数如 ATQA 响应值、SAK 状态值、最大帧长度、读卡器的固件版本、通信协议细节等用于深度硬件/卡片分析。nfc-list -v详细显示读卡器与卡片信息-t Xpoll only for types according to bitfield X具体 bitfield 含义见下文指定仅扫描特定协议类型的卡片X 为“协议类型位域”的十进制数值不同协议对应不同 bit 位多个协议可通过“位或运算”合并数值默认 X1023扫描所有协议类型。nfc-list -t 1仅扫描 ISO14443A 协议卡片nfc-list -t 9扫描 ISO14443A ISO14443B 协议卡片2. 协议类型位域bitfield X详细说明参数-t X中的 X 对应不同 NFC 协议类型的“位域组合”每个协议对应一个独立的 bit 位十进制数值多个协议可通过“数值相加”实现同时扫描如 ISO14443A ISO14443B 对应 189。十进制数值X 组成部分对应协议类型协议说明与常见卡片类型备注依赖关系1ISO14443A最常见的 NFC 协议之一支持 106 kbps 数据速率常见卡片MIFARE Classic 1K/4K、MIFARE Ultralight、NTAG 21x手机 NFC 标签独立协议无需依赖其他类型2Felica (212 kbps)索尼开发的非接触式协议212 kbps 速率常见卡片日本 Suica 交通卡、部分门禁卡独立协议4Felica (424 kbps)Felica 协议的高速版本424 kbps 速率常见卡片部分高端门禁卡、电子身份证独立协议8ISO14443B另一种主流 NFC 协议与 ISO14443A 不兼容常见卡片中国二代身份证、部分银行 IC 卡若选择 16/32/64/128会自动包含此类型即选择这些数值时X 需叠加 816ISO14443B’ISO14443B 协议的扩展版本支持更多加密算法常见卡片部分政府机构证件依赖 ISO14443BX8选择此类型时需 X8162432ISO14443B-2 ST SRxISO14443B 协议的子类型支持 ST SRx 芯片常见卡片特定工业级 RFID 标签依赖 ISO14443BX8选择此类型时需 X8324064ISO14443B-2 ASK CTxISO14443B 协议的子类型支持 ASK CTx 调制方式常见卡片部分医疗设备标签依赖 ISO14443BX8选择此类型时需 X86472128ISO14443B iClassISO14443B 协议的 iClass 变种支持高频加密常见卡片HID iClass 门禁卡依赖 ISO14443BX8选择此类型时需 X8128136256ISO14443A-3 JewelISO14443A 协议的 Jewel 子类型低功耗设计常见卡片NXP Jewel 标签独立协议512ISO14443A-2 NFC BarcodeISO14443A 协议的条形码扩展支持 NFC 条形码标签常见卡片手机扫描的 NFC 条形码贴纸独立协议1023All types所有类型默认值扫描上述所有协议类型的卡片12481632641282565121023无需依赖覆盖所有协议3. 常见参数组合示例命令组合中文解析适用场景nfc-list默认模式扫描所有协议类型的卡片输出读卡器与卡片的基础信息如 UID、类型快速确认读卡器连接与卡片基础属性通用场景nfc-list -v详细模式扫描所有协议类型输出底层通信参数ATQA、SAK、固件版本等卡片逆向分析、读卡器固件版本确认、通信问题排查nfc-list -t 1仅扫描 ISO14443A 协议卡片如 MIFARE Classic、NTAG过滤其他协议干扰仅需处理 MIFARE 系列卡片避免 Felica、ISO14443B 卡片干扰nfc-list -t 9扫描 ISO14443A1 ISO14443B8协议卡片189同时处理 MIFARE 卡片与二代身份证/银行 IC 卡的场景nfc-list -t 136 -v详细模式扫描 ISO14443B8 iClass128协议卡片8128136输出底层信息分析 HID iClass 门禁卡获取详细通信参数三、nfc-list 完整使用教程全场景覆盖1. 前提准备硬件与环境确认使用 nfc-list 前需确保 NFC 读卡器正常连接、驱动安装完成避免因硬件问题导致扫描失败1.1 必备硬件NFC 读卡器支持 libnfc 库的 USB 接口 NFC 读卡器推荐 ACR122U、PN532 模块兼容性最佳NFC 卡片/标签可选待检测的 NFC 卡片如 MIFARE Classic 1K、NTAG 213、二代身份证等用于验证扫描功能。1.2 软件环境验证与安装# 步骤 1安装 libnfc 库与 nfc-list 工具Kali 默认预装未安装则执行 sudo apt update sudo apt install libnfc-bin -y # 说明nfc-list 属于 libnfc-bin 软件包安装后可直接使用 # 步骤 2验证工具可用性 nfc-list --help # 输出参数说明如“usage: nfc-list [-v] [-t X]”说明安装成功 # 步骤 3确认读卡器驱动加载 # 方法 1查看 USB 设备列表确认读卡器存在以 ACR122U 为例 lsusb | grep -i nfc # 成功输出示例Bus 001 Device 005: ID 072f:2200 Advanced Card Systems, Ltd ACR122U NFC Reader # 方法 2查看 libnfc 设备配置确认读卡器被识别为 NFC 设备 nfc-scan-device # 成功输出示例nfc-scan-device: found 1 device(s) # - device #0: ACR122U PICC Interface读卡器型号1.3 关键注意事项部分读卡器需sudo权限才能正常扫描如 ACR122U建议所有命令加sudo执行避免同时运行多个 NFC 工具如 pcscd、mfoc可能导致读卡器占用冲突扫描失败卡片需紧贴读卡器感应区距离不超过 1cm否则可能因信号弱导致扫描失败。2. 场景 1基础读卡器与卡片检测默认模式场景描述首次连接 NFC 读卡器如 ACR122U需快速确认读卡器是否被系统识别同时检测贴近的 MIFARE Classic 1K 卡片的基础信息UID、类型。# 步骤 1执行默认扫描无参数扫描所有协议 sudo nfc-list # 步骤 2分析输出结果分“读卡器信息”与“卡片信息”两部分 # 成功输出示例 # nfc-list uses libnfc 1.8.0 # NFC device: ACR122U PICC Interface opened # 1 ISO14443A passive target(s) found: # ISO/IEC 14443A (106 kbps) target: # ATQA (SENS_RES): 00 04 # UID (NFCID1): 12 34 56 78 # SAK (SEL_RES): 08 # Possible types: # MIFARE Classic 1K # MIFARE Plus (4 Byte UID or 4 Byte RID) # MIFARE Ultralight # 结果解析 # 1. 读卡器信息NFC device: ACR122U PICC Interface opened读卡器型号为 ACR122U已正常打开 # 2. 卡片信息ISO14443A 协议106 kbps、UID 为 12345678、可能类型为 MIFARE Classic 1K符合目标卡片。 # 步骤 3无卡片时的输出验证读卡器是否正常 # 移除所有卡片重新执行命令 sudo nfc-list # 输出示例 # nfc-list uses libnfc 1.8.0 # NFC device: ACR122U PICC Interface opened # No target found, try again无卡片读卡器正常 # 失败处理若提示“nfc-list: error while loading shared libraries” # 原因libnfc 库路径配置错误执行以下命令修复 sudo ldconfig # 刷新动态链接库缓存再重新执行 nfc-list3. 场景 2详细卡片信息分析verbose 模式场景描述已知卡片为 ISO14443A 协议但需获取底层通信参数如 ATQA、SAK、最大帧长度用于判断卡片具体型号如区分 MIFARE Classic 1K 与 Ultralight。# 步骤 1启用详细模式扫描-v 参数 sudo nfc-list -v # 步骤 2分析详细输出结果 # 成功输出示例MIFARE Classic 1K 卡片 # nfc-list uses libnfc 1.8.0 # NFC device: ACR122U PICC Interface opened # #0: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 68 (SENSB_RES) # 1 ISO14443A passive target(s) found: # ISO/IEC 14443A (106 kbps) target: # ATQA (SENS_RES): 00 04 - UID size: single (4 bytes) # UID (NFCID1): 12 34 56 78 - 4-byte UID # SAK (SEL_RES): 08 - Answer to select: fsd0x08 (16 bytes) # ATS: 07 80 80 00 00 00 00 - ATS length: 7 bytes # TL: 07 (7 bytes follow) # T0: 80 (FSCI00h (8 bytes), T0) # TA(1): 80 (FWI00h (4096/fc), SFGI00h (4096/fc)) # TB(1): 00 (PI100h, Protocol: ISO 14443-4) # TC(1): 00 (NAD supported: no, CID supported: no) # Historical bytes: 00 00 00 # Max Frame Size (FSD): 128 bytes # Possible types: # MIFARE Classic 1K # MIFARE Plus (4 Byte UID or 4 Byte RID) # 关键参数解析 # - ATQA00 04卡片应答请求MIFARE Classic 1K 典型值 # - SAK08选择应答表明卡片为 MIFARE 非加密或 Classic 类型 # - ATS07 80 80 00 00 00 00协议激活应答包含数据传输参数 # - Max Frame Size128 bytes最大帧长度Classic 系列特征。 # 对比MIFARE Ultralight 卡片的详细输出差异 # 若为 Ultralight 卡片SAK 通常为 00且无 ATS 响应因不支持 ISO14443-4 协议可据此区分类型。 # 步骤 3记录关键参数用于后续工具适配 # 例如将 UID 与 SAK 记录到文件供 mfoc 破解时参考 sudo nfc-list -v | grep -E UID|SAK card_info.txt4. 场景 3指定协议类型扫描过滤无关卡片场景描述测试环境中存在多种协议的 NFC 卡片如 ISO14443A 的 MIFARE 卡、ISO14443B 的二代身份证需仅扫描 ISO14443A 协议卡片避免其他卡片干扰检测结果。# 步骤 1明确目标协议的位域值ISO14443A 对应 1 # 参考“协议类型位域表”确认仅扫描 ISO14443A 需 X1 # 步骤 2执行指定协议扫描-t 1 参数 sudo nfc-list -t 1 # 步骤 3验证过滤效果 # 情况 1贴近 ISO14443A 卡片如 MIFARE Classic # 输出示例正常识别 # nfc-list uses libnfc 1.8.0 # NFC device: ACR122U PICC Interface opened # 1 ISO14443A passive target(s) found: # ISO/IEC 14443A (106 kbps) target: # UID (NFCID1): 12 34 56 78 # Possible types: MIFARE Classic 1K # 情况 2贴近非 ISO14443A 卡片如 ISO14443B 的二代身份证 # 输出示例不识别符合过滤要求 # nfc-list uses libnfc 1.8.0 # NFC device: ACR122U PICC Interface opened # No target found, try again # 进阶场景同时扫描 ISO14443A 与 Felica (212 kbps) 协议 # 位域值1ISO14443A 2Felica 212 kbps 3 sudo nfc-list -t 3 # 贴近 Felica 卡片时会正常识别贴近 ISO14443B 卡片时无输出5. 场景 4批量卡片 UID 读取快速收集标识场景描述需批量读取 10 张 MIFARE 卡片的 UID用于资产登记通过脚本自动化执行 nfc-list 并提取 UID避免手动记录错误。# 步骤 1创建批量读取脚本read_uid_batch.sh cat read_uid_batch.sh EOF #!/bin/bash # 批量读取 NFC 卡片 UID支持自动跳过空读 output_filecard_uids.txt echo 开始批量读取 UID共 10 张卡片... \$output_file for ((i1; i10; i)) do echo 请插入第 \$i 张卡片30 秒内... # 使用 timeout 限制单张卡片读取时间30 秒提取 UID 行 uid\$(timeout 30s sudo nfc-list -t 1 | grep UID (NFCID1): | awk {print \$4\$5\$6\$7}) if [ -n \$uid ]; then echo 第 \$i 张卡片 UID: \$uid \$output_file echo 第 \$i 张卡片读取成功\$uid else echo 第 \$i 张卡片读取失败超时或非目标卡片 \$output_file echo 第 \$i 张卡片读取失败请重试... i\$((i-1)) # 失败重试当前序号 fi echo 请移除卡片准备下一张... sleep 3 # 等待移除卡片 done echo 批量读取完成结果已保存至 \$output_file EOF # 步骤 2赋予脚本执行权限 chmod x read_uid_batch.sh # 步骤 3运行脚本批量读取 ./read_uid_batch.sh # 执行流程 # 1. 依次提示插入第 1-10 张卡片每张卡超时 30 秒 # 2. 成功读取后提取 UID如 12345678并保存到 card_uids.txt # 3. 失败时自动重试当前序号确保 10 张卡均被处理 # 4. 完成后可查看文件cat card_uids.txt。 # 脚本优化建议 # - 若卡片为其他协议修改 -t 参数如 ISO14443B 需 -t 8 # - 增加错误日志记录便于排查读取失败的卡片。四、常见问题与解决方案常见问题可能原因解决方案“nfc-list: ERROR: Unable to open NFC device”无法打开读卡器1. 读卡器未插入或未被系统识别2. 读卡器被其他进程占用如 pcscd3. 权限不足1. 重新插拔读卡器lsusb确认设备存在2. 关闭占用进程sudo systemctl stop pcscd3. 加sudo执行命令sudo nfc-list“No target found, try again”无卡片但实际已贴近1. 卡片距离读卡器过远超过 1cm2. 卡片协议与扫描类型不匹配如用 -t 1 扫描 ISO14443B 卡片3. 卡片损坏或无电被动式标签无需供电此情况少见1. 将卡片紧贴读卡器感应区2. 取消协议过滤默认 -t 1023或修改对应协议类型3. 更换其他卡片测试确认是否为卡片问题“invalid bitfield X”-t 参数值无效1. X 为非数值如字母2. X 超过有效范围大于 1023 或小于 13. 依赖协议未包含如单独使用 -t 16 而未加 81. 确保 X 为十进制数字2. X 范围限制为 1-10233. 若使用 16/32/64/128需叠加 8如 -t 24 表示 816详细模式-v无额外信息输出1. 工具版本过旧部分旧版 libnfc 不支持详细输出2. 读卡器不支持获取底层参数1. 更新 libnfc 库sudo apt upgrade libnfc-bin2. 更换兼容性更好的读卡器如 ACR122U扫描结果不稳定有时识别有时不识别1. 卡片与读卡器接触不良2. 读卡器供电不足USB 接口供电不稳定3. 环境存在电磁干扰1. 确保卡片平整贴合读卡器2. 将读卡器插入主机后置 USB 接口避免 Hub 供电不足3. 远离强电磁源如微波炉、电机五、注意事项与安全规范合法使用边界仅可对自己合法拥有或获得明确授权的 NFC 卡片/设备执行扫描如个人物品、测试设备禁止在公共场所未经允许扫描他人 NFC 卡片如手机、门禁卡可能侵犯他人隐私或涉嫌违法如《个人信息保护法》。隐私保护要点卡片 UID 可能关联个人信息如门禁卡 UID 对应住户信息扫描后的数据需妥善保管禁止泄露或用于非法用途批量收集的 UID 列表需加密存储如gpg -c card_uids.txt避免成为攻击目标如复制门禁卡。工具局限性认知nfc-list 仅能读取卡片公开信息UID、类型等无法获取加密数据或密钥需结合 mfoc、mfcuk 等工具对加密强度高的卡片如带动态加密的 NFC 卡可能无法识别 UID 或仅能获取部分信息。硬件兼容性建议优先选择支持 libnfc 库的读卡器如 ACR122U、PN532避免使用专有驱动的设备可能无法被 nfc-list 识别使用前通过nfc-scan-device确认读卡器型号在支持列表中减少兼容性问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467182.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!