【问题标题】:how sending apdu to contactless smartcard如何将 apdu 发送到非接触式智能卡
【发布时间】:2016-06-09 10:40:36
【问题描述】:

我有一个可以在联系人卡片上正常工作的小程序。现在我有一个双接口卡(IDCore 3020),我通过接触接口将我的小程序加载到它。我还有一个非接触式智能卡读卡器(acr122u),我想通过非接触式接口发送 APDU 命令并获得响应 APDU。我像这样将 SelectApplet APDU 发送到卡,但我失败了(SW = 6300):

00 A4 04 00 09 [A0,00,00,03,08,00,00,10,00] 00

我有三个问题:

1- 我可以在非接触模式下使用我的小程序,比如与相同的 APDU 联系吗?

2- 我应该做些什么来让非接触式读卡器识别我的卡吗?

3- 当前适用于接触卡的微型驱动程序是否也适用于非接触卡?

【问题讨论】:

  • 63 00 是响应 SELECT 命令的一个相当少见的错误代码,但它是 ACR122U 经常使用的错误代码来指示一般错误。可能是您的读卡器(尚未)检测到该卡吗?您的阅读器是否启用了 ISO 14443 Type A / Type B 的“自动 PICC 轮询”和“自动 ATS 生成”(某些版本的 ACR122U 默认不启用此功能)?
  • 您是否在小程序选择期间使用APDU.getProtocol() 来过滤访问?您的卡是否实施了全球平台修正案 C(AFAIK IDCore 3020 没有,但我不确定......)?使用非接触式界面选择任何其他应用程序(例如 ISD)是否有效?
  • 感谢迈克尔的回复。这是真的,我的读卡器还没有检测到这张卡。我可以通过followong apdu获取阅读器固件:FF 00 48 00 00 [] 00,但是当我想通过以下命令获取picc参数时:FF 00 50 00 00 [] 00,我失败了,它返回6300,也是当我想要的时候通过以下命令设置这些参数:FF 00 51 00 00 [] 00,它也返回 6300。为什么会这样?
  • 谢谢vlp。不是在选择小程序中没有用于非接触式界面的过滤器。我用 Mifare1K 的交通卡测试读卡器并发送以下命令:FF 00 00 00 02 [D4,04] 00 以获取非接触式接口的当前设置,读卡器返回 D5 05 00 00 00 80 90 00 这意味着有字段中没有标签。我必须提到,我的 android 手机使用开源应用程序检测到了我的 mifare1K。
  • 这很奇怪(我假设您实际上并没有发送 Lc = 0x00 和 Le = 0x00,但实际上意味着您不发送 Lc(因为它为零)并且只发送 Le 作为 0x00 (表示最多 256 字节的响应数据),对吧?)。然后您可以尝试手动轮询标签(轮询命令:FF 00 00 00 07 [D4 60 FF 01 10 20 23])。

标签: applet javacard contactless-smartcard


【解决方案1】:

1- 我可以在非接触模式下使用我的小程序,比如与相同的 APDU 联系吗?

是的,当然,除非您在代码中明确禁止它(使用getProtocol

2- 我应该做些什么来让非接触式读卡器识别我的卡吗?

不,如果您有 PCSC 和 ISO/IEC 14443 兼容的阅读器,您应该能够与之通信(并且您拥有)。我不确定你这里的“识别”是什么意思,但它当然应该能够看到它。

它可以提供与联系人接口提供的 ATR 不同的 ATS。 ATR/ATS 是在更通用的 APDU 接口可以使用之前生成的。

3- 当前适用于接触卡的微型驱动程序是否也适用于非接触卡?

可能是这样,但请注意上面关于 ATR/ATS 的说明。

【讨论】:

  • 感谢 Maartan 的回答。但是为什么我的读卡器 (ACR 122U) 看不到我的卡片。我使用 Mifare1K 通过以下命令测试读卡器:FF 00 00 00 02 [D4,04] 00 以获取非接触式接口的当前设置,读卡器返回 D5 05 00 00 00 80 90 00,这意味着该字段中没有标签。读卡器似乎没有轮询检测卡片。
  • 会不会是卡本身的问题?它真的有天线吗?使用 MIFARE 命令检查其他卡可能不是一个好主意;它可能是你得到的具体实现。通常我也会推荐其他读者;也许你的手机有一个 NFC 阅读器,你可以用它来检查标签?
  • 我有另一张非接触式卡。我的交通卡是 Mifare1K 卡。我用手机对其进行了测试,它可以成功检测到卡,因此卡(MIFARE1K)可以正常工作。之前的命令已经通过 MIFARE1K 卡测试。我想,ACR122U读卡器有问题。如何测试阅读器是否正常工作?我必须提到,获取固件命令可以正常工作,但它无法检测到任何卡。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多