用Python和pyscard检索智能卡的PAN

2024-04-28 05:38:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用pyscard中的pyscard检索智能卡的PAN。到目前为止,我所做的是连接到读卡器并检索有关读卡器和卡的各种信息。。。但是我找不到得到序列号的方法。。。在

使用pyscard,首先要做的是在PC和智能卡之间创建一个通信context

hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)

一旦建立了上下文,让我们尝试获取活动智能卡读卡器的列表:

^{pr2}$

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和{a2}。在

提前谢谢你!在


Tags: 方法信息列表protocolpan序列号读卡器ins
1条回答
网友
1楼 · 发布于 2024-04-28 05:38:39

您应该指定您正在使用的智能卡。在

如果我没记错的话,并不是所有的卡片都有序列号可访问的,如果它是可访问的,我不认为有一个标准的命令。在

无论如何,您应该看看iso7816-4标准,它定义了APDU命令。此外,您应该检查您的卡的文档,看看它是否有一些非标准的APDU命令可以帮助您。在

相关问题 更多 >