-1

我需要您的帮助来验证智能卡的 PIN。我正在使用Pythonpyscard。我知道我必须使用一个APDU命令并且我必须使用它来发送它,ScardTransmit()但我找不到要使用的 APDU。例如:

SCardTransmit(hcard,dwActiveProtocol, 
              [0x00, 0x20, 0x00, 0x01, 0x06, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x00])

(因此使用 PIN=123456)将仅返回 6A 88 - 未找到引用数据

我想知道:有没有办法获得一些关于查看特定智能卡的命令ATR的提示?即:INS 字段中的命令“20”(APDU 由 CLA、INS P1、P2、DATA 组成)是 ISO 定义的用于验证 PIN 的内容,但是如何理解我做错了什么?

谢谢。

PS:顺便说一句,使用 P2="00" 我得到6A 83,找不到记录。

4

3 回答 3

1

这可能会有所帮助......当涉及到 GSM 卡时,我们总是使用 8 字节的数据长度,即 VERIFY_CHV = [0xA0, 0x20, 0x00, 0x01, 0x08 ]

后面的 PIN 数据根据实际的 pin 长度用 0xFF 填充。即如果 pin = 123456 那么 LJUST_PIN_HEX = [0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0xFF, 0xFF ]

APDU 将是 VERIFY_CHV + LJUST_PIN_HEX

于 2017-04-03T14:27:25.910 回答
0

如果您的智能卡应用程序(您事先选择的 DF)有一个 ID 为 1 的 PIN(您在 P2 中提供),那么您的 APDU 将是正确的。您可以设置最高有效位来告诉命令在 MF 中搜索 PIN 1。

于 2017-03-25T19:48:15.503 回答
0

哪些 PIN 存在(也可能根本不存在),如果卡片具有文件系统,它们存在 DF,则由卡片的个性化定义。如果没有进一步的细节,答案必须非常笼统,例如尝试不同的 P2 值(最高 0x1F)。

另一方面,一旦验证了 PIN 码,如果没有有关卡个性化的详细信息,您就不可能取得进一步的进展,因此可能现在就开始了解。

于 2017-03-26T09:45:20.820 回答