本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:LifeIsKillingMe
上回说到,张大妈带我入坑在天猫购买了小米手环5 NFC版,188元的价格在当时还算比较实惠。不过后来手环在PDD的价格呈跳水之势。所以,东西买了就不要再看张大妈了,以防心态失衡。同时呢,要想办法压榨所购商品的性能并发挥到极致,这才是极客的精神。
之前的原创文章分享了小米手环5NFC版初入手的基本感受,因为平时是老婆佩戴的,深度功能我也无从体验。老婆刚开始戴手环还蛮开心的,特别是第一次用手环刷卡过闸机坐地铁,轻松了不少。不过早上进公司打卡发觉APP中模拟门禁卡无法使用,下班手环刷闸机再无反应,对着小米雷军一顿怒骂。
我必须得解决啊,否则又要破费买Apple Watch 5了啊。那个天猫店和小米旗舰店的客服都是一问三不知,只得自行研究。交通卡的问题最终通过重置小米手环出厂配置得以解决,但是门禁卡的问题还是研究了好久,找了不少网上资料。这里分享一下解决的详细流程,希望对众多跟风购入小米手环5NFC的值友有所帮助。
什么是NFC?简单科普一下,NFC是Near Field Communication缩写,即近距离无线通讯技术。该模式就是将具有NFC功能的设备模拟成一张非接触卡,如门禁卡、银行卡等。卡模拟模式主要用于商场、交通等非接触移动支付应用中,用户只要将手机靠近读卡器,并输入密码确认交易或者直接接收交易即可。此种方式下,卡片通过非接触读卡器的RF域来供电,即便是NFC设备没电也可以工作。在该应用模式中,NFC识读设备从具备TAG能力的NFC手机中采集数据,然后将数据传送到应用处理系统进行处理。基于该模式的典型应用包括本地支付、门禁控制、电子票应用等等。
目前不少安卓手机及其穿戴设备都支持NFC,应用于各种现实场景。遗憾的是,苹果设备的NFC只支持自己的Apple Pay,安装其上的各APP无权使用NFC。一方面是,苹果公司不想将电子支付的利益让别人分得一杯羹;另一方面,NFC的存在客观上使得客户的隐私更易泄露。
NFC卡分类我们常用的NFC卡可以分为ID卡和IC卡。ID卡全称身份识别卡(Identification Card),为低频卡,工作频率为 125KHz-1000Khz(与大部分手机、智能设备工作频率不同,无法模拟),编号固定,卡号公开,不可写入数据,逐步淘汰中。IC卡全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card),工作频率为 13.56MHz(与大部分手机 NFC 频率一样,可模拟)。如果大家曾经在小米运动或小米穿戴APP中做过模拟门禁卡的操作,可以看到APP提示只支持13.56MHz频率的非加密门禁卡,也就是说只支持IC卡的模拟。
IC卡类型常用IC卡主要有以下类型(以下介绍来自网络):
Mifare S50(M1):MIFARE Classic是恩智浦半导体开发的可用于非接触式智能卡,符合ISO/IEC 14443 A类标准。用于公共交通票证等应用,还可用于各类其他应用有S20,S50(M1),S70几种规格,主要是根据存储器容量划分,存储器容量分别有320B,1K,4K。具有以下防干扰、轻松简便以及安全等特性。日常使用的电梯卡、门禁卡等智能卡发卡商所使用的都是 M1 卡,可以理解为物业发的原卡(母卡)。常见校园卡、公交卡等也是 M1 卡。M1 卡仅仅适合发卡方发新卡使用。
UID卡:普通 IC 复制卡,可以重复擦写所有扇区。UID 可被重复修改,响应后门指令(意味着可被使用后门指令检测是否为克隆卡的机器发现),遇到带有防火墙的读卡器就会失效。
CUID卡:UID的升级版,可擦写防屏蔽卡,可以重复擦写所有扇区,不响应后门指令(意味着不容易被反克隆系统发现),可以绕过防火墙。
CPU卡:CPU卡芯片内含有一个微处理器,配合操作系统即片上 OS,可以达到金融级别的安全等级。适用于金融、保险、交警、政府行业等多个领域。CPU 卡由 CPU 部分 7K 以及 M1 部分 1K 组成,最多破解其中 M1 部分,CPU 区域数据无法破解。实际上由于 CPU 部分和 M1 部分的数据会交互,所以基本上 CPU 卡无法破解。
IC卡的数据存储有16个扇区(0-15),我们这里最关注的是0扇区,这部分数据由制造商写入,前4个字节(8位)为卡号(UID),第5个字节为UID的校验值,后面几位为厂商信息(大部分门禁卡只读取UID,不会读取厂商信息,如果读取厂商信息,那模拟门禁卡就没辙了)。
所以NFC设备中的门禁模拟功能,其实就是IC卡复制的过程。小米手环NFC模拟的部分门禁卡无法使用,就是因为小米这一功能不支持加密卡,无法在手环上写入0扇区关键的UID数据。那么这以问题如何解决呢?可以通过模拟一张空白IC卡作为媒介,然后在手环上写入其他的加密数据;两部分数据合二为一,从而复制完整的数据。
准备工作要实现这一功能还是要付出一定成本的。(如果有带NFC功能的安卓手机同样可以实现)
首先需要购入读卡(写卡)器,在淘宝上以PN532为关键字搜索。
淘宝上的PN532有好几种,这种带外壳的大概50元左右。
这种要自己连线的价格便宜一些,30元左右。
我选择了后者,就是从这家誉诺电子买的套餐。这家店同时提供软件下载和基本教程。
这就是PN532读卡器。
340芯片,提供USB串口的转换,在Win10下运行稳定。
将两块芯片按照这一次序连接,不要接错,否则容易烧坏。(左侧PN532读卡器,右侧340芯片)
GND-GND,VCC-5.0V,SDA-RXD,SCL-TXD
将340芯片接入电脑的USB端口,成功后两块芯片都会红灯常亮。一般340芯片Win10电脑可以直接识别,无需安装额外驱动(我是Win10 2004)。
此外你还需要一张UID卡(或者CUID卡),一般买套餐卖家会提供2张,空白卡或者蓝色圆卡皆可。
软件MifareOne Tool,我使用的版本是卖家提供的1.66。这里提供下载地址,提取码: 8qkh。
详细流程下面开始详细流程 ,都是本人实际操作,亲测可用。
打开软件MifareOne Tool。
软件打开界面如下,按钮比较多;不过别担心,一般用不到这么多功能。
点击检测连接,如果看到终端显示以下信息,说明NFC设备已经连接成功。
将门禁卡放在PN532芯片上。
点击扫描卡片,看到终端显示卡片信息,说明读取成功。
点击一键解原卡,稍事片刻,终端会显示一连串数字,表示已经解码成功。同时会跳出对话框让你保存DUMP文件,随便命名。
将一张空白卡(UID卡)放在PN532读卡器上,点击扫描卡片,确保空白卡被正常识别。
然后点击高级操作模式->Hex编辑器
点击文件,打开刚才保存的DUMP文件,点击扇区0 有数据,将第0块的前8位数据拷贝出来。
回到高级操作模式中,点击UID写号,在弹出框中粘贴刚才拷贝的8位十六进制码。
成功后,终端会显示卡片已解锁的字样。
至此,同UID的普通卡已经制作完成。
下面用小米手环模拟这张普通卡。门卡检测->门卡模拟,需要几分钟的时间。
可以看到,这里我们是准备采用曲线救国的方式,先将门禁卡中的前8位码复制到一张空白卡中,模拟到小米手环上,然后再将其余加密数据写进小米手环,从而达到完整复制门禁卡的目的。
随后在手环中切换到之前模拟的卡片,靠近PN532点击扫描卡片。
扫描成功手环会震动提示。随后至高级操作模式点击CUID写,在跳出的对话框中选择第一步创建的DUMP文件导入。
写入成功后可以在终端看到完成!写入了63/64个块的字样,为什么是写入63块呢?因为之前一步已经从普通卡写入8位也就是1块数据。
如果有多张门禁卡需要模拟,重复上述操作。空白卡可以多次读写,多次使用。
全部完成后,如需绑定多张门禁卡,可以在手环中切换,门禁卡自动启用大概需要一秒钟时间,速度尚可,显示“靠近读卡器”就说明可以刷卡了。
现在老婆出门进出小区、乘坐地铁、出入大厦、进入公司打卡只需刷手上佩戴的手环即可,方便了不少。平日惯常对我又打又骂的她,也难得夸奖起我了,能够得到家人的认同还是非常有成就感的~
最后提一句,如果大家使用的空白卡是CUID卡,写入8位卡号这一步的操作会稍有差别。需要制作一个有原UID卡号的DUMP文件,然后点击CUID写导入空白卡。使用CUID卡可以绕过防火墙,如果大家通过UID卡模拟失败,可以尝试CUID卡。
这一方法对于小米手环4NFC也是有效的。同时,实现这一功能也有其他办法,比如有人就可以不需要额外的UID卡即可实现模拟加密门禁卡,不过操作就更复杂了,误操作的概率更高。
当然,各个公司的门禁卡情况各有不同,比如本人公司使用的是HID厚卡,PN532根本无法识别,也就无法模拟复制。还有如果读卡器是验证卡片中完整的厂商信息,也就是0扇区后半部分,基本上就无解了。
,