我正在开发一个涉及ACR1251智能卡阅读器的简单应用程序。目前我没有它在我身边,但这是一个时间敏感的项目,所以我使用V智能卡来模拟一个阅读器和一个ISO 7816卡。
我遇到问题的代码是:
from smartcard.System import readers
reader = readers()[0]
conn = reader.createConnection()
conn.connect()
response, sw1, sw2 = conn.transmit([0xFF, 0xCA, 0x00, 0x00, 0x00]) # Get Data UID响应代码为0x690x88,这意味着“不正确的安全消息传递(SM)数据对象”。我在pyscard的文档中没有发现任何提到SM的东西,而且googling也没有成功。
我的代码遗漏了什么吗?这是绝对有可能的,因为我正试图以最简单的方式来做这件事,而pyscard的级别很低,而且文档实际上并不是为了做简单的事情。
而且,这可能是仿真器的一个问题,在这种情况下,我想我只需要等待海关处理读者。
发布于 2022-03-08 15:46:48
对于与ISO 7816标准系列兼容的卡(第4、8和9部分是必不可少的),您指定的0xFF类字节实际上表示安全消息传递,这与剩余字节(MAC太短)相矛盾。
您给出的APDU看起来更像伪APDU,用于将非处理器卡定位为MIFARE或向读取器发送命令(与卡片相反);这种可能性有相当大的重叠。
作为第一步,您可以尝试其他类字节值,0x00 (纯ISO)和0xA0 (GSM-传统)是最有希望的。第4部分7816解释了类字节的结构。
支持的命令应该在卡片用户手册中,即使您设法使get数据获得成功,您稍后也会迫切需要它来实现更复杂的功能。(如果你认为ISO 7816卡是通用的,或者是彼此之间完全兼容的:错误的,在现实世界中没有“泛型7816”卡。)
https://stackoverflow.com/questions/71381188
复制相似问题