如何用Python验证智能卡的PIN?

2024-06-08 20:11:29 发布

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

我需要你的帮助来验证智能卡的密码。我正在使用Python和{}。 我知道我必须使用APDU命令,并且必须使用ScardTransmit()发送它,但是我找不到要使用哪个APDU。例如:

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

(因此,对于PIN=123456)将返回一个 6A 88-未找到参考数据

我在想:有没有一种方法可以获得关于commands的提示,以便与查看其^{的特定智能卡一起使用?i、 e.:INS字段中的命令“20”(APDU由CLA、INS P1、P2、DATA组成)是ISO定义的验证管脚的命令,但如何理解我是否做错了什么?在

谢谢。在

注:顺便说一下,当P2=“00”我得到6a83时,没有找到记录。在


Tags: 数据方法命令密码pincommandsp2ins
3条回答

这可能有助于。。。对于GSM卡,我们始终使用8字节的数据长度,即。 验证\u CHV=[0xA0,0x20,0x00,0x01,0x08]

下面的管脚数据根据实际管脚长度用0xFF填充。 i、 e.如果pin=123456,则LJUST_pin_HEX=[0x31,0x32,0x33,0x34,0x35,0x36,0xFF,0xFF]

然后,APDU将是VERIFY_CHV+LJUST_PIN_HEX

如果您的智能卡应用程序(您事先选择的DF)具有ID为1的PIN(您在P2中给出了该PIN),则您的APDU将是正确的。您可以设置最高有效位,告诉命令在MF中搜索引脚1。在

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

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

相关问题 更多 >