资讯详情

资讯详情

Proxmark3 RDV4.01:Windows 11 下 Iceman 固件升级与完整使用指南

1. 前言Proxmark3 是一款开源的 RFID/NFC 协议研究设备支持高频HF和低频LF射频技术可用于卡片识别、协议分析、通信监听、射频信号采样及授权安全测试。本文使用 Proxmark3 RDV4.01原设备使用较旧的 Iceman 固件导致 Windows 11 上最新版客户端无法正常连接。通过搭建 ProxSpace 开发环境重新编译 RRG/Iceman 固件并分别升级 BootROM 和 Fullimage最终完成固件更新。本次实测结果项目配置设备Proxmark3 RDV4.01操作系统Windows 11 64 位编译环境ProxSpace 3.12 / MINGW64固件RRG/Iceman版本v4.23346-108-ga48ce253fMCUAT91SAM7S512 Rev A内部 Flash512 KBFPGAXilinx Spartan-2 XC2S30通信方式USB CDCCOM 端口COM9本次实测客户端Iceman Proxmark3 Client注意本文的刷写步骤针对上述设备其他 Proxmark3 硬件版本不能直接套用。固件刷写存在风险请先确认硬件型号和镜像兼容性并仅在授权的设备和卡片上开展测试。2. Proxmark3 RDV4.01 硬件介绍RDV4.01 是面向 RFID 协议分析和安全研究的 Proxmark3 硬件版本。主要硬件组成包括ARM7 微控制器 AT91SAM7S512Xilinx Spartan-2 FPGA高频 13.56 MHz 射频收发电路低频 125/134.2 kHz 射频电路USB 通信接口外部 SPI FlashISO7816 接触式智能卡扩展模块BootROM 模式按钮及 LED 指示灯。本次设备还识别到了外部 Flash 与智能卡模块。它与普通 USB NFC 读卡器最大的区别是能够在射频协议层进行监听、采样和分析而不仅是调用应用层接口读取卡片。3. 软件准备和下载3.1 下载 ProxSpaceWindows 下推荐使用 ProxSpace 运行 RRG/Iceman 的编译工具链。下载地址https://github.com/Gator96100/ProxSpace进入 Releases 页面下载适合 Windows 的版本。将文件解压例如D:\ProxSpace-3.12\建议安装路径不要包含空格或中文字符。3.2 启动 ProxSpace进入解压目录找到runme64.bat双击启动。首次启动时ProxSpace 会下载并安装所需依赖包括GitMakeGCCARM GCC 交叉编译器MSYS2 / MinGW各种依赖库第一次启动可能需要较长时间。下载和安装完成后会进入 Bash 命令行界面出现类似提示符pm3 /d/ProxSpace-3.12$注意ProxSpace 使用 Bash 命令与 Windows CMD 不完全相同。3.3 下载 RRG/Iceman 源码官方 GitHubhttps://github.com/RfidResearchGroup/proxmark3在 ProxSpace 中执行cd /d/ProxSpace-3.12 git clone https://github.com/RfidResearchGroup/proxmark3.git cd proxmark3检查源码git status git rev-parse HEAD建议记录当前 Git 提交版本便于后期复现构建。4. 编译 Proxmark3 RDV4 固件4.1 指定硬件平台对于 RDV4.01使用make -j4 PLATFORMPM3RDV4其中make调用构建系统-j4最多使用四个并行任务PLATFORMPM3RDV4指定 RDV4 硬件平台。如果此前修改过硬件平台参数需要先清理旧构建产物再重新编译。4.2 编译生成的主要文件编译成功后主要文件包括proxmark3/ ├── bootrom/ │ └── obj/ │ └── bootrom.elf ├── armsrc/ │ └── obj/ │ └── fullimage.elf ├── client/ │ └── proxmark3.exe ├── pm3 ├── pm3-flash-bootrom └── pm3-flash-fullimage各文件用途文件功能bootrom.elfBootROM 引导程序镜像fullimage.elf主固件及相关 FPGA 镜像proxmark3.exeWindows 上位机客户端pm3自动检测设备并启动客户端pm3-flash-bootromBootROM 刷写脚本pm3-flash-fullimage主固件刷写脚本4.3 本次遇到的编译错误第一次编译时出现make[2]: cc: No such file or directory原因是主机端 C 编译器不存在或未正确配置到 PATH。需要区分两种编译器arm-none-eabi-gcc编译 ARM 固件gcc/cc编译 Windows 主机端工具。在本次 MINGW64 环境中安装 GCCpacman -S --needed mingw-w64-x86_64-gcc注意如果使用 UCRT64应该安装对应的 UCRT64 软件包不要混用。验证gcc --version cc --version which cc随后重新执行make -j4 PLATFORMPM3RDV4检查退出码echo $?本次实测返回0代表构建命令成功。本次固件构建日志中还显示Firmware size: 496525 bytes (484kb) 94% of 512kb表示固件已接近目标 Flash 容量上限但构建系统检查通过。5. Windows 11 驱动安装与 COM 端口检查5.1 连接 Proxmark3使用支持数据传输的 USB 线将 RDV4.01 连接到电脑。Windows 11 通常可以通过内置 USB CDC 驱动识别设备。打开设备管理器 └── 端口COM 和 LPT本次设备显示USB 串行设备 (COM9)5.2 使用 PowerShell 查看 USB 设备信息打开 Windows PowerShell而不是 CMD。运行Get-CimInstance Win32_PnPEntity | Where-Object { $_.Name -match COM9 } | Format-List Name,Manufacturer,DeviceID本次实测结果Name : USB 串行设备 (COM9) Manufacturer : Microsoft DeviceID : USB\VID_9AC4PID_4B8F\ICEMAN说明 Windows 已为设备分配 COM9。其中Manufacturer: Microsoft通常表示当前使用微软提供的驱动并不代表设备由微软制造。5.3 使用客户端自动检测串口在 ProxSpace 中./pm3 --list可以列出检测到的 Proxmark3 端口。如果重新刷写 BootROM 或改变 USB 连接方式Windows 可能重新分配 COM 端口。因此不要始终假设设备是 COM9。6. 首次连接 Iceman 客户端在源码根目录执行./client/proxmark3.exe COM9也可以通过./pm3自动检测串口。本次首次连接出现[] Using UART port COM9 unknown command:: 0x61334d50 [!!] ERROR: cannot communicate with the Proxmark3当时原因主要指向原设备固件较旧与新客户端通信协议不兼容。注意这类错误不一定意味着设备损坏。应先检查USB 驱动和 COM 端口客户端是否正常运行客户端和固件版本是否一致是否使用正确的平台构建BootROM 是否需要单独升级。7. RDV4.01 BootROM 升级7.1 什么是 BootROMBootROM 是设备启动和固件恢复的重要引导程序。正常情况下Proxmark3 通电后由 BootROM 启动主固件。当主固件损坏或者无法正常运行时可以尝试通过 BootROM 模式重新刷写主固件。BootROM 本身也可以升级但风险高于普通主固件升级。如果 BootROM 损坏可能需要 JTAG 编程器才能恢复。7.2 判断是否为旧版 BootROM本次升级前观察到按住 RDV4.01 按钮插入 USBA/C 灯亮松开按钮A/C 熄灭D 灯亮Windows 仍识别 COM9。这种表现符合较旧 BootROM 的典型特征。RRG 官方说明部分旧版 BootROM 无法直接处理较大的新版主固件镜像需要先升级 BootROM再升级 Fullimage。7.3 升级前检查与备份首先确认ls -lh bootrom/obj/bootrom.elf ls -lh armsrc/obj/fullimage.elf本次实测bootrom.elf 16K fullimage.elf 470K然后保存镜像、源码版本和校验值mkdir -p /d/rdv4-backup cp bootrom/obj/bootrom.elf /d/rdv4-backup/ cp armsrc/obj/fullimage.elf /d/rdv4-backup/ git rev-parse HEAD /d/rdv4-backup/commit.txt sha256sum bootrom/obj/bootrom.elf \ armsrc/obj/fullimage.elf \ /d/rdv4-backup/checksums.txt必须说明这些是新固件镜像的备份并非设备原厂固件备份。如果需要恢复原厂系统必须另外取得匹配的原厂镜像。即使取得完整镜像BootROM 损坏时仍可能需要 JTAG。7.4 进入 BootROM 模式操作拔下 USB按住 Proxmark3 按钮保持按住插入 USB确认 A/C 指示灯亮检查 Windows 是否识别 COM 端口。如果是旧版 BootROM可能需要在整个刷写过程中持续按住按钮。7.5 刷写 BootROM以下命令会实际修改引导程序仅适用于已经确认兼容、具备恢复方案的 RDV4 设备cd /d/ProxSpace-3.12/proxmark3 ./client/proxmark3.exe -p COM9 \ --flash --unlock-bootloader \ --image bootrom/obj/bootrom.elf本次日志出现Your bootloader is outdated, but this operation will update it Bootloader does not support CMD_CHIP_TYPE, assuming AT91 platform Flashing... Writing segments for file: bootrom/obj/bootrom.elf All done说明刷写工具识别到旧版 BootROM并报告新镜像写入完成。注意All done是刷写程序完成的标志仍需要重新启动设备验证。7.6 验证新版 BootROM拔掉 USB重新按住按钮插入。本次升级后A/C 灯亮松开按钮后 A/C 仍然保持亮起Windows 仍然识别 COM9。符合新版 BootROM 保持引导模式的典型行为。8. Fullimage 主固件升级8.1 第一种方式指定 COM 端口进入 BootROM 模式后./client/proxmark3.exe -p COM9 \ --flash \ --image armsrc/obj/fullimage.elf本次第一次尝试出现ERROR: invalid serial port COM9 Could not find Proxmark3 on COM9 Aborted on error原因是在刷写工具尝试连接时Windows 端口尚未处于可用状态。8.2 第二种方式自动检测端口重新进入 BootROM确认 A/C 灯持续亮起后./pm3 --list确认设备端口。然后执行./pm3-flash-fullimage该脚本会执行主固件刷写。本次实测出现[] All done [] Have a nice day!表明主固件刷写程序成功完成。8.3 刷写注意事项不要在刷写期间拔掉 USB避免使用供电不稳定的 USB Hub确认 BootROM 与 Fullimage 针对同一个平台不应随意添加--force不要反复刷写已经成功的 BootROMBootROM 已经升级成功时通常只需要更新 Fullimage。9. 验证升级结果刷写完成后拔掉 USB正常插入设备不要按 BootROM 按钮。在 ProxSpace 中./pm3本次成功显示Communicating with PM3 over USB-CDC MCU....... AT91SAM7S512 Rev A Memory.... 512 KB Target.... RDV4 Client.... Iceman/master/v4.23346-108 Bootrom... Iceman/master/v4.23346-108 OS........ Iceman/master/v4.23346-108说明客户端、BootROM 和主固件已经可以正常通信。9.1 查看版本hw version能够查看Client 版本BootROM 版本ARM 固件版本FPGA 镜像硬件型号MCU 和 Flash 信息是否存在智能卡模块。9.2 查看硬件状态hw status本次实测BigBuf_size............. 32748 Emulator memory......... 8192 Tracing................. yes Flash Init.............. ok还显示外部 Flash、智能卡模块及其他状态。其中智能卡模块报告version........ v3.10 (Outdated)表示接触式智能卡扩展模块固件较旧不代表 Proxmark3 主固件升级失败。9.3 测试天线运行hw tune本次设备结果LF: 125.00 kHz .......... 56.98 V 134.83 kHz .......... 37.44 V LF antenna .......... ok HF: 13.56 MHz ........... 47.43 V HF antenna .......... ok这些结果表示设备报告天线基本工作正常。注意hw tune不会自动调整匹配电路测量应尽量避免卡片靠近天线显示电压不代表读卡距离不能用它代替 VNA 或示波器测量天线阻抗、谐振和信号质量。10. Iceman 客户端基础操作10.1 启动客户端cd /d/ProxSpace-3.12/proxmark3 ./pm3或者指定串口./client/proxmark3.exe -p COM9成功连接后[usb] pm3 --10.2 查看帮助help hw help hf help lf help trace help script help子命令还可以通过-h查询参数。例如hf 14b sniff -h10.3 退出客户端quit或exit具体以当前客户端命令帮助为准。11. 高频 RFID 功能13.56 MHzProxmark3 RDV4 支持多种高频协议。11.1 常见协议协议常见用途ISO14443A常见 NFC、IC 卡ISO14443BType B 卡、部分身份识别系统ISO14443-4高层 APDU 通信ISO15693工业标签、资产管理MIFARE Classic部分门禁、旧式交通卡MIFARE UltralightNFC 标签MIFARE DESFire安全智能卡系统FeliCaNFC-F 系统iCLASS部分门禁系统具体卡片是否可读取、模拟或写入取决于型号、访问权限和安全机制。11.2 自动检测高频卡片hf search用于识别常见高频标签。11.3 ISO14443Ahf 14a help hf 14a info查看 ISO14443A 标签信息。11.4 ISO14443Bhf 14b help hf 14b info查看 Type B 标签相关信息包括发现与协议参数。11.5 ISO15693hf 15 help hf 15 info适用于 ISO15693 标签识别和协议分析。11.6 MIFAREhf mf help hf mfu help其中hf mf主要面向 MIFARE Classichf mfu面向 Ultralight/NTAG 等相关类型。实际操作前应确认目标标签类型和授权范围。12. 低频 RFID 功能125 / 134.2 kHzRDV4 可以用于低频标签检测、采样和协议分析。支持的技术包括部分 EM4x、HID Prox、T55xx、Hitag 等。常用命令lf help lf search lf read自动检测低频标签lf search采集低频信号lf read查看图形工具data help图形和解调命令可以帮助分析低频信号编码和数据结构。在开始低频实验前应使用合适的 LF 天线并确认需要测试的工作频率。13. ISO14443B 射频抓包实战这是本次设备升级后已经实际验证过的功能。13.1 工作原理Proxmark3 可以被动监听 Type B 卡片与读卡器之间的射频交互。简化流程读卡器 卡片 | | |------ REQB ------------| |----- ATQB -------------| | | |------ ATTRIB ----------| |----- ATTRIB响应 -------| | | |------ APDU ------------| |----- APDU响应 ---------|REQB 用于 Type B 卡片发现。ATQB 返回卡片标识和协议能力信息。ATTRIB 用于卡片激活和协议参数设置。后续 APDU 用于应用选择、认证或数据交换具体由卡片应用和安全机制决定。13.2 开始抓包首先hf 14b sniff -h查看参数。然后hf 14b sniff将 Proxmark3 高频监听天线置于授权测试卡片和读卡器附近的有效耦合区域。使用读卡器完成一次正常操作。按照客户端提示结束监听。本次版本提供设备按钮停止监听的方式。13.3 查看捕获报文hf 14b list输出示例Start | End | Src | Data | CRC | Annotation Rdr | 05 00 00 71 FF | ok | REQB Tag | 50 00 ... | ok | Rdr | 1D 00 ... | ok | ATTRIB Tag | 08 30 7C | ok |字段解释字段说明Start帧开始时间End帧结束时间SrcRdr 或 TagData十六进制数据CRCCRC 检查结果Annotation协议解析结果对于 ISO14443B时间单位通常是 13.56 MHz 载波周期。13.4 识别 APDU例如00 A4 00 00 02 60 02是 ISO7816 风格的应用/文件选择命令。再如80 B0 00 00 20属于读取数据相关的 APDU 形式。卡片返回90 00通常表示该条 APDU 成功完成。但注意一条 APDU 成功不代表整个身份证读取流程成功。13.5 CRC 错误说明如果出现CRC !!表示 Proxmark3 对捕获帧的 CRC 检查失败。可能原因监听天线位置不佳信号过弱场强或耦合不稳定数据帧被截断被动监听设备出现漏帧实际射频通信存在错误。被动监听检测到 CRC 错误不代表真实读卡器也一定接收到了错误数据。在实际分析中应该把 Proxmark3 的抓包与读卡器固件返回码结合起来判断。14. 保存和分析抓包数据14.1 保存 TXT 日志Iceman 会自动记录会话日志。本次 Windows 环境中的日志目录D:\Cadence\SPB_Data\.proxmark3\logs\文件示例log_20261010092143.txt可以使用 VS Code 或记事本查看。运行hf 14b list后相关文本输出通常会记录在会话日志里。注意日志可能包含多个命令或多次抓包内容要确认实际分析的是哪一次采集。14.2 保存原始 Trace在 Iceman 中运行trace save -h查看保存参数。常见用法trace save -f test_14b原始 Trace 可以在之后重新加载分析。14.3 加载 Tracetrace load -h根据当前客户端版本提供的参数指定保存的文件。随后使用hf 14b list重新解析捕获记录。14.4 推荐的实验文件结构RFID_Research/ ├── card_A/ │ ├── test1.txt │ ├── test2.txt │ ├── test3.txt │ └── trace/ ├── card_B/ │ ├── test1.txt │ ├── test2.txt │ ├── test3.txt │ └── trace/ ├── reader_A/ ├── reader_B/ └── comparison/建议同时记录读卡器型号测试卡片编号使用匿名编号天线位置和距离读卡结果错误码固件版本抓包时间。涉及身份证等敏感证件时应限制日志访问权限并对个人信息进行脱敏处理。15. 射频诊断和协议分析功能15.1 检测外部读卡器hw detectreader用于检测附近是否存在外部读卡器射频场。15.2 高频信号采样与绘图hf help data help当前固件还提供部分 HF 绘图和波形处理功能。15.3 低频波形分析lf read data plot可以对支持的低频信号进行采样和可视化。15.4 分析时序hf 14b list的时间戳可以用于分析REQB 重试间隔卡片响应延迟ATTRIB 建立过程APDU 命令发送间隔读卡器重新寻卡通信中断或重启。对于 CLRC663 驱动开发可以将 Proxmark3 抓包与 MCU 中的寄存器状态、IRQ 和错误码对应起来。不过Proxmark3 的被动抓包结果不是绝对无误的射频记录不能替代射频示波器、VNA 或读卡器内部日志。16. 卡片模拟功能RDV4 支持多个协议下的卡片模拟功能。例如hf 14a sim -h hf 14b sim -h hf 15 sim -h这些功能可用于自有测试标签协议兼容性测试实验室读卡器调试测试协议状态机模拟符合相应功能范围的测试响应。模拟功能不等于能够完整复制受密码学保护的卡片。对于居民身份证等受保护证件无法仅凭一般 UID、ATQB 或公开协议帧重现完整身份认证与安全数据读取流程。17. 接触式智能卡与扩展功能当前 RDV4 检测到 ISO7816 智能卡模块。查看功能smart help smart info可用于支持的接触式智能卡识别与协议分析。但本次设备报告模块固件v3.10 (Outdated)因此具体高级功能需检查模块固件兼容性。其他功能包括Lua 脚本script help script list用于组织重复性测试。Python 支持本次 Windows 客户端已经编译 Python 脚本支持可用于自动化分析和数据处理。外部 Flash设备具备外部 SPI Flash可支持部分字典、数据文件及独立运行模式所需的存储功能。Standalone 模式设备可以在特定固件配置下执行无需持续连接电脑的独立程序。本次固件配置中已安装的是 LF HID26 SamyRun 模式不代表所有抓包功能都可以脱机运行。18. 常见故障与解决方法故障可能原因建议cc: No such file or directory主机 GCC 缺失检查 GCC 和 PATHproxmark3.exe退出码 127DLL 或运行环境异常检查ldd和 MSYSTEM找不到 COM 端口USB 驱动或串口号变化检查设备管理器0x61334d50客户端与旧固件协议不兼容核对版本cannot communicate固件、端口或握手异常检查 BootROMinvalid serial port设备尚未重新枚举重新进入 BootROM 并检测端口Fullimage 无法刷写BootROM 太旧或端口问题先检查 BootROMhw tuneHF 异常天线连接或硬件问题检查连接和射频硬件抓包只有 Rdr未收到或未解码 Tag 信号调整监听位置并复测CRC 错误较多RF 接收质量不足或漏帧调整实验条件smart模块版本旧模块独立固件旧核对对应升级资料恢复主固件如果主固件损坏但 BootROM 仍然正常按住按钮插入 USB确认引导模式 LED使用./pm3 --list检查端口使用官方pm3-flash-fullimage流程恢复。如果 BootROM 已损坏且不能进入引导模式则可能需要通过 JTAG 恢复。19. 推荐的日常使用流程不需要每次启动都重新编译或刷写。日常操作第一步连接 USB。第二步启动 ProxSpace。双击runme64.bat第三步进入源码目录。cd /d/ProxSpace-3.12/proxmark3第四步启动客户端。./pm3第五步执行功能命令。例如hw version hw status hf search hf 14b help第六步根据测试目标采集数据。例如在授权的 ISO14443B 测试环境中hf 14b sniff hf 14b list第七步保存日志和 Trace。使用客户端日志及trace save。20. 总结本次 Proxmark3 RDV4.01 从旧版原厂固件升级到 RRG/Iceman 的完整过程可以归纳为配置 Windows 11 ProxSpace下载 RRG/Iceman 源码修复缺少 GCC 的编译环境问题通过PLATFORMPM3RDV4编译确认 USB CDC 驱动和 COM 端口发现旧固件与新版客户端不兼容手动进入旧版 BootROM单独升级 BootROM重新进入新版 BootROM刷写 Fullimage验证客户端、BootROM、ARM 固件和 FPGA检查 HF/LF 天线验证 ISO14443B 抓包保存和分析通信记录。最终设备能够正常连接新版 Iceman 客户端完成硬件状态检测和 ISO14443B 双向通信监听。对于 RFID 开发特别是 CLRC663 相关系统Proxmark3 的价值在于提供独立的协议观测能力帮助分析读卡器和标签之间的真实交互。它既是一套 RFID 协议实验平台也是一款非常实用的嵌入式射频调试辅助工具。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →