你知道门禁卡的原理吗?手机模拟门禁卡研究

本文详细介绍了如何使用NFCTool软件和蓝牙读卡器,配合安卓NFC手机,将加密门禁卡模拟进手机。首先破解加密母卡获取dump文件,然后制作非加密复制卡,接着在手机上模拟复制卡,最后将dump文件写入手机,实现手机替代门禁卡。过程中需要注意的步骤和可能遇到的问题也进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你知道门禁卡的原理吗?那你知道手机可以代替这些门禁卡了吗?如何将门禁卡、考勤卡、会员卡、停车卡、电梯卡等等各种卡片模拟进NFC手机里,从而用手机代替门禁卡?想要知道更多编程方面疑难解答,可以关注微信公众号:掌控安全EDU,给你更多更新鲜的知识!

一、软硬件准备

NFC Tool

手机上的IC卡读写编辑软件,搭配蓝牙读卡器或者OTG读卡器,可实现在手机上破解、复制门禁卡,是本文的主角。

软件已上架各大应用商店,包括华为、魅族、小米、360、百度、阿里、腾讯、豌豆荚等等平台。

蓝牙版读卡器

蓝牙版读卡器方便操作,可以随身携带,摆脱有线束缚,价格上也比普通读卡器贵不了多少。

安卓NFC手机

日常使用的安卓机子,主要带 NFC 功能就行了,现在的新机型一般都有模拟加密门禁卡的功能,我使用的是小米MIX2S,门卡功能隐藏在小米钱包里。其它品牌的手机系统自带的门卡模拟软件在操作上可能和本教程有差异,不过主要步骤和原理都是一样的。

 

二、大致流程

大部分手机是自带了模拟门卡功能的,但是这个功能不支持模拟加密卡,而现实生活中的门卡基本都是加密的,所以用手机直接模拟的门禁卡几乎都是无法使用的。所以我们的思路是,根据已加密的母卡制作一张非加密卡,然后用手机模拟非加密卡,最后将母卡的加密数据写入手机模拟的非加密卡中,以此完成手机对加密母卡的模拟。

NFC Tool 破解母卡,得到dump文件

NFC Tool 读取母卡卡号,写入非加密复制卡

NFC 手机模拟非加密复制卡

NFC Tool 写入dump文件到手机

NFC 手机模拟的卡片和原来的母卡一模一样,可以刷卡开门了

三、详细步骤

以下某些步骤看似多余,实际上每一步都有意义,一定要严格按步骤操作,切勿跳过和简化:

0x01 NFC Tool 破解母卡获取Dump文件

打开NFC Tool,点击”一键破解”,如果没连接读卡器,那么App会要求连接读卡器,连接读卡器成功后就把卡片放在读卡器感应区,然后点击”开始执行”,如果软件提示”未发现卡片”,那么你可以移动卡片后多试几次,有可能是卡片未放置在读卡器的信号区。软件发现卡片后,下面就耐心等待软件破解,一般几分钟到几十分钟就破解完了。

tips:

一键破解功能可自动识别并破解普通卡、国产无漏洞卡、国产兼容卡、CPU模拟卡、有漏洞全加密卡等;

一键破解时长和手机性能有关,超过1个小时仍不能破解,可勾选”强制云计算”重新破解,强制云计算一般10到20分钟就可以破解出1个key,如果你用有线读卡器破解无漏洞卡,手机电量不够用的话,可以参考手机NFC暴破无漏洞教程;

App如果检测到后门卡,会直接免密读卡;

只要破解没有停止,就不用管ERROR信息,如果破解意外停止,那么重新连接读卡器再次破解即可。

我们破解的目的是得到包含密钥的完整的dump文件,当然你也可以通过其他方式获取dump文件,比如叫物业拷贝给你。

0x02 NFC Tool 读取母卡卡号,写入非加密复制卡

这时,我们准备一张可以修改卡号的UID卡来做非加密复制卡,为了确保UID卡非加密,你可以先格式化UID卡。在App一键读写功能,右上角菜单里,有格式化按钮,读写UID卡前记得提前连接读卡器。

然后,在App一键读写功能,右上角菜单里,打开”修改卡号”功能,把母卡放在读卡器上,点击”读卡号”;然后,把复制卡放在读卡器上,再点击”写卡号”,写入完成后,我们就制作好了一张带有母卡卡号的非加密复制卡了。

0x03 NFC手机模拟非加密复制卡

用手机模拟0x02中得到的非加密复制卡,部分机型模拟的卡片不是很稳定,所以模拟成功后无法读写的话,只需要删除模拟的卡或者重启手机,然后多模拟几次即可

