问题提法不太准确,正常说法应该是:如何用手机NFC替代门禁卡。之前奇客已回答过NFC手机模拟加密门卡的问题,这里要特别说明的是,我们常用的门卡大多是IC/ID卡,比较高端的CPU卡,由于内置芯片不一样,并非所有智能卡都能用手机NFC模拟。
NFC通信安全系数较高,华为小米等安卓手机加入这项功能,使移动支付、模拟卡等应用场景得到丰富。乘公交、商超购物、入户门禁,刷手机就能实现,当然比携带实体卡片更方便些。不考虑蓝牙解锁、APP云端开门的情况下,NFC手机充当门卡无疑是很多用户希望拥有的功能。那么,NFC能替代小区门禁卡吗?
安卓NFC手机复制加密门卡教程
对于加密小区门卡,如果物业不给授权,不帮我们写手机NFC虚拟卡,那就没办法了?当然不是。如果物业发的门卡要验证厂商码,我们就无法使用手机NFC来模拟,没有厂商号复制卡才有用。在合法使用前提下,业主可以尝试解密克隆门卡,还可以帮其他邻居复制门卡。只是,你把物业的事给干了,导致他们的卡卖不出去,他们会怎么想。
▲从门卡外观可以简单分辨卡类型,无编号的蓝色钥匙扣一般是IC芯片。从天线形状分辨适用于标准大卡(身份证尺寸),小卡、异形卡、酒店房卡(特殊加密卡、滚动码不可复制)除外。
NFC手机模拟加密门卡
设备:一体式PN532读写器(功能更加大的PM3,支持低频/高频两种RFID卡),小米NFC手机或NFC手环,被模拟的门禁卡/电梯卡,
软件:PL2303驱动程序先装,蛐蛐GUI/NFC上位机软件(后者半加密卡可搞定,安卓手机端有NFC Tools),M1卡分析助手,空卡dump文件
需要以上套装可以PM
1、解密门禁卡
使用PN532对被模拟的门禁卡进行解密操作,获得dump文件。市面上多数IC卡都是半加密,PN532解密成功率达90%,而全加密卡(16个扇区都有特殊密码)不一定能破解。
如图运行蛐蛐2.1,将门禁卡放在,使用默认密钥读取,如果解密成功软件根目录自动生成key.dump文件(包含加密信息,重命名为门卡.dump)。如果运行1小时以上无密钥信息,就只能尝试PM3解密。
2、制作模拟卡
使用蛐蛐将空卡dump文件写入门禁卡,即浏览打开空卡dump后执行写卡操作。如果你没有空卡dump文件,也可以用UltraEdit编辑器打开dump,将16个扇区16对Key记录下来(每扇区4块一共64行数据,扇区最后一行开头12位为Key A,末尾12位为Key B),再将所有Key都改为FF,然后另存为空卡dump,继续写卡操作。
3、用手机模拟空白门卡
打开小米钱包,进入门卡模拟,检测成功通过身份认证,1分钟即可模拟空卡。PS:非加密门卡这一步直接模拟就行了。
4、写入加密数据
将门禁卡放在PN532读写器上,再次使用已知密钥读取,完成后浏览打开第1步保存的门卡.dump文件,然后拿走门禁卡,双击小米手机HOME键调出NFC模拟卡界面,并将背面NFC感应区放在PN532上面,点击写卡开始写入加密信息,写入完成以后就可以拿手机去测试刷卡了。
用同样方法,小米手环也可以间接复制加密的IC卡(前提是能解密),但是改不了0扇区0块后16位,也就是厂商码。如果你的门禁系统不校验厂商码或者不使用滚动码,那就能用,反之就不能用,还是老老实实用实体卡吧。
苹果手机NFC不能直接模拟门卡
苹果手机Apple Pay在开通银行卡支付时,不会直接使用卡号,而是分配一个独有的设备账户号码,这个号码经加密储存在专用安全芯片中,支付时该设备码被读取出来,这样不会泄露真实卡片信息。由于iOS系统的封闭性,苹果未开放NFC端口,所以无法用NFC模拟门卡。不过,在后续升级新版iOS 12中,苹果或将继续开放NFC权限,毕竟iOS 11更新已加入支持模拟北京上海公交卡。
另外,iPhone NFC设备账号码可以被嗅探出来,某些RFID读写设备(结合调试软件)能够获取到变换UID和银行卡号,将NFC模拟银行卡卡号写成智能门锁的密码,也能实现用苹果手机开门的目的。因为采购设备就要花上百元,普通消费者没时间折腾这事。
这个做法涉及Android NFC APDU指令,目前仅限于开发学习,有兴趣的朋友自己研究。需自行开发Reader功能,读取银行卡卡号需要发送两条APDU指令。
第一条:复位指令。复位指令分两种情况:
借记卡:00A4040008A000000333010101
贷记卡:00A4040008A000000333010102
如果成功会返回一个大于2字节并且以9000结尾的数据,否则会返回一个2字节非9000结尾的数据。
第二条:发送获取银行卡卡号的指令,借记卡和贷记卡都是:00B2011400
如果指令正确执行会返回以70开头、9000结尾的数据,这串数据里包含有银行卡卡号。
ADPU指令还可以获取手机电子钱包余额,有兴趣者可以阅读这篇文章https://blog.csdn.net/u012158332/article/details/75608212
提取卡号的方法:寻找标识5A,5A后面一个字节为银行卡卡号的长度,紧跟着就是银行卡卡号。需要注意的是,如果提取到的卡号最后一位为F应舍弃掉。
▲知乎上有个问题介绍了NFC手机获取银行卡信息,经过测试结果如上图。当然泄露这些信息不会直接导致资金被盗(不过你最近交易记录,如果老婆能查到呢,哇嘎),银行卡要靠近手机特定NFC感应区,超过5cm读出的概率就很低了。
目前主流NFC功能手机及可穿戴设备
苹果:iPhone 6/6 Plus,6s/6s Plus,7/7 Plus,8/8 Plus,X/Xr/Xs/Xs Max,Apple Watch
华为:Ascend P10/P10 Plus/P20, Mate 7/8/9/10/20,荣耀 6/6 Plus高配版/8/9/10/V10/Note 10/Play/Magic2/V20,Nova 2s,麦芒6,荣耀手环4 NFC版,荣耀手表
小米:5/5s/5s Plus/6/8,Note 2/3,MIX 1/2/2s/3,小米手环3代NFC版
三星:Galaxy C5/C7/C9, Note 3/4/8/II,S5/S6/S7/S8/S9,W2018/W2019,A8s,A9 Star(Lite),J3
魅族:MX4 Pro,Pro 5/6 Plus,16s
一加:3/3T,5/5T,6/6T
HTC:One M8/M9/Max/VX/X/XL,U Play/Ultra,U11,U12+
OPPO:R17,Find 7/9,A37
其他:VIVO Xplay,联想Z5Pro,坚果R1,努比亚Z11/Z17(s/mini),ROG 游戏手机,金立M7/M2017,中兴天机7s,诺基亚7/8 Sirocco,索尼Xperia XZ2,Moto Z3,LG V30,夏普S2