我正在尝试使用pyscard
in检索智能卡的 PAN Python
。到目前为止我所做的是连接到读卡器并检索有关读卡器和卡的各种信息......但我找不到获取序列号的方法......
使用 pyscard,首先要做的是创建context
PC 和 Smart Card 之间的通信:
hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
建立上下文后,让我们尝试获取活动智能卡读卡器的列表:
hresult, readers = SCardListReaders(hcontext, [])
readers
是一个列表,如果你只有一个,readers[0] 将包含阅读器。此时,我所做的是获取ATR
卡的:
hresult, hcard, dwActiveProtocol = SCardConnect(hcontext,
current_reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
它有效。然后我尝试与卡进行通信:这里我编写了获取随机数的方法,使用 APDU 命令和第二个位置(INS)的 0x84 十六进制。
hresult, response = SCardTransmit(hcard,dwActiveProtocol,[0x00, 0x84, 0x00, 0x00, 0x00])
如您所见,一个 APDU 由 5 个不同的十六进制数字组成:CLA、INS、P1、P2、P3。
好的,仍然不是序列号,但我至少在战斗:-)
顺便说一句,我正在阅读 pyscard 文档和ISO7816 文档。
先感谢您!