代码之家  ›  专栏  ›  技术社区  ›  nagylzs

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

  •  0
  • nagylzs  · 技术社区  · 10 年前

    我必须从智能卡中读出文件。该卡由监控车辆运动的数字行车记录仪写入。我可以用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 )但我不知道如何从皮斯卡尔那里做到这一点?

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

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

    1 回复  |  直到 10 年前
        1
  •  2
  •   Michael Roland    10 年前

    在这个答案中,我假设您所指的是符合第3821/85号ECC法规的行车记录仪驾驶员卡。在这种情况下,您认为智能卡使用ISO/IEC 7816-4 APDU进行通信是正确的,并且它公开了基于ISO/IEC 7816-44的文件结构。

    使用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. 读取BINARY以获取文件数据( zz 偏移量的字节数 xxyy )

      00 B0 xx yy zz
      

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

    推荐文章