gpt4 book ai didi

python - 如何将 pcsc 命令发送到 SAM 而不是读卡器上的卡

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:59 27 4
gpt4 key购买 nike

我有带有 SAM 插槽(安全访问模块)的 acr1281 读卡器。我可以使用 python 库通过 pc/sc 与卡通信 smartcard 。但我想向插入读卡器的 SAM 发送命令。

如何为此“切换命令 channel ”,这可能吗?智能卡库可以向读卡器发送控制命令(PC_to_RDR_Escape),但在 acr1281 文档中仅指定 GetFirmvareVersion 命令。

我什至可以看到 SAM 是否已插入 - 我调用 SCardStatus() 并插入 SAM 后获取 0x34 代码(据我所知,这是 SCARD_POWERED=0x10 | SCARD_NEGOTIABLE=0x20 | SCARD_PRESENT=0x04) ,如果没有 SAM,则为 0x0c = SCARD_SWALLOWED=0x08 | SCARD_PRESENT=0x04

但是我发送的所有命令都会发送到读卡器上的 MIFARE PICC。我想向插入读卡器的 SAM 发送命令。

最佳答案

在安装了 pscs 驱动程序的 Ubuntu Linux 中,我在 smartcard 库中有 3 个读卡器:

from smartcard.System import readers
print(readers())
  • ACS ACR1281 1S 双读卡器 00 00
  • ACS ACR1281 1S 双读卡器 00 01
  • ACS ACR1281 1S 双读卡器 00 02

阅读器 00 00 对我来说处于非事件状态,我认为它适用于联系人卡片,阅读器 00 01 适用于 PICC(在我的例子中为 MIFARE),读卡器00 02用于ACR中的SAM插槽,

因此,我使用读卡器 01 发送卡 APDU,使用读卡器 02 向 SAM 发送命令,成功解决了我的任务。

不确定如何自动找到它们,但我认为这个 00 00 等是名称中的常量,我可以通过名称中的最后一个符号为 PICC 和 SAM 选择读卡器。

我仅通过 smartcard.CardRequest.CardRequest() 连接到 PICC 读卡器 - 等待卡靠近。所以我必须只找到 SAM 阅读器并连接到它:

sam_connection = readers()[2].createConnection()
sam_connection.connect(mode=SCARD_SHARE_SHARED,
disposition=SCARD_LEAVE_CARD,
protocol=SCARD_PROTOCOL_ANY)

关于python - 如何将 pcsc 命令发送到 SAM 而不是读卡器上的卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com