从门禁卡到RFID:读卡原理、数据复制与安全边界解析

发布时间:2026/10/1 23:47:07
从门禁卡到RFID:读卡原理、数据复制与安全边界解析
1. 项目起因与目标拆解前阵子整理办公桌翻出一张已经注销的旧工卡。盯着它看了半天脑子里冒出一个特别没出息的念头这玩意儿到底是怎么被门禁“认”出来的带着这个疑问我顺手入了RFID技术的坑想搞明白门禁卡读写背后的原理。整趟折腾下来说难不难但坑是真不少写出来给想玩卡的朋友当个参考顺便聊聊安全边界这件事。这篇内容适合三类人看一是刚接触RFID技术、想搞懂门禁卡原理的新手二是手里恰好有读卡器、想验证旧卡数据的好奇玩家三是公司负责门禁管理、想了解卡安全性的行政或IT同事。1.1 从一张工卡开始的好奇心我当时的问题其实特别朴素门禁刷卡那一下读卡器到底在跟卡说什么是简单读取一个固定编号还是里面存了一整套文件如果我把一张卡的数据完整复制到另一张空白卡上门禁是不是就认了拆解下来整个项目可以分成三步第一步读卡搞清楚卡的类型和频率第二步分析数据弄明白卡里存了什么内容第三步尝试复制把数据写进空白卡里验证结果。这个思路看起来简单真正做起来才发现每一步都藏着不少坑。比如读卡时距离稍微偏一点就读不到比如卡的类型不同数据结构完全不一样再比如有些卡的数据根本读不出来连UID都无法稳定识别。整个项目走完我对RFID技术的理解比看十篇文章都深刻。1.2 合规边界先说清楚写这篇文章之前我得先把安全边界讲明白这是底线。这次的实验对象只有两种卡一张是我自己名下、已经注销的旧工卡另一张是网购的空白测试卡。实验原则也很明确旧工卡只做读取与分析不做任何写入复制空白测试卡用来验证同型号卡片的数据读写流程。公司的现行门禁卡我碰都没碰更不可能去复刻其他人的卡。现在很多写字楼、园区还是用的早期M1卡这类卡在安全研究圈子里早被翻了个底朝天。如果你看完这篇文章想的是“那我是不是也能配一把同事的门禁卡”我劝你趁早打住。私自复制门禁卡、冒用他人身份进出办公场所在法律上属于明确的违规行为轻则违纪处分涉及财产损失或安全事故的很可能要承担法律责任。这从来都不是技术炫技的问题是做人的问题。2. RFID技术核心知识补课开始实操之前我把RFID技术的基本原理先捋了一遍。这部分不搞清楚后面读数据、分析扇区、写卡都会像盲人摸象。2.1 一张卡片其实是一台无源小设备RFID全称Radio Frequency Identification射频识别技术。门禁卡的本质是一个通过无线电波进行数据交换的微型设备。普通的门禁卡内部没有电池它靠的是电磁感应供电。读写器发出射频信号卡片里的线圈感应到电磁场后会生成一个微小的感应电流这个电流刚好够给卡片里的芯片供电。芯片通电后开始工作把存储在存储器里的数据通过线圈调制反射回去读写器再解调出这些数据。用个不恰当的比喻卡片就像一面镜子读写器用手电筒照它镜子的反光角度会按照某种规律变化反光被读写器接收后再转换回原来的信息。整个过程发生在毫秒级所以刷卡体验特别流畅。2.2 频率与标准决定了卡能不能被复制门禁卡最核心的分类维度是工作频率。市面上常见的门禁卡主要集中在两个频段频率常见卡型读取距离典型用途125kHzEM4100、HID Prox5-20cm老式门禁、考勤、停车卡13.56MHzMifare Classic 1K、Mifare Plus2-10cm工卡、校园卡、公交卡超高频860-960MHzEPC Gen21-10米仓储盘点、物流、车联网大部分公司的工卡用的都是13.56MHz频段遵循ISO 14443A标准。这个频段的卡读取距离短、通信速度快、安全性也相对好一些。除了频率通信协议也决定了设备能不能识别这张卡。手机NFC模块之所以能读到部分门禁卡的信息正是因为它支持ISO 14443A标准。但手机NFC能读到的信息非常有限想完整读写扇区数据还是得靠专业读卡器。2.3 为什么有些卡能复制有些不能搞清楚频率之后下一个核心问题就是为什么有的门禁卡能被复制有的不行决定因素主要有四个卡芯片类型。Mifare Classic 1K常说的M1卡的加密算法在2008年前后已被公开研究密钥可以被枚举或嗅探所以用特定工具就能读出完整数据。而Mifare Plus、CPU卡等后续产品强化了认证机制复制难度成倍上升。密钥机制。M1卡内部有16个扇区每个扇区有两组密钥KeyA和KeyB。只有密钥验证通过才能读写对应扇区的数据。如果门禁系统默认密钥没有改那读卡就非常轻松如果改了密钥普通读卡器根本下不了手。UID是否可写。UID是卡片的唯一序列号由厂商固化正常情况下不可修改。但市面上存在一种“UID卡”它的UID区可重复写入这就是复制卡的物理基础。另有一些CUID卡、FUID卡模拟不同芯片的写保护特性用于解决不同读卡器的兼容问题。门禁系统的校验逻辑。有些门禁不只校验UID还会读取特定扇区的加密信息做二次比对。就算UID一样数据不完全匹配门禁照样不开。所以复制门禁卡这件事本质上是一场“卡芯片安全等级”和“门禁系统校验逻辑”之间的博弈。了解这些原理不是为了教谁去钻空子而是为了理解为什么门禁管理员反复强调“卡不要外借、丢失立即挂失”。3. 实操准备与读取实验知识铺垫得差不多了接下来进入实操环节。这一节我会讲清楚硬件怎么选、软件环境怎么搭、数据怎么看全程以我自己做的读取实验为主线。3.1 硬件选型没必要一开始就上昂贵的设备我先说结论入门RFID技术不需要买动辄上千的工业级读写器两百块以内的方案完全够用。我对比过几种常见方案方案价格区间能做什么局限手机NFC0元读取UID和部分卡信息无法读取M1扇区数据无法写卡PN532模块80-150元M1卡完整读写、UID读取、模拟门禁实验125kHz卡不支持需额外接线ACR122U180-300元13.56MHz卡完整读写兼容性好125kHz卡不支持驱动在部分系统上难装我最后选了PN532模块配USB转TTL线再加一张快递包邮的空白UID卡全套下来一百出头。如果你手头已经有树莓派还可以把PN532接到树莓派的GPIO上用玩法更多。这里有一个血泪教训买PN532之前一定要确认模块芯片型号市面上的“PN532”贴片模块鱼龙混杂有些是盗版芯片兼容性差到怀疑人生。尽量选大店或标注原装芯片的版本至少读卡稳定性有保证。3.2 软件环境搭建软件方面我用了两个方案。第一个是读卡器配套的图形化工具可以直观看到卡类型、UID、扇区数据适合刚上手的朋友。驱动装好后插上读卡器设备管理器里会出现一个虚拟COM口打开软件点“连接”听到“滴”一声就说明读卡器正常。第二个是libnfc命令行工具。开始觉得命令行很麻烦实际用下来反而比图形界面更适合排查问题。比如读取卡片信息敲一条nfc-list就能看到卡型号和序列号写卡时用nfc-mfclassic配合数据文件就能完成操作。命令行输出简洁清晰出问题的时候错误日志也是一目了然。有一点要提醒在Windows系统上装ACR122U驱动时经常碰到“设备无法启动”的报错很多时候是因为驱动签名问题而不是硬件故障。换一个带WHQL签名认证的驱动版本或者把系统设置为禁用驱动签名强制基本能解决。这一条也适用于PN532的CH340串口驱动。3.3 读取工卡信息与数据分析硬件和软件都准备好之后我开始读取那张已注销的旧工卡。读卡器放平卡片贴上去软件里立刻弹出一行信息卡片类型Mifare Classic 1KUID 8B5F A3D9还有一串十六进制数据。信息量不大但对验证“卡能不能被复制”已经足够了。我把读到的数据整理成了下面这种结构数据做了脱敏处理只是示意格式Sector 0: Block 0: 8B 5F A3 D9 1A 08 04 00 62 63 64 65 66 67 68 69 Block 1: 01 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 3: A0 A1 A2 A3 A4 A5 78 77 88 C1 00 FF FF FF FF FF这里简单解释一下Block 0是厂商块前4个字节是UID后面跟着UID校验位和厂商数据。UID是卡的唯一身份标识门禁系统往往用它来关联员工信息。Block 1和Block 2是数据块门禁系统会在这里写入员工编号、授权级别、有效期之类的内容。Block 3是控制块存储KeyA、访问控制位和KeyB。默认密钥通常是A0A1A2A3A4A5或FFFFFFFFFFFF。我读到的这张旧卡扇区数据完整可见说明它的门禁系统使用的是默认密钥也就是说只要设备支持整卡数据都能读出来。这其实也暴露了一个普遍存在的安全隐患很多企业装了门禁但从没想过把默认密钥换掉。读完旧工卡之后我又拿了一张空白UID测试卡刷了一下发现UID区全为00 00 00 00数据区全部为FF这代表卡片已经可以写入。到这里读取环节就算完成了接下来才开始真正的验证实验。4. 复制实验的思路与结果这一节是整篇文章的核心我来说说复制实验具体怎么设计、结果如何以及最后为什么停在某个点没有继续往下走。4.1 实验设计只复现同型号测试卡为了验证“数据复制”的可行性我没有直接用公司卡做写入实验而是采用了更稳妥的对照方案源卡同型号的测试卡里面的数据是随意填写的Demo数据明确用于读写测试。目标卡一张空白UID卡先写入与源卡一致的UID。验证流程从源卡读取完整数据保存为二进制镜像文件再写入目标卡最后重新读取目标卡数据与源卡逐字节比对。操作流程简单概括就是三步读源卡数据 - 保存为 dump 文件 - 写入目标卡如果这一步能稳定复现说明在技术层面同型号低安全等级卡片的复制是完全可行的。我用命令行工具写卡时需要指定密钥文件和数据文件默认密钥文件填入A0A1A2A3A4A5即可写入过程中软件会实时显示扇区写入进度全部写完后会提示校验成功。4.2 实验结果数据一致验证成功第一次写卡就成功了但真正让我意外的是校验环节重新读取目标卡逐字节比对源卡dump结果完全一致包括UID、数据块、控制块在内读出来的内容一模一样。用目标卡去刷一个简易的NFC门禁模拟器时模拟器也正确识别出了UID。这说明对低安全等级、默认密钥的M1卡来说用市面上常见的PN532模块和空白的UID卡就能在几分钟内完成数据复制。这个过程并不需要多高深的技术甚至不需要自己搭天线、写信号解码程序。它之所以能成功本质上是因为M1卡出厂时使用了公开的加密算法和默认密钥而早期部署这套门禁系统的公司又没有修改默认配置。只要这两点成立门禁卡的数据在技术设备面前就是“透明”的。4.3 为什么公司工卡的复制我停在了读取阶段这里必须说清楚我的实验止步于“同型号测试卡”的完整复制对于那张已注销的旧工卡我只完成了读取和分析没有进行写入复制。原因有两层。第一层是合规问题。这张旧工卡虽然已经注销但它的数据格式、员工编号、可能存在的历史授权记录都不属于可以随意复制挪用的内容。第二层是安全问题。如果我一味钻研密钥嗅探和暴力枚举把整张卡的加密机制逆向出来那这篇文章的调性就完全变了。技术研究要有边界。验证一个安全隐患的存在和把这个安全隐患变成工具是完全不同的两件事。我把项目和实验过程写出来优先目的是帮大家理解RFID技术的运行机制和安全短板而不是提供一份“复制门禁卡操作手册”。4.4 实验中的几个意外这次实验也不是一帆风顺有几个坑值得提醒卡片放偏导致读取失败。PN532模块的感应区域通常集中在天线线圈中心卡片放偏一点就读不出数据。后来我养成了习惯卡片贴上后先轻按一下等软件识别到UID再松手。写卡时断电。连续写扇区的过程中如果USB线松动或电脑休眠卡片可能写入一半就中断。我的教训是写卡期间把电脑的自动休眠关掉避免中途掉线。新卡协议不匹配。有张空白卡显示能识别但写入时提示“卡片未认证”后来确认是卡芯片的特殊协议导致。换了另一家店铺的UID卡后问题消失。5. 常见问题与排查清单这一节直接整理成速查表方便你以后踩坑时对照排查。都是我在调试过程中真实碰到的情况一条条验证过。问题现象可能原因排查方向软件识别不到卡片卡片未放入感应区调整卡片位置贴近天线线圈中心识别到卡片但UID全为00卡片损坏或未初始化换一张空白UID卡测试读取扇区数据全部为FF卡片数据区为空或已锁卡确认数据区块是否可写尝试解锁读卡时报错“认证失败”密钥不正确更换密钥文件检查扇区KeyA/KeyB写卡时提示“写入失败”卡片已锁或芯片不兼容换CUID或FUID卡再试卡片读出来正常但门禁不识别门禁校验的不只是UID检查数据区块是否完整门禁是否有二次校验电脑识别不到读卡器驱动问题或COM口冲突换驱动版本查看设备管理器端口排查思路最核心的一条先用最简单的环境验证读卡器本身是否正常。我遇到过好几次“读不到卡”的诡异问题最后发现是USB转串口线接触不良换了根线立刻就好了。另外别忽视电磁干扰。手机、金属桌面、大功率电源适配器靠近读卡器时会造成信号波动导致读取距离缩短甚至完全失败。这也是为什么某些工位门禁读卡经常要刷好几下才能成功的原因。6. RFID安全思考与建议实验做完了但真正有价值的不是“我复制成功了一张测试卡”而是这个过程暴露出来的一系列安全问题。我想用最后这个部分聊聊普通员工和企业管理者各自应该注意什么。6.1 被热议的RFID安全其实是门禁升级的推手前几年某科技公司开员工大会时现场演示了一把复制门禁卡把公司管理层的冷汗都惊出来了。这个演示后来成了行业里反复被引用的经典案例也直接推动了大量企业把老旧的M1门禁系统升级为带密钥管理的CPU卡或手机NFC门禁。回头看RFID技术招来热议并不是坏事。它让很多企业第一次意识到门禁卡不是一个简单的“钥匙”而是一套需要全生命周期管理的身份凭证。从发卡、授权、销户到审计每一步都马虎不得。我这次的实验也是一样的逻辑我验证的是一种低安全等级卡片在默认密钥环境下的可复制性这本身说明了门禁安全不能只依赖一张卡。技术研究的意义正在于把风险暴露在可控的范围内而不是等问题真实发生了才后知后觉。6.2 给普通员工和企业管理者的几条建议对普通员工我的建议是不要把工卡随意放在桌上、不要拍照发朋友圈、不要借给同事代刷。工卡一旦丢失要立刻报给行政部门挂失因为从技术角度看从捡到卡到复制卡可能只需要几分钟。对企业管理者建议更直接排查现有门禁卡的密钥配置重点检查是否还是默认密钥。预算允许的情况下逐步用CPU卡或动态加密卡替代老M1卡。建立门禁后台日志审计机制对非工作时间的进出记录定期复盘。对离职员工的卡片权限做到当日销户避免“死人卡”长期有效。这些建议不需要多高深的技术投入但能在极大程度上避免因为一张卡被复制而导致的物理安全事件。6.3 后续还能怎么玩如果你也被RFID技术勾起了兴趣合规的玩法其实很多。比如用树莓派加PN532搭一个个人门禁实验平台写个小程序管理自己的设备开门权限或者研究NFC标签在智能家居、资产盘点里的应用用手机给家里的书籍、工具贴NFC标签做管理再深入一点也可以学习ISO协议栈、天线设计与阻抗匹配往射频硬件方向走。每一项都够研究一阵子而且都能学到真东西。前提是始终把实验对象限定在自己拥有或明确授权的设备范围内。这次折腾给我留下最深的印象不是复制卡成功那一刻的兴奋而是意识到技术在安全防护和风险规避之间从来都有一道需要自己把握的线。RFID技术研究起来很有意思但用在哪里、怎么用是比“能不能复制”更重要的问题。希望这篇入门笔记对你有帮助也欢迎在评论区聊聊你调试读卡器时碰到的各种奇怪问题。