- 选择应用程序
- 认证
- 写入或读取
F4013D
,所以我发送:-> 5AF4013D
<- 6E00
所有可能的响应必须是一个字节长度(成功
0x00
或错误代码),永远不会是两个或更多。因此,成功响应前的0x6E
绝对是意外的。它并不总是发生,当它不发生且正常工作时,选择应用程序和身份验证过程都正常工作。但是,一旦经过身份验证,写入命令就没有正确的行为,所有写入命令都以来自PICC的0xAF
结束,而不是成功的0x00
。看起来像是PICC期望一些额外的数据,而实际上不需要(我发送了正确长度的有效负载)。如果我发送任何其他命令,我会收到一个0xCA
(命令中止)错误代码。-> 5AF4013D
<- 00 /*Success*/
-> AA01
<- AFA8394ED57A5E83106B4EE72FD2BB0CC4
-> AF148F525E1DDE0AD6AB60B4B615552475C91F2E8D89B8523E4465113DD5BD19C6
<- 0066D255C93F2F492AFE3715C88964F1BD /*Authentication success*/
-> 3D02000000030000222222 /*Write 3 bytes to file nº2*/
<- AF /*Unexpected, 0x00 was expected*/
作为正常情况,如果我使用个人读卡器(非Android NFC)发送这些类型的命令,它总是能够正常工作。似乎在Android NFC API中有一些奇怪的事情发生,当它应该只是一个原始数据传输器,永远不会解释或修改数据。
我也尝试了使用ISO 7816-4 APDU结构,结果相同。有趣的是,在Galaxy Nexus上没有发生选择应用程序的奇怪响应,但写入命令则总是会出现。