【发布时间】:2017-03-16 14:38:49
【问题描述】:
我正在尝试使用Python 中的pyscard 检索智能卡的PAN。到目前为止我所做的是连接到读卡器并检索有关读卡器和卡的各种信息...但是我找不到获取序列号的方法...
使用pyscard,首先要做的是在PC和Smart Card之间创建一个通信context:
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。
好吧,仍然不是序列号,但我至少在战斗:-)
顺便说一下,I'm reading the pyscard documentation 和 ISO7816 doc。
提前谢谢你!
【问题讨论】: