1.项目背景介绍
NFC的出现,取代原有的磁卡,芯片卡等,但是,也随着NFC的发展,人们发现手里的卡片也越来越多,公交卡,地铁卡,小区门禁卡,公司门禁卡,电梯卡...实体卡片携带不是很方便。后面,Apple率先推出了带有NFC功能的手机,之后,国内的很多厂商,华为,小米也推出了带有NFC的功能的手机。但是,目前的NFC功能主要以支付和交通卡为止。在比如门禁卡等领域则需要和产商合作,因此,很多人也说,NFC没什么用处。要想发挥NFC最大的用途,需要朝着多合一的方向努力。因此,借着这次机会,我想产生门卡的模拟。
2.开发平台-ST25R3911b-DISCO介绍
本次的开发平台基于ST25R3911b-DISCO,公司得知我要做门卡模拟,还很贴心地寄了几块NFC 标签。
ST25R3911b-DISCO带了一块主控STM32L47b的MCU,还有核心的NFC芯片ST25R3911b,支持目前常规的NFC协议,详细介绍见官网https://www.st.com/zh/evaluation-tools/st25r3911b-disco.html。此外,厂家提供了完善的调试工具链,包括ISO15693、ISO14443-A/B、NFC和工业读写器的WindowsPC软件,ST25-PC,还有专门用于调试ST25R3911软件ST25R3911 Discovery GUi。相应的板子的固件源码也可也在官网找到,详见https://www.st.com/zh/nfc/st25r3911b.html#tools-software。以下是两款软件的部分截图。
3.开发方案
3.1安装了ST25PC-NFC后,用Micro-usb连接板子和PC,进行读写测试,写入不同类型的NDEF数据,一些正常。这表明,一旦我能成功读取需要复制的卡片的信息,我就可以用闲鱼的空卡开进行门卡模拟。接着尝试进行门卡信息读取。
3.2 自有门卡读取
类似于读取ST的标签,当我用自带门卡靠近STR3911-Disco是,成功读取了UID,但是,当进行卡内内信息读取时,告知卡不在区域,读取信息失败。这个问题明显不是卡不在区域,自始至终卡都不离开读卡器。猜测两个原因。1.协议不支持。2.卡被加密。
3.3原因分析
仔细查看手册,官方说了支持Mifare协议和自定义协议,而且就算协议不同,也是可以读取的,因此,初步排除这个原因,为了确保正确排除,查看源码。下载源码,Keil打开,发现源码确实有Mifare的支持,排除这个原因。
怀疑是加密的原因,尝试解密,Mifare Classic tool是常用,也是比较好的解密工具,下载安装,用NFC手机读取,发现手里的所有卡都没法解密,前面扇区无法读取。读取失败,由此,忍痛放弃这个项目。
4.总结
ST25R3911读卡器没问题,空卡没问题,因此一旦能正确读取想复制的卡片信息,那么整个卡模拟就可实现。但是在本项目中,由于加密卡无法解密,无法完成整个流程。虽然未有预期成果,但是可以为后续的卡片模拟提供参考。