NFC模拟门禁卡:从RFID卡类型判断到手机手环电脑端实操

发布时间:2026/10/7 9:17:07
NFC模拟门禁卡:从RFID卡类型判断到手机手环电脑端实操 1. 先弄清楚你手里这张卡到底是哪一类校园卡、门禁卡、电梯卡我口袋里曾经同时躺着四张。后来花了大概两年时间把它们一张张塞进手机和手环里出门只带一个设备。这件事的技术门槛其实不高但坑特别多最大的坑不是操作层面而是你从第一步就认错了卡的类型——拿着手机对着低频卡猛贴半天界面纹丝不动然后开始怀疑是不是手机坏了。先把结论放这儿能不能用NFC模拟取决于你手里的卡工作在哪个频段、用了什么芯片、门禁系统校验的是什么数据。这三点任何一点对不上后面全是白费功夫。这篇文章会从卡的类型判断一路讲到手机、手环、电脑三端的完整流程中间夹着大量我踩过的坑和排查思路适合想动手折腾的人照着走也适合只想搞明白原理的读者看个通透。1.1 NFC和RFID不是一回事别混着用很多人把NFC和RFID当同义词其实RFID是一大类射频识别技术的统称按工作频率分三档低频125kHz、高频13.56MHz、超高频860到960MHz。NFC只是13.56MHz这一档里的一个子集遵循ISO/IEC 14443和ISO/IEC 18092这套标准特点是通信距离短、支持双向通信、可以做点对点交互。手机上的NFC模块只工作在13.56MHz这是硬性物理限制改不了。校园和写字楼的门禁系统实际用到的主要是两拨卡。一拨是125kHz的低频ID卡常见芯片是EM4100、TK4100这一类卡里只有一串出厂固化、不可修改的ID号业内叫只读卡。另一拨是13.56MHz的高频IC卡Mifare Classic 1K/4K、Mifare Ultralight、Mifare DESFire以及各种CPU卡都属于这一拨卡里能存数据也有读写权限控制。这两拨卡的差别直接决定了结果低频ID卡手机NFC模块压根听不见它发出的信号。你拿小米钱包去贴一张EM4100的卡界面毫无反应这是正常的物理现象不是卡坏了也不是手机坏了。想模拟低频卡得用专门的125kHz读写设备手机做不到。1.2 三秒钟判断手里的卡属于哪一类不用买设备手机就能做初步判断。我一般用这几个方法交叉验证。第一个方法是直接贴。手机上装一个NFC Tools各应用商店都有打开NFC开关把卡贴到手机背面NFC天线位置。如果界面弹出并读出UID、技术列表Tag type、Technologies这些字段那这就是一张13.56MHz的IC卡。如果反复贴都没任何反应大概率是低频ID卡或者卡离天线位置太远。第二个方法是用手电筒照卡。把手机手电筒打开卡片贴在光源上从背面看低频ID卡的线圈通常又细又密圈数多高频IC卡的线圈相对粗一些、圈数少而且卡面中间往往能看到一个小的方形芯片模块。这个判断不绝对但能过滤掉一大部分。第三个方法是看卡的印刷信息。很多校园卡背面会印CPU卡、M1卡或者芯片型号缩写。M1就是Mifare Classic 1K的意思属于高频卡有机会模拟印着CPU卡的基本告别模拟这条路原因后面第2章会讲。注意有些IC卡手机能读出UID但读不出任何扇区数据。这类情况不是卡坏了而是卡被加密了扇区密钥未知。这属于能摸到门把手但没钥匙后面第3章和第5章会专门处理。把卡的类型判断清楚是整件事的地基。地基错了后面盖多高都塌。我见过太多人卡在第一步就是因为默认所有门禁卡都一样。2. 手机和手环模拟门禁卡底层到底在做什么搞清楚卡的类型之后第二个要弄明白的是模拟这两个字到底指什么。市面上很多教程把模拟门禁卡讲得玄乎其实拆开看就两种模式UID模拟和全卡数据模拟。这两种模式适用的门禁系统完全不同成功率也差很多。2.1 Mifare Classic 1K的存储结构长什么样先看最常见的Mifare Classic 1K。这张卡总共1024字节被分成16个扇区每个扇区4个块每块16字节所以是16乘4乘16等于1024字节正好对上。每个扇区的最后一块也就是扇区内的第4块全局编号为每个扇区第3块比如第0扇区的块3、第1扇区的块7叫Trailer块也叫尾块里面放着三样东西KeyA6字节、Access Bits4字节访问控制位、KeyB6字节。第0扇区的块0最特殊它的前4个字节是UID第5个字节是BCC校验位第6个字节是SAK第7到8字节是ATQA。这几个字段是门禁读卡器第一眼看到的东西相当于卡片的身份证号名片抬头。关键点来了UID虽然是数据但出厂时厂商把它写在只读区域正常写不进去。这就是为什么复制卡俗称白卡、UID卡能改写UID而手机模拟的难点恰恰也在这里——安卓的NFC控制器默认会随机化自己的UID不允许应用直接指定一个固定UID这是安全设计不是bug。每个扇区的读写都要先通过KeyA或KeyB验证验证过了才能读该扇区的数据。默认出厂密钥通常是全FF或者全A0但实际校园卡基本都改过密钥这就是为什么普通工具读不出数据。2.2 UID模拟和全卡数据模拟差别在哪UID模拟也叫卡号模拟指的是手机或手环把自己的NFC身份标识设置成和原卡一模一样的UID。门禁读卡器如果只读UID做比对很多老式门禁、电梯卡就是这样那模拟就能通过。这种模拟最轻量不需要读原卡的扇区数据。全卡数据模拟指的是把原卡16个扇区的全部数据包括密钥和访问控制位复制到模拟设备里。门禁系统如果不仅校验UID还要读某个扇区里的业务数据比如余额、有效期、权限位那就必须用全卡模拟。现实里校园卡往往两种混着用。比如校门闸机可能只认UID食堂消费机要读扇区数据。所以你可能会遇到手机能刷开校门但刷不开食堂这种分裂情况这不是操作错误是门禁系统校验策略不同。2.3 有些卡注定模拟不了原因在这里第一种CPU卡。CPU卡内部有一个独立的微处理器和加密运算单元卡里的密钥存在芯片内部外部读卡器发过来的认证请求由芯片内部完成运算密钥永远不出芯片。你就算把UID读出来也无法复现认证过程。这也是学校这几年陆续把老M1卡换成CPU卡的核心原因——防复制。从影响范围看这一波升级直接让大量复制卡生意失效也让手机模拟这条路被堵死。第二种带滚动码的系统。部分门禁卡每次刷卡后扇区里的某个数据块会递增或变化。你复制的是一个时间点的快照复制卡刷一次之后原卡和复制卡的数据就不一致了第二次刷卡就会被判定为异常。第三种门禁系统带防复制检测。有些读卡器会同时校验SAK、ATQA这些特征值甚至检测卡的响应时序。手机模拟出来的虚拟卡这些特征值和真卡对不上读卡器直接拒绝。提示判断自己的卡属于哪一类最省事的办法是问物业或者学校后勤但大概率对方不会告诉你细节。更实际的做法是拿NFC Tools先读一遍能读出UID和扇区说明有戏读出来是Mifare DESFire或者CPU卡字样直接放弃别浪费时间。3. Android端从读卡到写卡的完整实操安卓是模拟门禁卡最方便的平台因为系统开放了NFC的底层访问权限也有成熟的第三方工具。下面这套流程我从一张Mifare Classic 1K的校园卡上完整跑过步骤可以直接抄。3.1 工具准备别装一堆没用的安卓端我长期留着三个工具。NFC Tools用来做第一轮探测读UID、读技术列表、读NDEF数据界面直观适合确认卡的类型。Mifare Classic Tool简称MCT核心工具。它能读扇区、用密钥字典尝试认证、导出dump文件、编辑数据块、把dump写回另一张卡。整个流程的重头戏都在它身上。目标手机的钱包应用小米钱包、华为钱包、OPPO钱包这类负责把数据变成可以刷的虚拟卡。装MCT的时候注意它需要NFC权限和存储权限。有些机型尤其是定制系统会在后台限制NFC建议在设置里把钱包和MCT的省电策略改成无限制否则读卡读到一半会被系统掐断。3.2 读取自己的卡先过密钥这一关打开MCT选择读标签。界面会让你选择密钥文件默认自带的std.keys里包含了大量公开的默认密钥比如全FF、全A0、Mifare官方的几个测试密钥。把卡贴上去MCT会用字典里的密钥逐个尝试认证每个扇区。读完之后你会看到两种情况全部16个扇区都读出来了或者只有部分扇区读出来通常是0扇区因为0扇区出厂密钥没改。如果只有部分扇区能读说明剩下的扇区改了密钥。这时候有几个思路仅限对自己持有的卡片操作第一个是扩大密钥字典。网上有很多公开的密钥集合文件把它们合并进去再试一轮能覆盖不少常见情况。第二个是用嵌套攻击工具比如mfoc。它的原理是Mifare Classic的认证算法存在已知弱点如果知道至少一个扇区的密钥可以通过收集认证过程中的随机数反推出其他扇区的密钥。这个工具在电脑端跑更方便第5章会讲。第三个是直接问管理员要密钥或者看卡片是不是你自己买的空白卡。读出来后MCT会让你保存一个dump文件后缀是.mfd这个文件就是整张卡的完整镜像UID、所有扇区数据、密钥全在里面。这个文件是后面所有操作的基础务必存好最好备份到电脑上。3.3 把数据写进手机钱包有了dump之后正式进入模拟环节。注意手机钱包模拟和写卡是两回事手机钱包不是让你把dump文件写进去而是钱包应用会尝试自己读原卡并生成虚拟卡。以小米钱包为例路径是小米钱包 - 门禁卡 - 模拟实体门禁卡 - 把原卡贴到手机NFC区域。钱包应用会自己读一遍卡。这时候会分三种结果第一种非加密卡。钱包直接读成功生成一张虚拟门禁卡整个流程几秒钟搞定。第二种加密卡。钱包提示该卡为加密卡无法模拟但同时会提供生成空白卡或者卡号模拟的选项。生成空白卡的意思是钱包生成一张UID随机的虚拟卡你拿着手机去找物业让物业把这台设备当成一张新卡录入系统。这是最正规、最不会出问题的路子。卡号模拟则是让你手动输入原卡的UID适合门禁只认UID的场景。第三种CPU卡或DESFire。钱包可能连读都读不出来或者直接提示不支持。这种情况没有绕过去的办法。实操心得小米部分机型的钱包支持自定义卡号输入原卡UID之后生成的虚拟卡UID就和原卡一致能过只认UID的门禁。但注意这个功能在不同MIUI版本里位置和名称不太一样有的叫卡号模拟有的藏在高级设置里找不到就多翻两级菜单。3.4 实测中容易忽略的几个细节NFC天线位置。手机的NFC感应区通常在背面靠上摄像头附近。不同机型位置不一样贴卡的时候用卡的一个角去慢慢扫找到那个能触发读卡的位置记住它。手机壳的影响。厚壳、金属壳、带磁吸的壳都会削弱NFC信号。模拟和刷卡的时候能摘壳就摘壳。贴卡时长。读卡不是贴一下就走MCT读16个扇区需要几秒到十几秒中途移开就会失败。要贴住不动直到进度条走完。系统版本差异。MIUI国际版的小米钱包功能比国内版少很多门禁卡模拟功能在国际版里可能压根没有。如果你用的是国际版要么刷回国内版要么换第三方方案别在一个不存在的功能上死磕。钱包的省电限制。后台被清理掉之后虚拟卡可能刷不出来因为钱包服务没在运行。把钱包加到自启动白名单里能解决大部分昨天还能刷今天刷不开的问题。4. 手环端的玩法和它的天然短板手环模拟门禁卡是很多人最先想到的方案因为手环戴着方便、不用掏手机。但实际用下来手环的成功率明显低于手机原因不复杂值得单独讲一讲。4.1 手环和手机的模拟逻辑并不一样大部分NFC手环比如小米手环NFC版、华为手环本身不具备直接读卡模拟的能力。它的门禁卡功能是从手机App里同步过来的你先在手机上用钱包App添加好虚拟卡再通过蓝牙把这张虚拟卡同步到手环上。手环只负责携带和刷卡读卡和生成还是在手机上完成。也有少数手环支持直接在设备上模拟——把手环贴到原卡上手环自己读。但这类功能通常只支持非加密卡遇到加密卡照样卡壳。所以你的第一步还是得在手机端完成手机端搞不定手环端更别想。这是一个前后依赖关系不是并列关系。4.2 添加门禁卡到小米手环的具体路径以小米手环为例大致流程是手机装小米运动健康App - 绑好手环 - 进入手环设置 - 门禁卡 - 添加门禁卡 - 选择模拟实体门禁卡 - 把原卡贴到手机背面让手机读 - 读成功之后点同步到手环。同步完成后手环上会多出一张卡刷卡的时候把手环贴到读卡器上就行。华为手环的路径类似走华为运动健康App进设备详情页找门禁卡。4.3 手环成功率低的三个真实原因第一个是天线小、功率弱。手环的NFC天线受限于体积读取距离和信号强度都比手机差一大截。同样的原卡手机能读出来手环就是读不出来这不是操作问题是硬件差距。第二个是同步过程丢数据。虚拟卡从手机同步到手环时如果中途蓝牙断开或者App被后台清理同步会静默失败手环上显示有卡但实际是张空卡。第三个是部分手环对UID做了随机化处理。同样的安全机制手环也有导致模拟出来的UID和原卡对不上门禁读卡器认不出来。提示如果你的门禁是只认UID的老式系统手环基本没戏如果是新式的IC卡系统、只校验是否为新登记卡也就是物业录入白名单手环反而很好用。判断标准很简单——观察自己是不是需要拿设备去物业登记需要的话手环可行不需要、直接贴原卡就能模拟的手环大概率失败。5. Mac和Windows端用电脑做深度读卡分析手机端的三方工具足够应付大多数场景但当你遇到加密卡、需要扩大密钥字典、或者想对比两张卡的数据差异时电脑端的工具链就派上用场了。这一章讲硬件选型和两个平台的软件配置。5.1 读卡器硬件怎么选电脑要读卡得先有个USB读卡器。常见的有两种。ACR122U最经典的一款。USB接口支持13.56MHz的ISO14443 A/B卡包括Mifare Classic、Ultralight、DESFire。Windows下需要装ACS官方驱动macOS下走CCID标准免驱插上就能用。价格在百元级别买的时候注意别买到高仿市面上仿真货很多表现为某些扇区死活读不出。PN532模块更偏DIY的方案通过USB转TTL或者直接USB接入。价格更便宜但需要自己接线、刷固件适合愿意折腾的人。我个人的建议是直接上ACR122U省下的时间比省下的钱值钱。5.2 Windows下的驱动和工具链Windows这边插上ACR122U之后去ACS官网下驱动装上设备管理器里能看到读卡器。然后装一个叫NFC Reader Tool的图形化工具一些社区版本叫这个名能直接读标签、dump扇区。需要做密钥破解的话得用mfoc和mfcuk这两个命令行工具。它们在Windows上原生跑不了需要在Cygwin或者WSL环境下编译。流程大致是装Cygwin选中gcc和make- 下载libnfc源码 - 配置编译 - 装mfoc。这个过程对新手不算友好报错是常态耐心一点。如果只是想读写卡用图形工具就够了不必上命令行。5.3 Mac下的环境搭建macOS上装libnfc要先有Homebrew。装Homebrew这一步国内网络环境下下载会比较慢可以换用国内镜像源把安装脚本里的地址替换一下速度能提升不少。装完Homebrew之后一条命令brew install libnfc mfoc装完之后插上ACR122U先确认设备能识别nfc-list如果输出里能看到NFC device: ACS / ACR122U这类字样说明驱动正常。然后读卡nfc-list -v这个命令会列出卡的UID、SAK、ATQA、支持的协议。接着用mfoc尝试破解加密扇区mfoc -O mycard.mfdmfoc会自动收集密钥并尝试恢复其他扇区的密钥成功之后把整卡dump写到mycard.mfd。注意macOS新版本对第三方USB驱动的权限收紧了如果nfc-list报找不到设备去系统设置 - 隐私与安全性里检查有没有拦截提示允许之后重启终端。Mac上还有个坑是Homebrew装metalink有时候会卡在Updating Homebrew这是它在拉取索引网络慢的话会卡很久。可以临时关掉自动更新export HOMEBREW_NO_AUTO_UPDATE1再执行安装命令就不会卡在这一步。5.4 密钥字典和数据比对是电脑端的最大价值电脑端相比手机端最大的优势是文件操作方便。手机MCT导出的dump文件拷到电脑上用十六进制编辑器打开能看到每个扇区的原始数据。第二张卡比如同事的卡在双方同意的前提下读出来之后两个dump一对比差异块一目了然——哪些块是UID哪些块是权限数据哪些块是业务数据一看就清楚。密钥字典的扩充也是在电脑上做最方便。mfoc支持指定密钥文件把收集来的常见密钥整理成一个txt用参数传进去能大幅提高破解成功率。mfoc -f custom.keys -O mycard.mfdcustom.keys的格式就是每行一个12位十六进制字符串代表一个6字节密钥。5.5 两个平台的体验差异Windows的优势是图形工具多、上手直观缺点是命令行工具环境配置麻烦。Mac的优势是命令行环境干净、libnfc和mfoc一条brew命令搞定缺点是硬件驱动偶发权限问题以及Homebrew本身在国内的网络体验一般。我自己现在的固定组合是Mac加ACR122U加命令行因为做数据比对和批量操作时脚本化更省事。6. 常见问题速查与排查思路前面讲了原理和流程这一章把实际折腾过程中高频出现的问题集中整理一下方便你卡住的时候直接对号入座。6.1 问题速查表现象可能原因排查动作手机贴卡毫无反应卡是125kHz低频ID卡或NFC没开用NFC Tools确认检查NFC开关和天线位置能读出UID但读不出扇区卡是加密卡密钥未知扩充密钥字典或用mfoc做嵌套攻击钱包提示加密卡无法模拟钱包只支持非加密卡用生成空白卡找物业录入或用卡号模拟模拟成功但刷不开门UID随机化或门禁校验扇区数据改用全卡模拟或做卡号模拟对齐UID手环同步后刷卡无效同步失败或天线功率不足重新同步靠近读卡器多试几个角度昨天能刷今天刷不开钱包App被系统清后台把钱包加入自启动白名单和电池白名单电脑端nfc-list找不到设备驱动未装或权限被拦Windows装ACS驱动Mac检查隐私权限读卡读到一半中断卡移开了或后台被限制贴住不动关闭省电限制6.2 三个典型场景的完整排查场景一手机能读卡钱包说加密物业又不愿意帮忙录入。这时候的正解是回到MCT把dump完整导出到电脑用mfoc或者扩充字典把密钥跑出来确认门禁到底读的是UID还是扇区数据。如果只读UID就用卡号模拟如果读扇区那手机钱包这条路基本走不通得考虑专门的UID卡或者可写卡前提是合规使用自己的卡。场景二模拟成功了但每次刷都要贴很久有时候还刷不开。这通常是NFC天线位置没找对或者手机壳太厚。把手机壳摘了用卡的边角去扫描手机背面不同区域找到触发最灵敏的点用记号笔在心里记一下。手环同理手环的天线通常在表盘背面贴的时候要对准读卡器的感应区正中。场景三电脑上mfoc跑了一半失败。mfoc的嵌套攻击需要满足一定条件比如至少知道一个扇区的密钥、卡响应速度适中。失败是常见的多跑几次、换个读卡器角度、甚至换一张同型号的卡都可能成功。别指望一次就过。6.3 影响范围这件事的边界在哪从技术角度看NFC模拟门禁卡的原理并不复杂核心就是读取UID和扇区数据再复现。但从实际影响范围看它推动了两个方向的变化。一方面是门禁系统的升级。因为M1卡的复制门槛太低越来越多的学校和企业把门禁卡换成CPU卡把校验逻辑从认UID升级到认加密认证。这是防复制技术的正常演进也是为什么你现在去折腾新办的校园卡成功率比几年前低很多。另一方面是手机厂商把门禁卡功能做进了系统钱包提供空白卡这种正规路径——设备生成一张新卡由管理方授权录入。这条路既解决了便利性又不涉及复制原卡是相对稳妥的方向。提示自己持有的卡片、在自己有权限的门禁上做测试属于正常的个人设备折腾范畴。涉及他人的卡、未授权的门禁系统一律不要碰这不只是道德问题也涉及实际的管理规定。技术的边界感比技术本身更重要。7. 最后分享几个我踩过坑才记住的小经验写到这里流程基本走完了一遍。最后补几个零散但很实用的点。第一在动手之前先用NFC Tools把卡读一遍并截图存档。UID、SAK、ATQA、技术列表这些信息在后续排查问题时是重要的对照依据。我当时没存后来卡被物业换掉了想复现都复现不了。第二dump文件一定要备份两份一份在手机一份在电脑。手机丢了、刷机了dump没了之前跑密钥的功夫全白费。第三判断一张卡能不能模拟最省时间的顺序是先NFC Tools探类型 - 再MCT试密钥 - 再钱包试模拟 - 最后才上电脑端做深度破解。别一上来就搬出ACR122U和命令行那是杀鸡用牛刀而且配置环境的成本比前几步加起来都高。第四也是我体会最深的一点门禁卡这个领域的教程更新速度跟不上硬件升级速度。三年前能用的方法现在可能已经完全失效因为卡换了、系统升级了。所以遇到教程里说百分百成功的先打个问号自己动手验证一遍比什么都靠谱。技术分享的价值不在于给你一个万能答案而在于让你在卡住的时候知道往哪个方向查。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询