id门禁卡复制到手机_手机NFC也可以刷ID卡门禁?无聊测试居然成功了

0d793b63eafaf198df02e9287681166a.png

前段时间换了个K20pro,有NFC功能后手又痒了,就想折腾一下NFC的日常使用。

62d30306560213761ccefc7f643beca4.png

小区的门禁前几个月刚换成了亲邻开门,可以用微信小程序开门,但每次都要拿手机出来点几下(特别是手机提着东西的时候),还是没有手机接触式开门方便。

1a2e5fae75acb4b347a51824b430535d.png

拿出家里的门禁卡放手机背面,没反应,我NFC应该没问题呀!换另外一台华为手机还是没反应!上网一查,我家的门禁卡居然是ID卡!但还是不死心,在小米钱包里虚拟了一张门卡,放到小区门禁读卡器上,也没有反应,感觉这次凉凉了。

小知识:ID卡和IC卡有什么不同

ID卡含固定的编号,无法写,只能读取ID号,I频率为125kHz;

IC卡是能读能写的,能加密,频率13.56MHz。

现在很多手机的NFC都兼容IC卡的频率

既然门禁不行还是要把NFC公交卡搞定吧。跑去电信换了NFC-SIM卡,装了天府通又经过了一番折腾终于搞好了,试了一下还不错,挺方便的。

(关于天府通开卡我会另发一篇文章)

741704a1810e4ab9eb3b9a8b517f1d48.png

回家的时候手机无意间碰到了门禁读卡器,居然读卡器有反应了!

显示:此卡未授权,请联系管理处。下边还有一串ID:*******!

990cdbbeb66a32fb7ef51791e7382217.png

既然能读了!这下又燃起我手机开门禁的希望了!

马上跑到物业让帮忙加一下,结果手机放到物业的读卡器让还是没有反应!物业的工作人员也说,他们试过手机,手环都加不了。

既然门禁读卡器能够识别,那就说明门禁读卡器支持。只是物业的读卡器不能读取。想起刚才显示的ID号,就让物业帮忙手动输入ID 号(门禁读卡器上显示的号码)。

添加完成以后拿手机到门禁那里一式,立马就开门了。

虽然能开门了,但还是有个问题没有想明白。

门禁读卡器为应该是IC卡+ID卡二合一的。

但是为什么我用小米的虚拟门禁卡就没有反应呢?

突然想到前几天用的手机壳为了能在开车的时候方便,贴了一个车载磁性支架的铁片。拿出手机壳套上,再去刷,果然没有反应了!看来就是这个铁片刚好铁道了NFC的位置上,屏蔽NFC的信号。

拆掉手机壳,切换到小米钱包,果然有反应,直接跳到了虚拟门禁卡的界面。

e29430524c0d9487ae6dc253aae06c58.png

大家一定要注意,NFC芯片的位置最好不要有金属阻挡。

至此总结一下:

手机能刷开ID卡的门禁,并不是应为手机或者NFC-SIM卡能识别频率为125kHz的信号,而是由于小区的门禁读卡器是用的IC卡加ID卡二合一的读卡器。

对于还是ID卡门禁的朋友可以建一张虚拟门禁卡,或者换一张NFC-SIM卡,拿到门禁读卡器那里去试试,看读卡器有没有反应。如果有反应的话,那就可以添加进去开门。

如果不行,还有一种方法就是TB上买个超博ID卡贴,让老板帮你复制好,贴到手机背面或者放到手机壳里边就行了。

365059277a2fb300569299ebb9b5ca67.png
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,演示了如何实现将IC卡门卡的信息保存到手机NFC中: ```java public class MyHostApduService extends HostApduService { //门禁卡信息 private byte[] accessCardData = null; //APDU指令 private static final byte[] SELECT_AID = { (byte)0x00, (byte)0xA4, (byte)0x04, (byte)0x00, (byte)0x07, (byte)0xF0, (byte)0x39, (byte)0x41, (byte)0x48, (byte)0x48, (byte)0x30, (byte)0x31, (byte)0x00 }; private static final byte[] READ_BINARY = { (byte)0x00, (byte)0xB0, (byte)0x00, (byte)0x00, (byte)0x00 }; private static final byte[] UPDATE_BINARY = { (byte)0x00, (byte)0xD6, (byte)0x00, (byte)0x00, (byte)0x00 }; //模拟卡AID private static final byte[] AID = { (byte)0xF0, (byte)0x39, (byte)0x41, (byte)0x48, (byte)0x48, (byte)0x30, (byte)0x31 }; @Override public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) { if (Arrays.equals(SELECT_AID, commandApdu)) { return new byte[] { (byte)0x90, (byte)0x00 }; //返回成功 } else if (Arrays.equals(READ_BINARY, commandApdu)) { return accessCardData; //返回门禁卡信息 } else { return new byte[] { (byte)0x6A, (byte)0x81 }; //返回无效指令 } } @Override public void onDeactivated(int reason) { accessCardData = null; //释放门禁卡信息 } //保存门禁卡信息到模拟卡中 public void saveAccessCardData(byte[] data) { accessCardData = data; } //写入模拟卡中的门禁卡信息到手机NFC芯片中 public void writeAccessCardDataToNFC() { NdefMessage message = new NdefMessage(new NdefRecord[] { NdefRecord.createMime("application/vnd.example.android.beam", accessCardData) }); Ndef ndef = Ndef.get(getIntent()); try { ndef.connect(); ndef.writeNdefMessage(message); ndef.close(); } catch (IOException | FormatException e) { e.printStackTrace(); } } } ``` 在调用此服务的应用程序中,可以调用saveAccessCardData方法将门禁卡信息保存到模拟卡中。然后,可以调用writeAccessCardDataToNFC方法将模拟卡中的门禁卡信息写入手机NFC芯片中。 需要注意的是,此示例代码仅演示了将门禁卡信息保存到模拟卡中并写入手机NFC芯片中的基本过程,实际应用中可能需要根据具体的门禁卡读卡器和IC卡门卡进行优化和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值