注意:如果模拟的是加密卡,部分手机会提示卡片加密,叫你选择是否只模拟卡号;部分手机不会提示,而是直接模拟卡号。不过只模拟卡号的话,几乎都是无法使用的。所以我们才需要制作一张非加密复制卡,从而让手机完整复制母卡数据。

0x04 NFC Tool 写入dump文件到手机

首先,我们在手机上把刚才模拟的非加密复制卡设置成默认卡(一般手机在刷卡的时候会出现默认卡片选择界面,设置默认卡片后手机刷卡时才能调用正确的卡片)。

然后,在NFC Tool 数据板块里,找到0x01步骤中获取的dump,点击”写入”,进入一键读写界面;也可以在App主页直接打开”一键读写”,然后在写卡选项里选择0x01步骤中获取的dump;前面步骤完成后,打开”延迟寻卡”,然后点击”开始写卡”,这时候快速的将手机放在读卡器上,等待写入完成。

写入成功后,大功告成!!!

0x05 手机模拟的卡片和原来的加密卡一模一样,可以刷卡开门了

如果测试开不了门,你可以读出手机的数据,和母卡数据做一下对比,确保所有数据一致。如果不一致,肯定是你操作有误,那么你删掉手机模拟的数据,再认真重复上述步骤操作一次即可。请注意,手机模拟的卡0块后几位无法修改,不过一般不影响最终结果。

滴,成功开门!!!

四、总结

复制成功不能用?有些门禁系统有反复制措施,一般有以下两种情况:

按照前文操作后,手机刷门禁无任何反应(正常情况手机会弹出默认刷卡界面),这种情况就没得搞了,其实你在没模拟之前用手机直接新建一张空白卡去刷门禁没有反应的话,即使最后模拟成功,也不会有反应的,检测教程里介绍过,这种情况只有用手机贴贴在手机上,效果也还不错;

按照前文操作后,手机刷门禁后,母卡就不能用了,此类门禁俗称滚动码系统,如果遇到这种系统,那你以后就只能用手机刷卡了,母卡就不能用了,滚动码系统不支持一卡变多卡。

 

如果你对文章内容持有疑问,欢迎关注微信公众号:掌控安全EDU

 

 

模拟门禁卡,需要了解门禁系统的工作原理。门禁系统通常由门禁读卡器和门禁控制器两部分组成。门禁读卡器通过读取门禁卡上的信息,将其发送给门禁控制器进行验证,如果验证通过,门禁控制器就会开启门禁。因此,要模拟门禁卡,需要模拟门禁卡上的信息并发送给门禁控制器进行验证。 在Android Studio中,可以使用NFC模块来模拟门禁卡。首先,在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.NFC" /> ``` 然后,在需要模拟门禁卡的Activity中,添加以下代码: ``` private NfcAdapter nfcAdapter; private PendingIntent pendingIntent; private IntentFilter[] intentFiltersArray; private String[][] techListsArray; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取NFC适配器 nfcAdapter = NfcAdapter.getDefaultAdapter(this); // 创建一个PendingIntent,用于将NFC标签的信息发送到当前Activity pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); // 创建一个IntentFilter数组,用于将当前Activity注册到NFC标签的ACTION_TECH_DISCOVERED事件中 IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); intentFiltersArray = new IntentFilter[]{ndef,}; // 创建一个String数组,用于设置支持的NFC标签类型 techListsArray = new String[][]{{NfcA.class.getName()}}; } @Override protected void onResume() { super.onResume(); // 启用前台调度系统,将当前Activity注册到NFC标签的ACTION_TECH_DISCOVERED事件中 nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray); } @Override protected void onPause() { super.onPause(); // 禁用前台调度系统 nfcAdapter.disableForegroundDispatch(this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // 获取NFC标签的信息 Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); byte[] tagId = tag.getId(); // 将NFC标签的信息发送给门禁控制器进行验证 // TODO: 发送验证请求 } ``` 在以上代码中,我们通过NfcAdapter获取NFC适配器并创建一个PendingIntent,用于将NFC标签的信息发送到当前Activity。然后,我们创建一个IntentFilter数组,将当前Activity注册到NFC标签的ACTION_TECH_DISCOVERED事件中,并设置支持的NFC标签类型。最后,在onNewIntent方法中获取NFC标签的信息,并将其发送给门禁控制器进行验证。需要注意的是,在TODO处需要实现发送验证请求的代码。 以上是Android Studio模拟门禁卡的基本原理,具体实现方式可能因门禁系统的不同而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值