首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能卡非接触式复位apdu

智能卡非接触式复位apdu
EN

Stack Overflow用户
提问于 2014-10-30 06:19:08
回答 2查看 2.5K关注 0票数 0

我目前正在为一个非常非常定制的Linux内核开发一个NFC应用程序,该内核运行在POS设备(如这个TPS300 )中,用于无联系人的NFC卡。它内置了与NFC卡通信的库。我已经研究了NFC,并了解了NFC重置命令,这应该是回应与复位的答案。我的问题是,该命令是通过正常的APDU命令响应方法执行的,还是重置为基于硬件的命令?我问这个问题是因为上面提到的库对于卡片没有明确的重置命令方法,或者程序也没有,而且我(到目前为止)还没有找到用于重置NFC卡的APDU命令。我只知道硬件的方法,通过一个信号到NFC卡的复位终端。是否有明确的APDU命令来重置卡,或者自定义操作系统是否为我负责重置?如果命令存在,它是什么?它是如何应用于非接触式NFC卡的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-30 14:32:45

ATR (应答复位)通常通过向NFC控制器(读取器)发出特殊命令来寻找。APDU是一个术语,用于指与NFC卡本身(PICC)之间的命令/响应交换。给你一些比较,看看ACR122U文档,市场上最受欢迎的读卡器之一。它利用了PCSC驱动程序(CCID),这种驱动程序在大多数操作系统(从与智能卡控制器的接口发展而来)中很常见,这使得它在Windows、Mac或Linux上使用非常容易。下面是它的流程图:

PCSC接口有几个命令,但它都是从读取器connect开始的。对于联系人智能卡,这等于设置一个RESET线高。对于非接触式( NFC )卡,这相当于打开NFC场(RF能量脉冲)。如果存在卡片,connect调用将返回一个ATR响应。

在PCSC层下面和CCID驱动程序中,您可以看到reader connect调用是如何构造的。下面是来自nfcpy项目的代码片段,这是一个用于NFC的开源堆栈:

代码语言:javascript
复制
def reset_mode(self):
    if (self.ic, self.fw) == ("PN533", "1.48"):
        self.command(0x18, [1])
        self.write(array("B", [0, 0, 255, 0, 255, 0])) # ack
        time.sleep(0.010)

PN533是ACR122U读取器内的NFC控制器(来自NXP)。命令0x18指示NFC控制器打开RF字段,并尝试从当前的任何标记中获取ATR响应。一旦找到一个ATR,那么APDU交换就可以开始了。例如询问卡片的描述信息:

代码语言:javascript
复制
 rsp = self.dev.in_list_passive_target("106A", "");  // for NFC-A type cards

因此,要明确地回答你的问题:

  1. 是否有明确的APDU命令来重置卡,或者定制的操作系统是否为我负责重置?-在PCSC的情况下,这是一个读取器API connect调用。直接与NFC控制器交谈时,可能会有类似于in_list_passive_target命令那样的指令来执行PN533。
  2. 如果命令存在,它是什么?-搜索POS中的Linux安装程序,看看是否有CCID驱动程序或PCSC守护进程正在运行。如果不是,您将需要找到用于与POS NFC控制器对话的驱动程序。这样,您应该能够确定与射频场的能量相等的命令。
  3. 它是如何应用于非接触式的NFC卡?-有很多类型的NFC卡,但是在所有这些卡中,获得一个ATR是很常见的。
票数 0
EN

Stack Overflow用户

发布于 2014-10-30 12:55:35

一般来说,关闭RF字段并打开它应该“重置”卡。但是,如果您想要更具体的重置机制,那么这将取决于在操作系统中支持的卡的类型,以及问题中的卡。out 14443-第3部分应该对你有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26646303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档