如何使用pyscard列出智能卡上的文件

时间:2015-02-12 08:02:02

标签: python smartcard apdu smartcard-reader pyscard

我必须从智能卡中读出一个文件。该卡由监控车辆运动的数字行驶记录仪编写。我可以使用psycard(http://pyscard.sourceforge.net/user-guide.html)连接到智能卡读卡器,但后来我不知道如何列出卡上的文件以及如何下载它们。我正在挖掘ISO标准,看起来我必须使用ISO / IEC 7816标准和专用文件(http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx),但我不知道如何从pyscard进行操作?

已经有程序(例如:http://en.tachoterminal.net/products/tachoterminal-reader/)完全相同,但它们是独立的程序。我需要将此功能集成到另一个软件中。

我不知道使用哪种协议。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

在这个答案中,我假设您根据ECC规定No 3821/85参考行车记录仪驱动卡。在这种情况下,您是正确的,智能卡使用ISO / IEC 7816-4 APDU进行通信,并且它公开了基于ISO / IEC 7816-4的文件结构。

使用pyscard打开与卡的连接后,您可以调用该连接对象上的transmit()方法转发APDU(另请参阅Ludovic Rousseau's blog

connection = reader.createConnection()
connection.connect()
data, sw1, sw2 = connection.transmit(cmd)

与行车记录仪驱动程序卡的通信流程如下:

  1. 选择行车记录仪申请

    00 A4 04 0C 06 FF544143484F
    

    对于此命令,cmd将是:

    cmd = [ 0x00, 0xA4, 0x04, 0x0C, 0x06, 0xFF, 0x54, 0x41, 0x43, 0x48, 0x4F ]
    
  2. 按文件标识符(xxxx

    选择基本文件
    00 A4 02 0C 02 xxxx
    
  3. READ BINARY获取文件数据(偏移zz的{​​{1}}个字节)

    xxyy
  4. 您可以在法规文件(here)中找到驱动程序卡协议和数据结构的完整规范。