门卡模拟是小米钱包内通过NFC(近场无线通讯技术)实现的可模拟部分门禁卡的功能,模拟成功的门卡可以与其他MIPay卡片共存,使用时需验证指纹。小米MIUI最早于2017年底便开始内测门卡模拟功能,2018年1月公测,3月正式上线稳定版,支持小米5及之后的所有支持NFC的小米手机。
门卡模拟的实现原理简单来说,就是用手机读取门禁卡的ID,也就是门禁系统用来识别用户身份的ID,使用时把手机NFC芯片的ID改为读取的门禁卡ID。
美中不足的是,小米钱包门卡模拟支持模拟的卡的范围十分有限,小米官方明确表示:
目前仅支持模拟市面上未经加密且频率为13.56MHZ的门卡;带有门卡功能的银行卡和储值消费、公交码圆消费等功能的门卡暂时不能被模拟。即使模拟成功,这些卡片也不具备银行、公交等功能。
▲门卡支持范围
现存问题
那么问题来了,现在很多高校中在使用的“校园一卡通”,通常会集成饭卡、热水卡、洗衣卡甚至银行卡的功能,用于这些储值功能的扇区一定是加密的。按照小米的提示,这些卡是不能被模拟的,即使有“漏网之鱼”被模拟成功,也无法使用储值功能。事实上,经过多张卡多次试验之后,我也没碰到过可以模拟成功的,所有带储值功能的门禁卡在检测时都会提示“读卡失败,可能存在加密区,请重试”。如果检测时完全没有反应,那么这张卡并不是13.56MHz的,连成为“漏网之鱼”的机会也没有。
▲读卡失败
解决办法
经过一些尝试之后,我发现一种可以解决频率为13.56MHz、有加密区的门卡无法模拟的办法,我身边并没有找到频率非13.56MHz的卡,没做试验,理论上同样是可以的。
这个办法操作极为简单,但需要一定成本,因为要用到一款软件—“NFC卡模拟\NFC Emulator”,所以需要另一台(注意是另一台)已root并支持NFC的手机,这里我用的是一台已经刷了开发版并已root的小米5。
软件的使用十分简单:贴卡读取——命名——OK,使用亦是十分简单:亮屏(无需解锁)——刷手机——开门,听说刷exposed框架会有插件可以实现息屏刷卡,我还没有尝试,毕竟只是在中间搭桥,最终目的还是用门卡模拟功能模拟成功。
模拟成功后试用一下是可以用的,便可以进行下一步操作,将要被模拟的手机亮屏,不要解锁,因为如果用小米钱包开了公交卡并设为默认模式,贴在别的设备上默认用公交刷卡,所以在锁屏界面点亮即可。打开小米钱包——门禁模拟,开始检测。
检测成功会迟祥塌出现“开始模拟”按钮,点击“开始模拟”,会出现“用户协议”与“身份验证”界面。
同意协议并验证身份后,便可以开始模拟,模拟过程中两台手机并不需要再次接触,就像我们之前提过的,只是模拟ID,检测时已经读出。模拟过程大概需要十几秒,远少于提示的一分钟。
模拟成功后需要填写门卡名称,之后便可使用,使用时需要验证指纹。
后记
以上便是可以宴闷解决问题的一种方法,在使用这种方法之前,我还尝试过另一种方法,中途卡住了,用上面的方法成功了之后就没再折腾,这里把思路说一下,有条件的大佬可以试一下。
这个方法同样基于模拟ID的思想,具体思路是把卡的ID读出来,写进不加密的白卡,之后模拟之。这里要用到另一款软件——“MCT(MifareClassicTool)”,是一款可读可写的软件,并且不需要root。
我原本想用MCT读出卡片内信息,写进白卡,之后用门卡模拟来模拟复制后的卡,但是我的饭卡从读取后的信息来看,0-9扇区是加密的,ID在0扇区,无法读出。
我的尝试便止步于此,后来查阅资料了解到122U CUID破解卡片之类的,但是现买需要时间,于是曲线救国想到了之前的办法。有条件的老哥可以再试一下。
纯属个人经验与见解,如有错误请不吝赐教。
想看到更多这类内容?去APP商店搜IT之家,天天都有小欢喜。