本人非相关专业人士,仅记录探索过程。其中提到的结论和分析均有可能出现错误。因本文章造成的一切后果均与本人无关
本实验进行地点为原重庆互联网学院
学校搬了新校区后,宿舍的门从传统的钥匙变成了类似于酒店的IC卡片。本来正在制作中的电机联网用手机开门便搁置了,开始研究了通过手机打开门的方式。
尝试使用设备NFC模拟
手机NFC直接模拟
我使用的小米手机,所以按直觉,当然是先尝试使用了小米钱包中的门卡模拟功能。
使用手机直接模拟后的门卡,在前几个扇区上,和实体门卡没有任何区别,但是介于当时读卡器还没到,所以我的探索当时也止步于此。
虽然前几个扇区和原门卡一致,但是在使用手机刷卡时,门锁没有任何反应。手机直接模拟以失败告终
手机模拟白卡后写入数据
在网上搜索了很多资料,发现了一种新的方法——可以通过将加密卡的第一扇区写入到一张空白卡中,再让手机模拟。这样手机就可以模拟出一个除了第一扇区,其余全为空的白卡。接着,再使用读卡器写入完整数据即可。
这时候,读卡器模块正好到手了,便进行了尝试。
- 首先通过 M1Tools 读取房卡和白卡,导出 HEX 文件
- 用 WINHEX 打开房卡文件,把第一扇区的数据复制到白卡的第一扇区。保存关闭写入白卡
- 打开手机,模拟实体门卡,将只写入了第一扇区的卡片贴到手机后。
- 打开这张卡,贴在读卡器上,再写入完整房卡数据
完成后,再尝试开门,见证奇迹的时刻!!!
失败。。。还是没反应
手表NFC直接模拟
我现在用的手表是华为 GT-4,也有着NFC模拟门卡的功能。但是因为以前在其他地方使用的时候,小米手机模拟成功,华为模拟不成功,所以一直对华为设备模拟加密卡有一定偏见。但是这次直接模拟加密卡,在扫描两次后,居然成功开门了。
再次使用手机读取华为手表门卡中的内容,发现和手机读取的门卡相比,第一扇区甚至还缺少后面几位的数据
分析门锁对卡片的检测
从以上的两个实验来看,门锁对小米手机模拟的完整数据的门卡没有任何反应,对华为手表模拟的不完整数据的门卡却可以正常开门。另外,尝试了使用空白M1卡进行开门。在没有数据时,门锁有反应,但不会开启锁芯。
小米手机 | 华为手表 | M1空白卡 |
正常模拟,无法开门 | 正常模拟,正常开门 | 不模拟,无法开门 |
根据门锁的表现,可以粗略得出以下结论
表现 | |
类型错误,数据正确 | 不反应 |
类型正确,数据错误 | 不开门,蜂鸣器连续快速短响 |
类型正确,数据正确 | 正常开门,蜂鸣器播放音乐 |
看来,门锁的读卡器中存在防火墙。在卡的类型出错时,便无法反应。否则,便校验卡片的数据进行对应的提示。
看来手机无法模拟是硬件上的问题,我们没办法左右,手表上使用线圈又有点过于小了,刷卡非常不方便,每次都要对半天位置。
最终 Workaround
既然没办法通过手机模拟,那么直接通过硬件实现就行了。但是因为手机本身有磁场影响,直接把卡放在手机后面当然是行不通的
(部分手机可能可以。试了下索尼 Xperia 金属壳子的可以,只要不在NFC天线旁边)
于是在网上购买了一批 NFC 贴纸,各种形状的。来测试每种形状的体验

(顺便吐槽一句,好像这次买的 PN532 是wai货,不把线圈怼在上面根本识别不到,哪个**画的PCB,还卖这么贵)
加上一批屏蔽膜,用于屏蔽一小块的手机信号。
把加密卡跑了一下午,获取卡片的密码后,完整读取卡片扇区,写入贴纸标签,贴上屏蔽膜,粘在手机壳内,成功尝试开门
对数据进行的对比分析,后面再更新
admin01
非常好解决方法,使我备受启发,爱来自桥的城市
hina
我了个admin01