从RFID到M1卡:用PM3复制门禁卡全流程实战解析
小区单元门禁卡只有一张家里两口人轮流上下班卡在谁兜里谁才能进大门。物业补卡一张五十登记还要等三天这事搁谁身上都挺无语的。如果你也遭遇过这种“一卡难求”的时刻或者单纯对RFID/NFC门禁卡的工作原理好奇这篇内容就是给你准备的。我用手机NFC配合PM3读写器把自家门禁卡完整复制了一遍从识别卡型、读取密钥、导出数据到写入CUID复制卡整个流程走下来不到半小时。这篇文章会把每一步的原理、命令、参数和我在实操中踩过的坑全部拆开讲清楚尤其是M1卡、UID、CUID这三类卡的区别很多教程一句带过但恰恰是这些细节决定了复制卡能不能被门禁读出来。先做个必要的声明本文只适用于复制自己家的门禁卡、自己在实验室里的测试卡或者经物业/业主明确授权的设备。未经授权复制、破解他人的门禁卡用于绕过安全管理是违法行为。门禁卡安全研究是物联网安全领域的正经方向但前提是用途合法合规。1. 门禁卡与M1卡基础先把底层的原理讲清楚1.1 M1卡是什么为什么它“能”被复制门禁卡用到的技术本质上属于RFID射频识别NFC是RFID在高频13.56MHz频段的一个子集。两者关系可以简单理解为NFC是RFID的“近场加强版”兼容ISO 14443等标准而绝大多数门禁卡恰恰走的就是这个标准。M1卡全称MIFARE Classic 1K是NXP原飞利浦半导体在上世纪90年代推出的非接触式IC卡至今仍是门禁、校园卡、停车卡领域存量最大的卡种。M1卡之所以重要是因为它内部结构非常简单透明1KB存储空间被平均分成16个扇区每个扇区4个块每个块16个字节。其中第0扇区的第0块是厂商数据块里面固化了4字节的UID卡号、校验字节和厂商信息每个扇区的第3块则用来存放密钥A、访问控制位和密钥B。这种分区结构意味着整张卡的“秘密”就藏在密钥A/B的后面。为什么M1卡能被人用PM3复制根本原因在于它的认证算法CRYPTO1是1994年左右设计的加密强度放在今天已经完全不够看。研究人员早在2008年就公开了破解方法通过采集卡片认证过程中的随机数流结合线性反馈移位寄存器LFSR的特性可以在不接触密钥的情况下逆向出密钥。用大白话说这张卡在认证时会出现可预测的随机特征就像一把保险柜的锁芯虽然上了密码但每次开锁时都会泄露一部分密码信息反复几次就能把整把锁的密码推算出来。M1卡另一个特点是UID不可修改。原厂出厂的M1卡第0块的UID从生产那一刻就固化了任何读卡器都无法改写。这就衍生出了UID卡和CUID卡这两类“克隆专用卡”——它们本质上也是M1架构但故意把UID区域做成可写的专门用来给安全人员做复制测试。1.2 UID/CUID/UFUID到底有什么区别市面上卖“可复制卡”时最常看到的就是UID卡、CUID卡、UFUID卡这三种新手很容易买错写卡写到一半才发现卡不对。我直接用一个对比表来展示差异这是全篇最值得记住的地方之一。卡型UID可改0块是否能重复写用途常见坑原厂M1卡S50否否门禁/校园卡原卡买错了不能复制UID卡是部分锁死重新写0块很危险简单克隆一次性写完0块后卡可能直接报废CUID卡是是专门优化反复调试兼容性好写卡顺序不对导致数据异常UFUID卡是锁定前可改锁定后不可改模拟原厂行为锁死后不能再改从实际体验看我建议新手直接买CUID卡别在UID卡上省那几毛钱。原因很简单UID卡虽然也能改UID但很多低端UID卡的0扇区0块在写入一次后就会被硬件锁定后续就算你想修改数据也改不动了整张卡直接失去调试价值。而CUID卡在设计时就考虑了重复烧录的需求0块可以反复擦写哪怕写了一半发现密钥配错了、扇区数据不对也能清掉重写容错率高得多。还有一个常见误解是“UFUID卡比CUID卡更高级”其实两者方向不同。CUID卡适合反复调试UFUID卡则适合“调好之后上锁”——它锁定后的行为更接近原厂M1卡如果门禁系统的防复制检测比较严格UFUID卡的兼容性往往好于CUID卡。但UFUID卡一旦锁死就不能再改调试过程中如果发现问题就很麻烦。所以我的建议是手里没数的时候用CUID确认数据完全正确后再考虑迁移到UFUID。1.3 门禁系统为什么还在用M1卡抛开卡本身不谈很多人会问既然M1卡这么容易破解为什么门禁系统还在大规模使用这个问题的答案其实很现实存量和成本。全国范围内的老旧门禁系统存量极其庞大很多项目用的是十年前甚至更早的M1卡方案整套门禁终端和后台管理系统的更换成本不是物业或者小企业能轻易承担的。M1卡本身单价极低两三毛钱一张而升级到CPU卡或DESFire卡终端设备、密钥管理系统、发卡设备全部要换成本至少翻几倍。更重要的是门禁系统的安全性不只靠卡本身。实际门禁验证存在几种常见模式第一种最简单也是最常见的老式单元门只校验UID卡号。门禁终端读卡后比对后台白名单只要UID在里面就放行这种情况复制卡的难点全在“如何读取原卡UID”数据本身反而不重要。第二种除了校验UID还会读取某个扇区里的用户数据比如楼栋号、房间号、有效期并且用密钥A或密钥B做认证。这种门禁稍微复杂一点但只要拿到密钥并完整复制所有扇区数据复制卡依然有效。第三种后台校验UID白名单但卡的扇区数据与UID做了绑定。一旦修改UID其他扇区的校验码就会失效。这种情况就要靠PM3读取原卡所有扇区的原始数据原样写入复制卡才能通过。M1卡能被复制这件事本质上是因为门禁系统在设计时把“卡号”当成了身份凭证而没有引入更强的密码学校验。这也是为什么复制门禁卡成为物联网安全入门最受欢迎的实操项目之一——它足够简单又完整覆盖了“探测—读取—认证—写入”的闭环学一次就能理解RFID安全的核心逻辑。2. 装备准备与工具选型手机和PM3各能干哪些活2.1 手机NFC能做和不能做的事先说你手上现成的工具智能手机。现在绝大多数安卓手机都内置NFC模块苹果从iPhone 6开始也具备了NFC硬件。手机NFC能做的事情不少比如用“MIFARE Classic Tool”简称MCT这款App扫描卡片时可以看到卡片的UID、厂商信息和部分扇区的明文数据。我用MCT扫过自家的门禁卡第0扇区能直接读出来但其他扇区全部提示密钥认证失败——这就说明卡片是加密的手机NFC到此为止了。手机NFC读不出加密扇区的原因在于M1卡的扇区数据是受密钥保护的读卡器必须先通过CRYPTO1认证才能访问对应扇区。手机的NFC控制器只实现了标准的ISO 14443-4通信协议也就是NFC Forum定义的应用层协议并没有内置M1卡的私有认证算法和密钥处理能力所以遇到加密扇区就只有干瞪眼。再说手机“模拟门禁卡”功能。很多国产手机系统比如小米钱包、华为钱包都有一个“模拟门禁卡”入口支持直接复制门禁卡到手机。这个功能本质上是把手机NFC控制器当作一张硬模拟卡来用部分场景下确实能成功模拟。但限制也很明显只支持读取未加密或特定类型的卡很多型号只支持模拟“卡号型”门禁也就是只有UID校验的情况加密卡或者需要读取扇区数据的门禁系统手机模拟基本失败部分门禁终端对手机模拟的卡兼容性差能识别到信号但拒绝放行。如果有人告诉你“手机就能复制门禁卡”八九不离十是在说上面这种有限场景。而要想真正拿到M1卡的密钥并复制所有扇区数据还得靠专业读写器。2.2 PM3选购、固件与驱动Proxmark3以下简称PM3是RFID安全研究圈的“瑞士军刀”它能同时工作在低频125kHz和高频13.56MHz既能读卡写卡也能模拟卡还能嗅探读卡器和卡之间的通信过程。大家在网上搜“PM3”时最常看到的就是冰人固件Iceman这个词。冰人固件是目前社区最活跃的第三方固件它的最大价值在于把原本东一榔头西一棒子的命令行操作统一起来了增加了大量自动化命令。选购上市面上PM3主要有两个版本原版proxmark3 RDV4和各类克隆版比如“PM3 easy”。原版做工和射频性能更稳但价格贵不少。克隆版便宜功能基本一致新手完全可以用。我自己用的就是easy版烧上冰人固件之后日常读卡、写卡、破解都能胜任。固件烧录建议直接用冰人固件的最新release烧录前先确认PM3的flash空间和固件大小。PM3的flash是256KB冰人固件把所有功能打进一个镜像体积相对紧凑烧录方法在项目Release里有明确说明。烧录时记得保证连接稳定——如果烧到一半断电PM3会直接变砖虽然可以靠重新刷bootloader救回来但过程比较折腾能避免就避免。驱动方面Windows用户通常需要用到Zadig将PM3的USB接口驱动从系统默认驱动替换为WinUSB驱动。装好驱动后打开PM3客户端命令行工具输入hw tune测试硬件通信如果能正常返回天线调谐数据说明硬件连接和驱动都没问题。除了PM3还有一个PC端软件值得提一下NFC Reader Tool的电脑版。它可以配合ACR122U或PN532这类USB读卡器使用界面比命令行友好适合读取无加密卡和简单的数据分析。但ACR122U这类读卡器有一个致命短板——它不支持破解M1卡的密钥也没有嗅探功能。所以如果目标是复制加密门禁卡PM3依然是绕不开的核心设备。2.3 卡片与耗材准备除了读写器还需要准备几样东西CUID卡白卡或钥匙扣建议先买几个单价一般几块钱多买几张备用。白卡便宜钥匙扣壳厚方便携带。USB数据线PM3一般用Micro USB或Type-C注意线材质量决定通信稳定性。一台能装PM3客户端的电脑Windows最方便Linux和macOS也支持。耐心也很重要虽然整套流程跑通后很快但第一次操作可能会因为命令不熟、写卡顺序搞错而反复折腾。3. 实战从读卡到复制的全流程3.1 手机NFC快速扫描先判断卡是什么类型动手的第一步不是直接上PM3而是先用手机NFC快速识别卡片类型。我推荐装一个MIFARE Classic ToolMCT这款App在应用商店或者GitHub都能找到专门用于读写MIFARE Classic卡。打开MCT把卡片贴到手机背后NFC天线区域通常在后置摄像头附近App会自动弹出卡片信息。以我自己的卡为例扫描结果是这样的UIDA1B2C3D4 制造商NXP Semiconductors 卡类型MIFARE Classic 1K 已检测到的扇区0/16这说明手机只能免认证读取第0扇区其余15个扇区全被密钥保护。如果扫描时连第0扇区都读不了可能是卡片损坏或者你手里的卡根本就不是MIFARE Classic系列比如是MIFARE DESFire或CPU卡那后面的M1方案就不适用了。手机NFC在这里的真正价值是快速判断卡的类型和加密状态相当于医院的初步分诊。通过这一步你就能确定接下来的主攻方向如果是M1加密卡那就进入PM3流程。3.2 PM3连接与卡信息识别把PM3插上电脑打开PM3客户端然后把待复制的卡片放在PM3的天线面板上。第一件事永远是跑硬件自检hw tune这个命令会返回天线调谐的VSWR电压驻波比数据。数值太大说明天线匹配有问题一般处于低频段或高频段调谐良好。接下来用hf search让PM3自动扫描卡片hf searchPM3会自动识别卡的数量和类型。对M1卡结果通常显示“MIFARE Classic 1K”同时输出UID号码。这一步还可以确认卡的工作频率是否为13.56MHz防止把低频125kHz的停车卡当成NFC卡来折腾。hf search的输出里如果直接给出UID和卡类型说明PM3已经能和卡建立最基本的通信了。注意记录UID值后面核对写卡结果时会用到。3.3 用PM3破解M1密钥autopwn与字典拿到卡的基本信息后接下来是核心环节获取所有扇区的密钥。PM3冰人固件的hf mf autopwn命令把这件原本很麻烦的事简化成一条命令hf mf autopwn这条命令会自动执行三个阶段的破解第一阶段检查常见默认密钥。很多门禁卡在发卡时根本没有改密钥用的还是出厂默认值FFFFFFFFFFFF或者厂商常用的A0A1A2A3A4A5。如果运气好这一阶段就能把所有扇区密钥全部猜出来。第二阶段使用嵌套认证攻击nested attack。这是M1卡破解的核心算法之一原理是基于一个已经能认证通过的扇区利用CRYPTO1协议在认证过程中泄漏的信息层层推导出其他扇区的密钥。这个过程可能需要几十秒到几分钟取决于你原卡的密钥复杂程度。第三阶段如果在嵌套攻击中还是没有破解出所有扇区autopwn会尝试hardnested硬嵌套攻击这是一种更暴力的方式通过采集大量认证随机数用更深的密码学分析推导密钥。这一步非常费时间跑十几分钟甚至更久都有可能。破解完成后PM3会自动保存密钥存储格式一般是keys目录下的一组密钥文件。如果想确认破解结果可以用hf mf chk --dump这条命令会重新对卡片做一次密钥检查把所有成功认证的密钥打印出来。看到16个扇区的密钥A和密钥B都齐活了就可以继续下一步导出数据。如果autopwn跑完之后发现只有部分扇区能认证别慌这种情况不算罕见。先用能认证的扇区把能读的数据导出来再针对未破解的扇区单独跑hardnested。我遇到过一次某小区门禁卡的两个扇区密钥完全随机autopwn跑了将近四十分钟才全部拿到。耐心跑完别中途放弃。3.4 导出数据与写入复制卡密钥到手之后读全卡就是水到渠成的事。用PM3一条命令就能把整张M1卡的所有扇区数据导出来hf mf dump --dump这条命令会尝试用已知密钥读取全部16个扇区的数据并保存为.mfd文件默认文件名类似hf-mf-A1B2C3D4.mfd。这个文件就是原卡的完整“镜像”里面包含了UID、厂商数据、密钥区、访问控制位和业务数据。写卡前先把CUID卡放到PM3天线上执行hf mf restorerestore命令会把刚才dump出来的.mfd文件完整写入CUID卡。但这里有一个关键坑hf mf restore默认用密钥A写入如果CUID卡的某扇区密钥B和原卡不一致写入可能会失败。更稳妥的做法是先单独处理0扇区然后分扇区写入hf mf wrbl --blk 0 --key A --key FFFFFFFFFFFF -d 16字节十六进制数据 hf mf restore第一步写0扇区0块是为了确保UID正确。CUID卡的好处在这里体现得淋漓尽致——即使写0块失败还能重写如果用UID卡写0块失败意味着整张卡报废。写完后用hf mf dump --dump重新读一遍复制卡核对导出数据是否和原卡完全一致。核对的重点是UID、厂商代码和所有扇区数据。数据一致复制工作就算完成了大半。3.5 门禁测试与兼容性调试把复制好的CUID卡拿到门禁上实测。第一次刷的时候我还有点紧张直到听到“滴”一声、门锁弹开那一刻的成就感完全抵消了前面折腾的疲惫。但测试失败也很常见。如果复制卡刷不上按这个顺序排查检查UID是否一致。很多门禁系统只认UID如果CUID卡写入后UID被硬件自动改变门禁必然拒绝。检查扇区数据是否完整。用PM3把复制卡再dump一遍逐字节对比原卡。检查密钥是否写入了密钥区。CUID卡写入时如果某个扇区的密钥区被错误覆盖门禁就无法完成认证。如果以上都对还是失败考虑门禁终端是否做了防复制检测。有一些较新的门禁系统会检测卡片芯片的类型发现不是M1原厂芯片就会拒绝放行这种情况通常要换UFUID卡来模拟原厂行为。复制卡这件事跟版本兼容性较劲是常态。一次不行就多试几次关键是把背后的验证逻辑搞明白而不是瞎撞运气。4. 常见问题与排查技巧实录4.1 卡片识别失败或读卡距离太短手机NFC读不到卡、PM3也识别不了先别急着怀疑设备坏了。最常见的原因是卡片线圈断裂或损坏——很多钥匙扣里的M1卡因为长期弯折或受潮内部线圈已经断了。我的一个钥匙扣就遇到过这种情况手机NFC怎么贴都读不出来拆开一看线圈在注塑边缘处裂了一个口子。如果确定卡片物理损坏可以考虑重新绕制天线线圈。这里就有一件常被忽略的工具NFC圆形天线设计工具。这类工具可以根据目标频率13.56MHz、线圈圈数、内外径、线宽等参数估算线圈的等效电感帮你绕出一个能在目标频段谐振的替代线圈。虽然手工绕线圈调谐振对新手不太友好但如果你拆卡时把线圈弄断了又不想扔掉原卡这个方向值得研究。PM3读卡距离短也常见。PM3的天线有效感应范围通常在几厘米内如果你的卡套太厚或卡片偏离天线中心位置就可能读不到。把卡片贴着PM3外壳的天线区域平放稍微调整位置基本都能解决。4.2 破解出来的密钥不完整或无法完全读卡hf mf autopwn跑完如果有扇区没破解出来先检查是不是卡的类型选错了。一些新式的门禁卡虽然外观是卡片内部却是MIFARE DESFire或ISO 14443-4标准的高安全卡PM3对它们的处理方式完全不同。这类卡不具备M1卡的CRYPTO1弱点PM3的常规破解手段基本无效只能读取明文数据或走其他路子。如果确认是标准M1卡但某些扇区密钥始终拿不下可以先检查是否有至少一个扇区是默认密钥。只要有一个扇区能认证就用嵌套攻击去推导其他扇区。嵌套攻击需要已知一个有效密钥作为跳板如果所有扇区都改成了强密钥现实中概率不大那就只能上hardnested花时间换结果。还有一种情况是你手头的PM3固件版本比较旧缺少某些攻击模块。升级到冰人固件最新版本通常能解决绝大多数功能缺失的问题。4.3 写入CUID后无法读取或数据异常写卡失败最经典的场景就是写0扇区0块时不按顺序先写了其他扇区回头再写0块结果0块锁死或数据错乱。CUID卡虽然比UID卡抗造但也别乱造写卡顺序永远是先处理0块再写业务数据。如果CUID卡写完后PM3能读到UID但其他扇区数据全是空或者FF大概率是密钥区被覆盖了。M1卡的每扇区块3是密钥A、访问位、密钥B的存放位置误写入导致门禁卡无法认证。解决办法是重新加载原卡dump完整写一遍确保密钥区数据正确。实在救不回来的CUID卡别心疼换一张新卡重新来。卡片很便宜时间才值钱。4.4 手机模拟失败、APP提示不支持手机模拟门禁卡失败的原因很多最容易理解的是手机NFC芯片本身不支持模拟M1卡。小米、华为等手机的“门禁卡模拟”功能依赖NFC控制器硬件而部分老款或低端机型的NFC芯片没有实现M1卡的卡模拟模式系统直接提示不支持。另一个常见原因是门禁读卡器兼容性差。手机模拟出来的卡和原厂M1卡的射频响应特性存在细微差异部分老门禁读卡器会直接忽略这种信号。这种问题没法通过数据修改解决只能换一台不同的手机试试或者回到PM3复制卡的方案。题外话很多人会把“NFC中继攻击”和“复制卡”混为一谈。中继攻击的思路并不烧录卡片数据而是通过一个中继设备在远端把读卡器和卡之间的信号实时转发达到“隔空刷卡”的效果。这和复制卡本质不同也不属于本文的实操范围。了解这个区别就好了真要研究中继攻击最好在有明确授权的环境中进行并且要认识到很多新型门禁系统已经加入了防中继的时间校验和链路加密机制。4.5 关于M1卡安全与门禁升级的一个提醒M1卡可复制并不是秘密这也是很多小区和公司在逐步淘汰M1卡、换用CPU卡或DESFire卡的原因。CPU卡内置真随机数生成器和协处理器每次认证都会生成不同的挑战值传统复制卡那套“原样拷贝”的手段完全失效。作为普通用户理解M1卡的可复制性有助于保护自己的利益——比如卡片丢失后物业如果没有及时挂失旧卡捡到卡的人是有可能复制出一张来用的。所以如果你所在的物业还在使用M1卡换锁或升级卡系统时记得要求新卡更高安全等级。作为安全研究爱好者M1卡是一个极佳的入门教材它把加密、认证、存储、射频通信这些概念全部浓缩在一张小小的卡片里值得花时间去折腾。写在最后第一次成功复制自家门禁卡那天我拿着CUID白卡在单元门口试刷听到门锁“咔哒”一声松开说实话心里挺高兴的。这件事让我真正理解了RFID读卡流程、M1卡扇区结构和密钥认证机制比单纯看文档学到的东西多得多。几个给新手的实用建议第一先用自己的原卡做实验不要一开始就打物业系统的主意合法合规永远是前提第二多备几张CUID卡写废了不心疼第三PM3到手后先玩透hf search和hf mf dump这些基础命令再上autopwn循序渐进能避免很多挫折。另外在操作过程中我还有一个体会手机NFC和PM3不是替代关系而是互补关系。手机NFC帮你快速判断卡型PM3负责深度读写两个工具配合起来绝大多数门禁卡的复制和研究场景都能覆盖。这套流程跑熟之后你对NFC、RFID和门禁安全的认知会提升一个台阶以后再遇到类似设备分析思路也会清晰很多。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →