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