1

我在使用 ACS ACR38U-I1、Python 3.7 和 pyscard 在 Windows 10 下访问 SLE4428 卡时遇到问题。我正在使用制造商目前为 Windows 提供的最新驱动程序。

主要问题是运行某些 APDU 失败,说明Failed to transmit with protocol T0. Falscher Parameter(= 错误参数,错误代码 87)。然而,在 Raspberry Pi 上使用相同的阅读器运行完全相同的代码可以完美运行。我没有在 Pi 上安装任何特定的驱动程序。

我正在使用此代码运行 APDU:

    from smartcard.CardType import AnyCardType
    from smartcard.CardConnection import CardConnection
    from smartcard.CardRequest import CardRequest
    
    cardtype = AnyCardType()
    cardrequest = CardRequest(timeout=1, cardType=cardtype)
    cardservice = cardrequest.waitforcard()
    cardservice.connection.connect(CardConnection.T0_protocol)
    apdu = [0xff, 0xb0, 0x00, 0x00, 0xff] #READ_MEMORY_CARD
    response, sw1, sw2 = cardservice.connection.transmit(apdu, CardConnection.T0_protocol)
    print('response: ', response, ' status words: ', "%x %x" % (sw1, sw2))

此代码在两个平台上都可以正常工作。然而,尝试使用身份验证 [0xff, 0x20, 0x00, 0x01, 0x03, 0xff, 0xff] 会导致Windows 上描述的崩溃。我已经尝试过股票 Windows 驱动程序以及使用不同的协议,但没有成功。

另一个 Windows 独有的奇怪行为:插入卡时,读卡器的 LED 快速闪烁,大约需要 9 秒才能访问卡。

这是我第一次尝试与硬件接口,所以这可能很明显,但我无法弄清楚。对于已知在此配置中工作的(仍然可用的)阅读器,我将不胜感激任何输入和/或建议。

4

1 回答 1

0

根据 ISO 7816-4,APDU CLA 值“FF”是不允许的。PC/SC 读卡器的制造商有时支持 CLA=FF 的 APDU 命令来实现一些特定功能,例如访问 MIFARE 卡或调整通信协议设置。

于 2021-10-25T16:02:57.563 回答