因此,我试图编写一个小小程序,它使用javax.smartcardio
库从智能卡读取序列号。智能卡与bit4id
阅读器连接,现在我成功地连接到智能卡,读取基本信息,如ATR和协议(T=1)。
我对此做了一些研究(例如:organizations.aspx#table9)
但是我没有得到APDU命令的具体列表,我应该发送到卡片上才能得到那个序列。有没有一种“简单的方法”来做到这一点,而不阅读大量的文件和手册?我想我需要一些数据表来知道数据是如何存储在卡内的,对吗?或者我可以发送某种命令APDU从卡中检索这些信息吗?
现在我只接收SW=6986响应(无效命令)
任何建议,即使只是在工作流程,将是强烈的感谢!
发布于 2017-01-25 13:17:56
有,没有,一种读取智能卡序列号的方法。“智能卡”是在7816规范中定义的ISO/IEC标准。许多行业使用这一标准,如移动SIM、银行卡和数字签名卡。
该标准在行业间的实施是不同的,有些行业提出了这一基本标准,并增加了APDU等,如移动SIM情况下的3 3GPP/GSMA标准或银行中的EMV标准。
无论如何,假设此卡符合智能卡ISO/IEC 7816,您可能会假设它使用了卡数据的文件库存储。您可以使用"SELECT“命令(定义在7816-4中)来尝试访问所有可用的文件并打印那里的信息。也就是说,文件由两个字节标识,比如3F00,您可以从0000,0001,0002....FFFF中选择,然后如果获得成功的select (状态词90),然后读取内容并打印出来。这样做,您可能能够识别哪个文件具有“序列”,然后您只需要继续读取该文件。
以上并不是“容易”,但可能是一个很好的挑战和学习经验。
https://stackoverflow.com/questions/41343269
复制相似问题