如何与 Felica memory/smart 卡片通信?

How to communicate with Felica memory/smart cards?

我有一张 Felica 卡。第一个问题是这张卡到底是什么?它是智能卡还是简单的存储卡?它是一种 Java 卡,我可以在里面加载 .cap 文件吗?或者它有其专有的固定内容,我无法加载任何小程序?是 GlobalPlatform 标准投诉吗?

我读 here 是:

Sony’s proprietary FeliCa is a smartcard technology that is similar to ISO/IEC 14443. FeliCa has a file system similar to that defined in ISO/IEC 7816-4. The file system and commands for access to the file system are standardized in JIS X 6319-4 [28]. In addition, the FeliCa system has proprietary cryptography and security features.

之后我尝试向它发送一些 APDU 命令。第一步是使用 reader 进行一些配置更改。因为我的 reader 配置为读取 ISO14443 A 类和 B 类卡,而不是 Felica 卡。

由于 Felica 和 ISO/IEC 14443 卡都使用 13.56 MHz 频率作为载波,我认为这些类型之间的区别仅在于协议层。我对吗?如果是这样,Felica 卡传输协议的名称是什么? (对于 ISO/IEC 14443 张卡,我们有 T=1 和 T=CL 协议)。

配置reader后,我尝试向卡发送命令:

Connect successful.
Send: 00 A4 04 00 00
Recv: 6A 81
Time used: 31.000 ms

Send: 00 C0 00 00 00
Recv: 6A 81
Time used: 28.000 ms

Send: 00 CA 00 00 00
Recv: 6A 81
Time used: 35.000 ms

正如您在上面看到的,我只收到 0x6A81 状态词。

我还搜索了很多 ACS Reader 数据表、一些 NXP 应用说明以及肯定的 JIS X 6319-4 标准,以获取此类卡的命令列表。但我发现没有任何适用的。

所以,问题是:

  1. Felica到底是什么? (聪明?记忆?)
  2. Felica卡和ISO/IEC14443卡有什么区别?跟NFC有关系吗?
  3. 如何与此卡通信和传输数据?

更新:

我卡的 ATR 是:3b 8f 80 01 80 4f 0c a0 00 00 03 06 11 00 3b 00 00 00 00 42

What actually is Felica? (Smart? Memory?)

就功能而言,它更像是存储卡而不是智能卡。以块为单位读取数据对于存储卡来说是典型的,并且除了基于对称加密的基本身份验证之外,该卡的功能非常有限。

你可能会说它是一张智能卡,因为它的实现似乎带有 multi-purpose CPU(见附件 B)。

然而,似乎不可能像您所做的那样改变智能卡的行为。在全球平台 Java 卡中。所以我将其归类为具有专有协议的存储卡。

What is the difference between Felica cards and ISO/IEC14443 cards? Is it related to NFC?

它使用专有通信协议,包括数据 -link 层(您在这里询问)和 command/response 层。

How to communicate with this card and transfer data?

您发送 APDU 而不是 FeliCa 的专有命令/响应对这一事实表明您正在使用转换层。这个翻译层很可能在 reader / reader 驱动程序中。此转换层的 API 很可能在 PCSC 2.01 specifications 中指定(第 3.2.2.1 节存储卡功能支持,使用 CLA 字节 0xFF)。

您可能还需要 reader 的用户手册,如果只是想知道在哪个位置存储所需的密钥。