Proxmark3 教程:从刷固件到 dump 门禁卡,15 秒恢复 MIFARE 密钥

做 RFID 安全研究,第一步往往是搞清楚一件事:你手里那张门禁卡、工卡、公交卡,到底是什么协议,芯片里存了什么,能不能被复制。

手机的 NFC 帮不了太多忙——它只能读 13.56MHz 的高频卡,125kHz 的低频门禁卡完全不支持;而且手机的安全沙箱不让你拿到完整的协议交互数据,更别想跑字典攻击。Flipper Zero 能读能写,但它是一把"瑞士军刀",RFID 只是众多功能里的一个,想做深层协议分析、抓原始波形、跑自定义攻击脚本,它的 Cortex-M4 就吃力了。

这时候你会搜到一个名字:Proxmark3

RfidResearchGroup/proxmark3(即 Iceman 分支)是 RFID 领域的专用分析仪。5.9k Star、1.4k Fork、22,248 次提交,硬件原理图、FPGA bitstream、ARM 固件、PC 端客户端全部开源(GPL-3.0)。它和上面两个工具的区别,一句话讲清楚:手机 NFC 是"读卡器",Flipper Zero 是"探索工具",Proxmark3 是"取证工具"。

是什么:软硬件三层架构

先把它拆开看,后面所有能力都建立在这套架构上:

Proxmark3 软硬件三层架构

  • PC 端pm3 命令行客户端,负责交互、彩色输出、TAB 补全、脚本执行
  • ARM Cortex-M4(NXP LPC4320):跑协议栈、解析命令、管理状态机、和 PC 通信
  • FPGA(Xilinx Spartan-6):负责高速信号的采集与生成。这是它和 Flipper Zero 拉开差距的关键——RFID 的调制波形是纳秒级的,靠 CPU 软件采样来不及,必须 FPGA 硬采
  • RF 前端:天线,覆盖 125kHz/134kHz 低频 + 13.56MHz 高频两套频段

把功能边界摊开对比:

功能 手机 NFC Flipper Zero Proxmark3
125kHz 低频卡 不支持 支持 支持
13.56MHz 高频卡 支持 支持 支持
原始信号抓取/波形分析 不支持 不支持 支持
已知密钥字典攻击 不支持 有限 完整硬加密密钥恢复
读取银行卡 EMV 数据 部分 不支持 支持
HF 嗅探(监听读卡器与卡片通信) 不支持 不支持 支持
自定义 LUA/Python 脚本 不支持 有限 全面支持
独立脱机模式 不支持 支持 支持

环境准备:编译并刷入固件

克隆 Iceman 分支,直接 make 编译。依赖主要是 libusbreadline 这些常规库,Linux 下装好 libreadline-dev libusb-dev 就能编:

git clone https://github.com/RfidResearchGroup/proxmark3.git
cd proxmark3
make -j$(nproc)

# 插上 Proxmark3,刷入固件(bootloader + 全功能固件 + FPGA bitstream)
./pm3-flash-all

# 启动客户端
./pm3

pm3 启动后是一个带颜色和自动补全的命令行界面。看到 [usb] pm3 --> 提示符就说明固件刷好、设备识别正常、可以下命令了。

上手第一课:读一张低频门禁卡

把一张低频门禁卡放在天线上,两行命令:

[usb] pm3 --> lf search

[=] Chipset... T55xx
[=] Reading page 0 ................. OK
[=] Reading page 1 ................. OK

[+] EM 4x05 ID found.
[=] TAG ID: 0F036A1B2C

lf search 会自动识别低频卡类型并读取数据。T55xx 是可重写的模拟卡,EM4x05 是只读 ID 卡。注意那个 TAG ID 是明文——拿这个 ID 就能复刻一张一模一样的门禁卡。

这个场景很小,但它直指 RFID 安全的核心问题:大部分低频门禁卡没有加密设计,ID 写在芯片里,读出来就能复制。

高频卡:读信息 + 恢复密钥

高频卡复杂一些。拿一张 MIFARE Classic 1K 公交卡:

[usb] pm3 --> hf 14a info

[+] UID: AA BB CC DD
[+] ATQA: 00 04
[+] SAK: 08 [2]
[+] TYPE: NXP MIFARE CLASSIC 1k
[+] Answers to magic commands: NO

MIFARE Classic 用 Crypto-1 加密算法,密钥空间只有 48 位,而且十几年前就被逆向出了完整算法。Proxmark3 内置了硬加密密钥恢复(hardnested,利用已知密钥的部分信息做嵌套认证攻击):

[usb] pm3 --> hf mf hardnested

[+] target sector: 0
[+] target block:  0 key A
[+] file size: 600
[+] time: 15 seconds

[+] Key found: A0A1A2A3A4A5

