商务服务
Android开发NFC模拟卡功能(基于源码修改)
2024-10-31 18:44


NFC模拟卡功能是工作后的第一个项目,当时完全没接触过android,别说是代码,就连用的手机也不是andorid,所以当时遇到的一些问题现在看起来很蠢,都是一些基础问题。现在回头看实现当时需求的功能,可能1天的时间都用不到。

Android开发NFC模拟卡功能(基于源码修改)

需求:让手机能当做门禁卡刷开小区、办公楼闸机。

目录

1 NFC基础知识

2 读取NFC卡内信息

3 修改手机NFC的uid

        3.1 确认原始状态

        3.2 尝试修改这个值

        3.3 配置文件修改

4 总结

问题1:无论给什么权限的app,都不能修改/vendor/etc/libnfc-nxp_RF.conf

问题2:avc权限问题

整体流程


NFC技术支持设备之间进行非接触式点对点的数据传输,可以在10cm距离内交换数据,属于一种非接触式识别和互联通信技术,通常在移动设备、消费类电子产品、智能硬件工具间进行近距离无线通信。

图片来源于网络

其工作分为三个模式

  • 点对点模式(P2P mode)
    在此模式下,两台支持 NFC 的设备在短距离内直接通信。它用于安全支付、文件共享和设备配对等应用。
  • 卡模式(Card emulation)
    在此模式下,NFC 设备模拟一张非接触式智能卡。它允许设备与传统非接触式卡读卡器进行通信。例如,NFC 智能手机可以模拟一张交通卡,用于乘坐公共交通工具。以及本文提到的模拟门禁卡。
  • 读卡器模式(Reader/writer mode)
    在此模式下,NFC 设备充当读卡器或写入器,与非接触式智能卡或标签进行通信。例如,NFC 智能手机可以读取非接触式银行卡或门禁卡上的数据。

这个项目用到的模式就是卡模式和读卡器模式,先通过读卡器模式读取门禁卡上的数据,再写入手机中,然后进入卡模式,手机就可以当做门禁卡使用了。

标签:Tag,其中包含了少量的信息。具有不同的标准,执行不同的协议,不同类型的卡中可能包含不同类型的tag。

android提供了原生接口实现此功能,使用读卡器模式,通过NFC.Adapter实现对tag等信息的读取。

读取中分为三个优先级

  • NDEF.DISCOVERED
    此意图在以下情况下广播:检测到包含 NDEF(NFC 数据交换格式)消息的 NFC 标签或设备。检测到支持 NDEF 的 NFC 设备,但没有包含 NDEF 消息。
  • TECH_DISCOVERED
    检测到支持特定 NFC 技术的 NFC 标签或设备,无论是否包含 NDEF 消息。
  • TAG_DISCOVERED
    检测到任何类型的 NFC 标签,无论是否包含 NDEF 消息或支持特定 NFC 技术。

意图的优先级最高,其次是 意图,最后是 意图。这意味着如果同时检测到 NFC 标签和 NDEF 消息,则应用程序将首先收到 意图,然后是 意图,最后是 意图。

在Manifest中注册意图

卡中包含了很多数据,对门禁卡功能有用的是什么呢

        >>>tag中的uid,在非加密门禁卡中,仅比对此项是否与数据库中匹配。
可以理解为卡的“身份证”。 

读取uid信息,代码中的cardId变量

代码中读取的还有一些ndef信息,但后面也都没有用上了。下面是NDEF信息的解析函数

        3.1 确认原始状态

换了几台设备,读出的uid各不相同,但有一个规律:08xxxxxx。

这是源于NFCC协议的缺省,未设置情况下是以08开头的8位16进制uid。

        3.2 尝试修改这个值

在代码中对找到对这个值进行设置的地方,位于

问题:相当于将uid写死了。在后续的app中需要实现对这个uid的修改,如果在此修改则需要通过代码注入等方式,代价高。

        3.3 配置文件修改

寻找配置文件,在配置文件中修改对应的值。配置文件位于

对应的uid字段:NXP_CORE_CONF配置如下

其中33 , 04后跟的就是想要设置的uid。

到此,跟NFC相关的技术内容其实就已经结束了,想要实现手机NFC模拟门禁卡,其实就是修改uid的配置。这种方式只针对最简单的非加密门禁卡。

