【NFC】Android使用NFC模拟IC卡

2019-01-266580
AI 快速预览详细 收起
本文介绍了如何在已root的Android手机上使用NFC技术模拟IC卡。首先,使用TagInfo读取IC卡ID,然后通过RE管理器打开并修改/etc/libnfc-brcm-20791b05.conf文件,将读取到的IC卡ID写入配置文件中。保存修改并重启手机后,即可实现NFC模拟IC卡的功能。此外,还推荐了一个方便切换IC卡模拟的APP。
NFC是在RFID的基础上发展而来的,两者本质上并没有太大的区别,但细节方面还是有点不同:

1.NFC增加了点对点通信功能,通信的双方是相互对等的,而RFID是主从关系。

2.工作有效距离:NFC一般不超过10cm,而RFID最远的可以有几十米。

3.工作频段:NFC仅限于13.56MHz,而RFID有低频(125KHz到135KHz),高频(13.56MHz),超高频(860MHz到960MHz)。

       联想到之前做过的一个嵌入式项目使用的富士通的SL3S4011双界面存储芯片一般都是通过序列号ID来识别不同的卡片初步猜测该门禁系统的原理是通过读写器读取IC卡ID后根据设定的权限策略来判定是否有权限通过。所以主要的问题有两个,一是两者使用同一个频段,二是NFC模拟IC卡的ID。

       对于第一个问题我将手机靠近了IC卡后听到一声“叮咚”证明他们确实是在同一个频段。

       第二个问题是在Stack Overflow的这篇文章找到了答案,下面的内容是对这篇文章的翻译及运用
      前提条件:已经root了的Android手机且带NFC功能
1.使用“TagInfo”读取IC卡内部ID序列号:(如下图红色框内所示我的卡ID为C4 1A CA 88)
【NFC】Android使用NFC模拟IC卡图1
2.使用RE管理器打开/etc/libnfc-brcm-20791b05.conf:
【NFC】Android使用NFC模拟IC卡图2
如上图所示,原生的第一个红框内为45,第二个框内的数据是没有的。

我把它改成了上面这样,那这些数据是什么意思呢?

先看第二个红框内,0x33表示后面的数据我们是用来作为UID的,紧跟着的04代表后面有4个字节的ID,C4 1A CA 88当然就是上一步读到的IC卡ID号了;那为什么要把45改成4B呢?因为45代表的是总的数据长度,我们在后面一共添加了6个字节所以+6变成4B。

3.保存修改并重启。

大功告成啦,这个时候你去用手机靠近读卡器就能随意的出入门禁了。

补充:要是有很多IC卡需要模拟每次这样改岂不是很麻烦,后来我发现了这个APP可以方便地切换(http://nfcemulator.bmob.cn/)
作者:ValarHao


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
中二点
中二点
作者
我账号有毒
- 没有更多了 -