RFID工卡复制实战:从原理到Proxmark3操作全记录
下了班走到公司门口习惯性抬手工卡往读卡器上一靠“滴”一声门开了。那天我站着没走突然想知道这张薄薄的塑料片到底跟读卡器说了什么凭什么它就能证明是我。于是就有了这次动手实验初探RFID技术自己试着复制手里的工卡。整个过程没有多高深但踩了几个坑也把低频、高频、UID、模拟这些概念从书面上搬到了现实里。这篇文章就是这次实验的完整记录如果你也想搞明白工卡、门禁卡、电梯卡背后的原理想知道一套入门级的复制/模拟设备能做什么、不能做什么可以参考我的流程和排查经验。先说好一个前提免得后面跑偏复制手里的卡片只对你自己名下、且已经获得明确授权的卡片做测试。我这次用的是一张公司信息部门同意报废的旧工卡纯粹为了学习RFID的读写机制。未经许可复制他人门禁卡会有安全与合规问题这个底线不能碰文章结尾我也会再展开讲。1. 先搞清楚你手里的工卡到底是什么RFID原理与卡片分类1.1 一张工卡里到底装了什么RFIDRadio Frequency Identification射频识别说白了就是一套“无线对暗号”的系统。工卡里藏着一个微型芯片和一圈天线线圈平时没电但当它靠近读卡器产生的电磁场时线圈会感应出微弱的电流芯片借这点能量“醒过来”然后通过射频信号把自己的数据传回给读卡器。整个过程不需要电池也不需要接触金属触点所以卡片可以做得很薄耐用度也高。搞清楚这个机制是理解后面一切操作的前提。读卡器发出的“挑战”卡片回复的“应答”本质上都是无线信号而我们要复制一张卡其实就是把这份“应答”原封不动地抄到另一张空白卡上让新卡在门禁系统面前“扮演”旧卡。听起来有点像复制一把钥匙形状对了锁芯就认。但在RFID世界里事情比钥匙稍微复杂一点因为卡片的“形状”不光是卡号还有频率、协议、加密状态这些维度。1.2 工卡常见频率与格式低频、高频、超高频怎么区分我最初以为所有卡都一样后来一查才发现RFID按工作频率分成好几个大类用途完全不同。门禁领域最常见的是低频和高频两种偶尔也有超高频用在车辆进出、仓储物流上但个人工卡很少见。低频LF125kHz左右是最“老资格”的一类。代表协议有EM4100、HID Prox等常见于老式门禁、厂房考勤、宠物芯片。它的特点是传输速率慢、存储空间小多数卡只有一个固定ID号读卡器唯一的用途就是验证这个ID。优点是便宜、稳定穿透力还可以缺点是基本没有加密可言谁拿个读卡器靠近都能把ID读走。高频HF13.56MHz是目前工卡的主流。常见标准是ISO/IEC 14443A其中Mifare Classic 1K也就是型号S50是绝对的主力。这类卡除了有UID卡号内部还有16个扇区共1K字节的存储空间可以分区存放数据、设置密钥。很多校园卡、公交卡、企业工卡都用它。比低频高级的地方在于它可以加密不过Mifare Classic的加密算法CRYPTO1在2010年前后已经被研究者破解这就给“复制”留下了巨大空间。超高频UHF860-960MHz在这类实验里极少遇到它主要用在远距离识别场景比如仓库盘点、停车场远距离识别、高速公路ETC识别距离可以达到几米甚至更远但天线和芯片成本高对金属、液体的敏感度也高一般不会做进员工卡里。我把这三类的区别整理成一张表方便你对照手里的卡判断方向类别典型频率常见协议/卡型典型应用能否方便复制低频125 kHzEM4100、HID Prox、T5577老旧门禁、考勤、车辆管理简单读ID写ID高频13.56 MHzMifare Classic 1K/4K、Ultralight企业工卡、校园卡、公交卡看加密情况UID常可复制超高频860-960 MHzEPC Gen2、ISO 18000-6C仓储、供应链、车辆道闸设备贵不常被用作工卡判断手里的卡属于哪一类最直接的方法是看卡片外观和印刷很多工卡正面会印一个类似Wi-Fi信号的波纹图标如果旁边写着13.56MHz就是高频写着125kHz就是低频没有标注的话就进入下一步用设备读一下就知道。1.3 为什么很多工卡一复制就能开门这是整个实验里最值得琢磨的问题。如果门禁系统只校验卡号那复制卡当然百试百灵如果它校验卡内加密数据复制就没这么容易。经过这次实验和后来的反复验证我确认了一个现实大量仍在服役的门禁系统尤其是中小公司和老楼宇系统校验逻辑非常简单——读卡器把卡片UID读出来转换成Wiegand格式的数字发送给门禁控制器控制器只需要比对“这个卡号有没有权限”就放行。问题就出在“只比对卡号”上。当年部署这套系统的时候Mifare Classic还是“足够安全”的选择可门禁设备的生命周期动辄十年以上大量读卡器根本没有能力解析卡内加密扇区只能输出一个卡号而门禁管理软件为了方便也默认只按卡号登记权限。于是加密数据形同虚设真正起作用的只有那个固定的4字节UID。这种“只认UID”的设计在复制卡面前就是门户大开。我只需要把旧卡UID读到再写入一张UID可改写的高频空白卡门禁系统看到新卡的UID和旧卡一模一样就认为是同一张卡。这也是为什么市面上很多“复制门禁卡”的服务只要求你把卡寄过去或者现场读一下就能复刻出一张能用的卡来因为他们吃准了大多数门禁系统只看卡号。2. 工具准备从手机到Proxmark3怎么选2.1 手机NFC能做和不能做的事大部分人第一次接触RFID都是从手机NFC开始的。安卓手机用Mifare Classic ToolMCT可以读取高频卡的UIDiOS则因为系统API限制能做的事情更少。手机NFC最典型的用途是查看卡片信息、记录卡号、偶尔模拟一下不带加密的低频卡部分安卓ROM自带NFC模拟功能但限制很多。不过手机的RFID能力本质上被当成了一个“读卡器”而不是“读写器”。它读高频卡的UID绰绰有余但要写一张空白卡、复制一张低频卡、破解Mifare Classic加密手机就无能为力了。另外手机模拟出的NFC卡和真正的实体卡在协议层面不完全一样很多门禁读卡器并不认手机模拟的卡哪怕UID一样也可能因为信号调制方式、载波时序的细微差异被拒绝。所以手机NFC适合做侦查不适合做主力。我在实验初期用手机MCT读出了工卡的UID激动了半天但后续要真正“复制”出一张实体卡还是得靠专业读写器。2.2 入门级设备对比PN532、ACR122U、Proxmark3目前市面上能玩RFID读写的设备主要就三类PN532模块、ACR122U读卡器、Proxmark3。它们各有定位价格也差了一个数量级。PN532模块是最便宜的入门选择价格通常在50-80元人民币。它支持高频13.56MHz能读Mifare Classic、Ultralight等卡配合手机串口/蓝牙或电脑软件可以做很多事。优点是便宜、功耗低、文档多缺点是只能处理高频完全没有低频能力遇到HID、EM4100低频工卡直接抓瞎而且破解Mifare Classic加密需要暴力跑字典速度比较慢。ACR122U是一个标准PC/SC接口的USB读卡器外形跟普通公交卡读卡器差不多价格一百多元。它同样只支持高频优势在于Windows系统下即插即用很多现成的软件直接兼容。对只想复制高频门禁卡的人来说它比PN532更顺手但低频同样无能为力。Proxmark3是RFID折腾圈里的“瑞士军刀”也是我这次实验最后选择的设备。它同时支持低频和高频能读能写能模拟还能针对Mifare Classic做嵌套攻击、提取密钥、解密扇区。价格在300-500元之间虽然贵一些但一步到位不会出现“买完PN532发现还要加个低频模块”的窘境。我的建议是如果只是图新鲜想验证一下手里的卡能不能复制先花几十块买个PN532配合手机玩就够了如果打算系统研究RFID或者想覆盖低频高频的完整场景直接上Proxmark3更划算省得后面重复投资。2.3 软件环境与白卡选择硬件到位后软件和耗材也要跟上。Proxmark3最常用的客户端有两种官方Proxmark/RRG固件的Proxmark3命令行客户端以及图形化的Proxmark3 GUI例如RRG固件自带的界面。命令行功能最全配合官方文档跑命令GUI类工具对新手友好点几下鼠标就能识别卡、读UID、克隆低频卡。手机端的话Mifare Classic ToolMCT是高频卡玩家的必备可以保存卡片转储文件、写UID。空白卡方面低频复制的通用耗材是T5577卡它是一块可编程的低频芯片能模拟EM4100、HID等多种低频协议几毛到一块钱一张。高频复制则要注意区分普通Mifare Classic 1K空白卡出厂UID就锁死了不能改要复制UID得买“UID可写卡”常见的有CUID、UFUID、FUID其中CUID卡可以直接改写UID价格也就一两块钱一张。千万别买错否则后续会卡在写入步骤上。这种“CUID卡”之所以能改写UID是因为芯片厂商在实现指令集时留了一条后门指令可以通过Proxmark3直接修改UID字段。正规的Mifare卡是禁止改UID的这也解释了为什么很多老门禁系统对CUID卡毫无防备。3. 实操心路从识别到复制的完整过程3.1 第一步识别卡片类型与频率拿到工卡后我第一步是用Proxmark3确认卡片类型。虽然卡面印着“IC卡”字样十有八九是高频Mifare但我还是想亲眼看到芯片的回复。把Proxmark3插上电脑打开客户端默认有高频hf和低频lf两组命令。我先用高频识别命令hf 14a info如果卡片是ISO/IEC 14443A标准的高频卡这条命令会返回卡的ATQA、SAK、UID等信息。我那次看到返回的UID是一串8位十六进制数SAK08基本就可以判断是一张Mifare Classic 1K。如果卡片是低频EM4100或HIDhf命令不会响应这时候跑lf search它会自动扫低频频段返回检测到的协议类型和ID。低频卡和高频卡在读写器上的物理差异也很大低频卡线圈匝数多读卡时卡片要贴近天线角度也敏感高频卡对方向不敏感放上去就有反应。识别这个步骤看起来简单却是最重要的一步——后面所有操作都取决于卡属于哪一类、哪一协议。拿错了协议去读写一定会碰壁。3.2 第二步读取卡号与关键数据识别完成后读卡号就顺理成章了。对Mifare Classic卡最直接的是读UIDhf 14a info命令一行里就能看到4字节UID比如04 A2 3B C9。对低频EM4100卡则用lf em 410x reader读取器会显示类似EM4100 ID: 0102aabbcc这样的字符串。这里有个细节低频卡读取时卡片必须完全贴合天线而且不要同时把手机或金属物件放在旁边否则电磁场被干扰读出来的ID会偶尔出现错位。读出来卡号只是第一步。Mifare Classic卡没有加密的扇区可以直接读我顺手把整张卡的dump数据转储也读了出来——里面除了UID还有门禁系统写入的数据块。如果是加密扇区不提供密钥就读不出来这时候需要用工具尝试破解。3.3 第三步写入可编程白卡这一步是“复制”的关键也是容易翻车的地方。低频卡写入用T5577白卡。Proxmark3克隆EM4100的命令类似lf em 410x clone --id 0102aabbcc把刚才读到的ID填进去几秒钟就写完。T5577本身还能写其他协议格式只要在对应协议的命令里注册了ID就能替代原来的卡这是低频复制比高频简单粗暴的原因。高频卡复制稍麻烦一点。我买的是CUID卡UID可写先把它放到读卡器上确认是空卡然后执行UID写入hf mf csetuid --uid 04A23BC9注意这里的uid要去掉空格、写成连续字符串。写入后会提示成功此时再用hf 14a info确认新UID应该和旧卡一致。但只写UID还不够。如果门禁系统读的不只是卡号还读取了卡内某个数据块比如楼层权限、有效期那复制只完成了一半。安全起见我会用hf mf autopwn尝试把旧卡可读的扇区数据全dump出来再对应写入到新卡对应扇区实现“整卡克隆”。这个过程耗时取决于卡内扇区数量和加密情况短则十几秒长则数分钟。3.4 第四步模拟上机验证实体卡写完之后最激动人心的环节是去门禁上试。不过在我的实验里信息部门只批准我在一个废弃的办公室门禁上做验证而且读卡器上还贴着“仅限测试使用”的标签。我把复制卡贴上去“滴”一声门锁弹开那一刻确实很有成就感紧接着一股冷汗原来这种门禁系统这么容易被复制。之后我又试了Proxmark3的卡模拟功能不需要实体卡直接在读卡器上模拟旧卡的UID和扇区数据。高频模拟用hf mf sim --uid 04A23BC9低频模拟用lf em 410x sim --id xxxx。模拟和实体卡的差别在于模拟时Proxmark3需要持续供电天线位置不能离门禁读卡器太远适合临时测试不适合日常使用。但作为技术验证“模拟开门”这个动作已经充分说明问题——门禁系统的验证逻辑确实只看卡号。4. 常见问题与排查实录4.1 识别不到卡或读卡不稳定这是新手最容易遇到的第一个坑。明明把卡放在Proxmark3天线上了hf 14a info却没有任何反馈。排查顺序是这样先确认卡片类型有些卡是低频的你用高频命令当然没反应换lf search扫再检查天线耦合低频卡对位置要求高把卡贴近天线的中央区域不要悬空最后看是不是Proxmark3供电问题插在USB Hub上容易供电不足直接插主机USB口试试。我最初反复读不出低频卡后来发现是卡和天线之间垫了一张厚的塑料卡套电磁场被削弱得厉害。去掉卡套之后秒读。所以读卡的时候尽量让卡片和天线“亲密接触”中间不要隔东西。4.2 复制成功却被门禁拒绝卡号明明一样但复制卡刷不开门这是高频卡实验里出现率极高的问题。原因大概率是门禁系统不只验证UID。虽然大量门禁只看UID但也有不少系统会读取卡内特定数据块。比如有的门禁系统会校验卡片有效期有效期就存在某个加密扇区里有的系统用扇区数据计算一个校验位跟UID一起组成“完整身份”。遇到这种情况只复制UID就是“形似神不似”。解决方案是整卡克隆用hf mf autopwn把旧卡的所有可访问扇区读出来再写到新卡对应位置。如果旧卡扇区全部加密且字典跑不出来那就要考虑用嵌套攻击或者darkside攻击获取密钥这都是Proxmark3的常规操作。我在实验里遇到过一张卡的三个扇区密钥没跑出来后来换了更大的密钥字典才把全部扇区解锁。4.3 白卡无法写入或写入后无效白卡买错是高频复制里最啼笑皆非的失误。我最初贪便宜买了一批普通Mifare 1K空白卡结果执行hf mf csetuid一直提示失败查了半天资料才发现普通空白卡UID出厂即锁死根本不支持改写必须用CUID或UFUID卡。所以买卡前一定看清“UID可写”标识。还有一个坑是CUID卡写入UID之后不能再随便改回去。有的CUID卡写入一次UID后就变成普通卡不能再二次写入所以写卡前最好把旧卡UID备份好确认无误再操作。要是写坏了多备几张卡成本也不高。另外写入UID后要及时验证。用hf 14a info重新读一遍确认UID变成目标值。如果读出的还是出厂UID说明写入过程实际没有生效检查卡的品牌兼容性——部分Proxmark3固件对特定CUID芯片写入命令有差异可以尝试换一种csetuid的变体命令。4.4 问题速查表现象可能原因解决方案高频命令无响应卡片是低频卡或卡片过远换lf search或调整卡片位置低频读取不稳定天线耦合不良、有遮挡物去掉卡套紧贴天线中央复制成功但门禁不认门禁校验扇区数据或加密内容整卡dump并克隆全部扇区白卡写UID失败用了UID锁死的普通白卡换CUID/UFUID可写UID卡CUID卡写后读回UID没变固件命令兼容问题换其他csetuid变体命令或重刷固件模拟时卡顿/延迟天线距离太远或USB传输不稳用短线连接贴近门禁读卡器5. 实验之外安全边界与可扩展方向5.1 玩这项技术的前提和底线写到这里必须把话说重一点。RFID读写本身是中性的技术但它触及门禁、资产、身份识别这些敏感场景所以实验对象必须严格限定在“自己名下且获得授权的卡片”。我这次使用的是公司信息部门明确同意报废的旧工卡刷的也是专门划出的废弃门禁。没有这个前提操作再漂亮的复制实验也不应该做。未经授权读取、复制他人卡片轻则违反公司规定重则涉及非法侵入等法律风险。你看到这篇文章说明你对技术本身感兴趣那就更应该用学术研究的心态去玩它而不是用来寻找系统漏洞。有一点很多人容易忽略门禁系统的后台有完整的刷卡记录。你复制卡刷开门的动作一定会留下时间戳和门点信息一旦被保安或管理员调取记录复制卡和原卡在同一时间段出现在不同位置立刻就能暴露。技术上可以做的事情不代表着你有权去做这是成年人该有的判断力。5.2 门禁RFID安全升级思路这个实验做下来我对门禁系统也有了新的认识。如果一个门禁系统只看UID几乎等于不设防。企业如果还停留在这种老方案升级思路可以分几步走第一优先换成支持双向认证的卡型比如Mifare Plus、Mifare DESFire EV2、或者国密的CPU卡。这类卡有硬件加密引擎密钥不直接暴露在数据传输里即使有人读到UID和密文也无法复制出一张能开门的卡。第二读卡器后端要回归“验证数据”而不是“验证卡号”的架构。让读卡器把卡内加密数据交给门禁控制器做校验而不是只转一个Wiegand卡号这样就算卡被复制丢的也只是UID没有密钥一样开不了门。第三建立卡生命周期管理定期更换临时卡密钥、关机门禁联动监控、异常刷卡行为告警。技术防护再强管理流程跟不上也一样白搭。5.3 下一步学习路线建议如果你对这个方向产生了兴趣建议按这条线继续深入先从协议层面入手搞懂ISO/IEC 14443A的通信流程明白PCD读卡器和PICC卡片之间是怎么完成防碰撞、选卡、认证、读写这四个基本步骤的。推荐读NXP的Mifare Classic官方文档比任何博客都权威。然后研究Mifare Classic的加密弱点。为什么CRYPTO1算法能被攻击PRNG伪随机数生成器的随机性缺陷在哪里这些内容涉及密码学基础但花时间去啃很值。再往后可以接触更高级的卡型对比DESFire、CPU卡的认证流程最终你能写一个小工具在PC上模拟读卡器与卡片交互。这时候你已经不是“玩卡”的入门者而是真的入了RFID安全的门。我个人的体会是这类动手实验最珍贵的不是复制成功那一刻的爽感而是它逼着你去把协议文档、芯片手册、电磁特性这些枯燥的东西啃下来。纸上得来终觉浅上手跑一遍对“数据如何流经物理世界”的理解完全不一样。如果你也想试记住那句话自己的卡授权的门禁学习的心。这三点缺一不可。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →