智能卡上的内存如何工作以及如何访问数字行车记录仪卡的唯一 ID



在我的第一次实习中,我必须和欧洲的行车记录仪阅读器做一些很棒的事情。

简而言之:我必须使用智能卡读卡器读取接触式(不是无线智能卡)ISO 7816公司卡,以读出该卡的唯一标识符。什么都没有。然后,我必须将该标识符与应答-重置一起发送到其他地方,在那里它被处理,回答,然后一些数据上下交流。

没有代码,我必须在未来的某个地方构建包括服务器在内的一切。现在,我专注于卡片部分。我从零开始,并被要求使用c#。我在Linux上使用PCSC-lite库,并且已经可以与该卡通信。我能够得到重置代码的答案,并且能够用智能卡做一些其他的事情,这对我的问题并不重要。我也阅读了大部分的ISO 7816数据表。尤其是那些对我来说很重要的部分。我的代码读取响应并检查sw1和sw2是什么。所以我可以读取调试信息。所以我想我至少已经掌握了一些基本知识……

我是公司里唯一能做这种事的人。或者应该能够做到这一点。我已经奄奄一息了 在这个领域有经验的人可以吗?请简明扼要地向我解释一下:

1。这种卡上的内存是如何建立的

2。如何访问内存

3。哪些apdu以及以何种顺序发送它们以获得唯一的卡标识符(或指向我可以找到内存映射或其他东西的方向)

对于第一个问题,我的意思是:我知道数据结构似乎与我需要"选择"的EF一起工作。然后尝试使用正确的apdu提取数据。但我真的不明白它是如何工作的,也不知道记忆结构是如何形成的。我读过ISO文件,但是对我来说有点难。也许如果我得到一些帮助,我会更好地理解他们。

对于第二个问题,我的意思是:在正常情况下,我应该以什么顺序发送Apdu来访问一块内存。

我已经读了很多关于这个主题的堆栈溢出,但找不到一个适合我的答案。

我将永远欠你的债,如果你这么好心地回答我的问题,你已经帮助了一个学生:)

奥斯卡

我不确定,我是否理解你的问题(我多年来一直使用智能卡)。基于文件系统的智能卡上没有自由浮动的可用内存(与SLE44之类的哑存储卡相反),您只能通过文件(在这种情况下是EFs)访问它。虽然原则上可以创建新文件,但现实生活中的卡片需要特定的身份验证,而您不太可能拥有这些密钥。

哪些文件已经存在(以及哪些数据存储在哪个记录/偏移量/数据对象中)在规范中给出,在您的情况下,在这里找到的规范之一。所使用的规范是必不可少的,因为该卡本身可以支持许多应用程序,行车记录仪只是其中之一。一旦你知道数据在哪里,你必须创建相应的SELECT/READ RECORD/READ BINARY命令。

最新更新