现在很多手机都带了NFC功能了,但使用场景有限。比如:
- 只有少数城市的公共交通系统支持少数型号的手机刷卡,大部分时候还是要自己办一张公交卡的。
- 支付宝有读卡进行充值的功能,也只有对应城市的公交系统接入才可以。
- Apple Pay 和银联的云闪付,但在扫码支付大行其道的当下,使用限制很多。
这篇文章就带领大家用NFC手机代替门禁卡。需要满足的条件如下:
- Android 操作系统
- 已 root
- 支持 NFC
- 门禁系统只校验卡ID
写到这里就有一点标题党的感觉了(括弧笑),不过这几个条件还算比较容易满足的,而且操作起来也不难。笔者现在宿舍的门禁已经用手机刷了,不会再有忘记拿卡的尴尬,只需要手机亮屏就可以,甚至不需要解锁屏幕。
好,现在开始一步一步搞定它吧!
原理
每一张卡都有自己独一无二的ID号,就像身份证号一样不会重复,我们所要做的就是获取这个ID号并将其写入手机NFC配置文件里相应的地方,达到“复制”门禁卡的目的。若门禁系统仅仅检查卡ID,那手机就可完全代替门禁卡了,而大约80%的门禁系统都是这么干的,所以成功率很高。若是检查其他字段,尤其是加密信息就无能为力了,这也是这里只代替门禁卡而没有完全代替饭卡的原因。
当然,广泛使用的mifare方案已经被破解了,可以完全复制,但是也没太容易。
获取 root 权限
已有 root 权限的读者可以跳过这一步了。没有获取 root 权限的读者可以使用 KingRoot来获取 root 权限,官网有详细介绍,支持绝大多数 Android 设备,如果你的手机不在支持列表里,可以到机锋论坛等论坛寻找方法,很多大神给出了自己的解决方案。
读取卡ID
需要一个NFC Tools 的工具,大家不要百度了,找一个靠谱的下载链接真麻烦,可以到这里下载。
安装完成后,在NFC开启的情况下,在应用主页读取你的门禁卡会显示相关信息,我们需要的是Serial Number
字段,记下这一串十六进制数字,如下图。
更改配置文件
有了 root 权限和序列号之后就可以更改配置文件了,这里需要一个可以浏览并修改根目录的文件浏览器,推荐 RE 文件浏览器 / ES 文件浏览器 / Solid Explorer 等,大家可以自行搜索下载。
接下来需要找到配置文件所在的目录,一般来说应该在 /system/etc
下,大多数手机使用的是恩智浦的解决方案,一般配置文件名为libnfc-nxp.conf
,如果找不到,大家可以搜索自己手机型号的配置文件位置。
使用文本编辑器打开配置文件,需要修改的地方有两处:
-
根据卡类型修改工作频率
找到以下字段并根据卡类型修改,一般是13和19,对应的0x01和0x02,可先保持默认,有兼容的可能性,不成功可再修改。
修改频率 - 修改ID
找到以下字段,应该在文件的最后。注意33, 04
开头的一行,默认的一般为33, 04, 01, 02, 03, 04,
,其中33表示ID,04表示长度,后4位为ID值,修改为卡的ID值,注意格式,保存即可。
到此就完毕啦,现在可以拿手机去门禁刷卡试试了,若门禁系统给力的话以后就可以直接刷手机出入了。笔者手机型号为 Nexus 6p,在刷手机时手机必须亮屏,未在其他型号测试,欢迎反馈。
这篇文章也同步发布在我的博客,欢迎关注。
网友评论