但是当时做的时候,困难才刚刚开始。

问题1:无论给什么权限的app,都不能修改/vendor/etc/libnfc-nxp_RF.conf

看吧,这个问题真的很蠢,稍微了解一点android就会知道,vendor下的文件怎么可能给你乱搞。论Read-only-file system的含金量。当时又搞avc,又搞挂载,反正一顿操作hhh。

还出了一个乌龙:突然有一段时间能用了。猜猜是什么原因

答案是想往手机里push文件,就需要root remount,这下好了,不是只读的了,当然就可以修改了,当时还以为解决了,白高兴半天。

但这也是为什么市面上第三方的NFC模拟卡软件都需要手机的root权限的原因,可能内部大多都是修改uid的这种逻辑。

如果不是源码开发,将手机root后,修改这个文件也可以实现NFC模拟卡功能。

因为是源码开发,后面修改

将系统读config的地方换到了可修改的位置,实现对uid的修改。

问题2:avc权限问题

这也是android源码开发比较常见的问题了,解决方案也很简单。

  • Step 1:抓取avc权限问题log
     
  • Step 2:使用工具audit2allow,执行audit2allow –i avc
     
  • Step 3:可以输出对应需要的权限如下(例
     
  • Step 4:找到对应.te文件
     
  • Step 5:例中位于
     
  • Step 6:在其中加入上面的输出
     
    以上就是本篇文章【Android开发NFC模拟卡功能(基于源码修改)】的全部内容了,欢迎阅览 ! 文章地址:http://lianchengexpo.xrbh.cn/news/12480.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://lianchengexpo.xrbh.cn/mobile/ , 查看更多   
最新新闻
二胎概念火了!任泽平:未来四胎五胎可能给奖励
  人口政策问题再次广受关注。  昨日晚间,央行微信公众号发布题为《关于我国人口转型的认识和应对之策》的工作论文,聚焦了
全球下载量突破20亿时TikTok遭遇“围剿”,张一鸣对公司员工说了啥
抖音短视频国际版TikTok近日在美国的遭遇不断反转、不断刷新。虽然特朗普对其封禁令尚未最终拍板,但TikTok在海外年轻人中的火爆
如何查询手机流量?查询手机流量方法教学
  手机是一个我们现在广泛使用的电子产品,我们除了利用手机进行通话之外,最多的就是利用手机上网了。如果想要利用手机上网的
孙楠:希望自己的音乐带给观众快乐
  中新网杭州6月25日电 (胡小丽 刘文彬)1990年,孙楠发行了首张个人专辑《弯弯的月亮》,从此走上职业歌手的道路。到今天,已
【夜读】7条成长建议,送给正在努力的你
01改变自己会痛苦,不改变自己会吃苦不抗拒改变、不用陈旧的方式去处理新问题,是一个人走向成熟的标志。很多时候,只是一个细节
tiktok前身是什么发展历史,一文带你了解tiktok发展历程
在互联网发展如此迅速的今天,各种的媒体社交改变了我们的生活,带来了更多的便利条件,让我们了解这个周围以及世界的最新咨询。
中考倒计时,科学备考秘籍请收好
  本报记者潘洁婷通讯员王晓敏  今年是“双减”政策实施以来的首次中考,距离2022年中考还有不足一个月时间。备考冲刺阶段,
千万粉丝!他突然全网被封
近日,在抖音拥有1800多万粉丝的倪海杉账号被平台封禁。关于倪海杉账号被封原因,网络上有多种猜测。另外,倪海杉在快手上拥有50
全新 Model 3 发布!内外饰全面焕新,屏幕换挡进入全民时代
6年前,特斯拉为 Model 3的亮相开了一场盛大的发布会,特斯拉首席执行官、首席设计官悉数到场。Model 3是公司当前的头等要事。马
一部具有重大警世意义和很高文学价值的力作——评屈全绳的长篇小说《鹅头岭》
作者:汪守德一按一般人的想象,有着数十年从军经历的老将军,离休之后不再为公务缠身,不再因百事纠结,或写一点回忆录之类的轻
本企业新闻
推荐企业新闻

点击拨打: