我正在尝试实现模拟 Mifare One(1K/S50,ISO14443A)芯片的功能,以便能够使用具有 NFC 功能的手机而不是物理 Mifare 卡,或者如果可能仅将数据发送到读卡器。
我有这种类型的阅读器/编写器:https ://www.evelta.com/er302-high-frequency-nfc-writer-usb/
在浏览了论坛,stackoverflow 问题后,我发现这篇文章是最好的例子:
我实现了 HCE 部分,运行程序,读者认为我的手机是 Mifare 芯片,到目前为止一切都很好。
我的问题:
无论我尝试使用什么“标准”身份验证密钥......它都会给我身份验证错误。我读了这个关于 Auth: Authentication failure for Mifare 1K NFC tag using ACR122U NFC reader的问题,它适用于物理 Mifare 卡......但我不知道如何设置或了解模拟的密钥。
我不明白为什么这个例子模拟了确切的 Mifare 芯片类型......即使断点在 APDUService 中也不起作用,但是阅读器以某种方式检测到 Mifare 便宜。
读完之后,我发现我不能 100% 模拟物理卡,所以我必须以某种方式在我的 APDU 响应中发送我想要的所有数据(我相信这是收发部分)。
但是我什至无法进行身份验证。
我试图寻找其他可能的解决方案:
AndroidBeam : Android - Android p2p...听起来很简单,相对高级的 API,但它已被弃用,而且不保证阅读器甚至会使用 Android...它可能是一个“简单”的 USB 阅读器硬件,就像那个我用。
SecureElement:具有讽刺意味的是……它似乎是最推荐的,我读到“是的,mifare 有可能”之类的东西,但我找不到一个很好的例子,谷歌官方文档也没有任何好的例子。我读到它适用于“ISO/IEC 7816-4”,但 Mifare 1K 是 ISO14443A,所以我对这个 API 有点怀疑。
“简单地”将数据发送给阅读器:如果我可以在阅读手机时简单地将数据“推送”给阅读器,而不会使事情复杂化或模拟任何事情......那就太好了,但我不知道是否这甚至是可能的。整个 NFC 话题似乎越来越复杂。
所以总的来说,我只需要做一件事:获取数据并将其发送给阅读器。
我意识到这是一个童话般的幻想,相信它听起来很简单,但我希望有办法做到这一点。
如果我可以自己发送数据,而无需模拟 Mifare 或其他任何东西……毕竟重要的是卡上的数据,而不是芯片的类型,解决方案越简单越好。
对于可能的英语语法错误,我们深表歉意。