一个扇区的密钥,15 秒。拿到密钥就能 hf mf dump 整张卡,再把数据写到一张可写的 Magic 卡上——复刻一张完全一样的公交卡。到这里你能看出来,Proxmark3 做的不是"读卡",而是"理解这张卡的全部协议层"。

四个实战场景

门禁系统渗透测试。 125kHz 低频卡(EM4100、HID Prox、Indala)没有安全设计,零门槛读写。13.56MHz 的 MIFARE Classic 有 Crypto-1 加密,但 Proxmark3 内置了 darkside、hardnested、staticnested 三种攻击方式,配合自带密钥字典(几百个已知默认密钥),用默认密钥的老旧系统几秒内出结果。

银行卡 EMV 数据读取。 把支持 PayPass/PayWave 的银行卡贴上去:

[usb] pm3 --> emv scan -a

[+] Card number: 5412 34** **** 6789
[+] Application: VISA CREDIT
[+] Expiration: 12/28
[+] Recent transactions: (显示最近几笔交易金额和日期)

读出来的是卡上存储的公开数据(卡号、有效期、最近交易记录),不是 CVV,不是完整 PAN,不能用于支付。这里是走 EMV 标准协议读取卡上自愿暴露的信息,拿来检查自己的卡有没有把不该暴露的数据放到非接触接口,是个好习惯。

HF 嗅探。 hf 14a sniff 进入嗅探模式,把 Proxmark3 放在工位读卡器和工卡之间,能把读卡器与卡片之间的全部 ISO 14443-A 协议帧抓下来——每一帧指令、每一条数据、每一次认证,全部明文记录。这是门禁安全审计和协议逆向的基础工具。

门禁卡复制与仿真。 拿到密钥后 hf mf dump 存成 .bin 文件,再用 hf mf restore 写到一张 UID 可修改的 Magic 卡上,一张卡变另一张卡的完美镜像。注意:这是安全研究工具,使用前确认你有合法授权。

硬件选型:RDV4 还是国内克隆版

Proxmark3 的硬件生态分两层:

版本 Flash 天线 蓝牙 价格
官方 RDV4 256KB 可更换(LF 125/134kHz 切换 + Q 值调节) 支持(FPC 接口) $60-80
国内 RDV3 Easy 克隆版 256KB / 512KB 两种 不可更换 ¥120-200

选型建议:入门学 RFID 安全,国内克隆版够用;稳定做安全审计,上 RDV4。天线质量直接影响读写距离和稳定性,这是国内克隆版最大的变量。

一个关键坑:256KB 版本装不下 Iceman 全功能固件(固件超过 256KB),编译时要裁剪部分功能,裁剪方法见仓库的 Advanced Compilation Parameters。想省事直接买 512KB 版。

局限与踩坑

MIFARE DESFire / EV2 是硬骨头。 DESFire 用 AES-128 加密和 3DES 认证,Proxmark3 硬件上不支持 AES 加速,没有硬解能力,只能靠协议交互提取公开信息。密钥是随机生成的,读不出来就是读不出来。

UID 可修改的 Magic 卡越来越难买。 NXP 在持续收紧 Magic 卡的生产和销售,现在能买到的多是旧批次库存,价格在涨(带可写 UID 的 MIFARE Classic 卡约 ¥15-25 一张,几个月前可能 ¥8-12)。这个趋势继续下去,连训练用的卡片都会成问题。

高频 ISO 14443-B 和 ISO 15693 支持有限。 二代身份证走的是 14443-B Type B,Proxmark3 对这部分的支持不如 14443-A 完善,读身份证 SAM 模块的协议交互需要额外调试,不是开箱即用。

命令行入门的门槛。 Proxmark3 的核心交互是 CLI,虽然 Iceman 分支加了彩色输出、TAB 补全、Hint 提示,但它不是图形界面。想用好它,得先理解 ISO 14443 的帧结构、RFID 的认证流程、MIFARE 的存储布局。

不是法外工具。 未经授权复制他人门禁卡、读取他人银行卡数据、嗅探他人设备通信,在大多数国家和地区都违法。这是安全研究工具,使用前提是合法授权。

总结

Proxmark3 解决的是一个很具体的痛点:当你想"看懂一张 RFID 卡在说什么",而不是"把卡读出来"时,手机 NFC 和 Flipper Zero 都不够用。它把 FPGA 硬采样和完整协议栈做进一台巴掌大的设备里,代价是几百块人民币 + 一个 CLI 的学习成本。

git clonemake./pm3-flash-all 到敲下 lf search,把门禁卡往天线上一放,你就看到了这张卡片对这个世界说的每一句话。

我的公众号「LabHub」
这类文章我会先在公众号发布(含更多步骤和配图),微信搜一搜直接搜「LabHub」就能找到。
关注后每周都有新折腾:拆设备、玩无线电、刷固件、变废为宝。
posted @ 2026-08-18 19:00  LabHub  阅读(2)  评论(0)    收藏  举报