2014-10-30 129 views
0

我目前正在開發NFC應用程序,用於在POS設備中運行的非常非常定製的Linux內核,例如用於非接觸式NFC卡的this TPS300。它具有與NFC卡進行通信的內置庫。我研究了NFC並瞭解了NFC重置命令,該命令應答於重置應答。我的問題是,該命令是通過正常的APDU命令響應方法執行還是基於硬件的命令復位?我問這是因爲上面提到的庫沒有針對卡片或程序的明確的重置命令方法,而且我(直到現在)未發現用於重置NFC卡的APDU命令。我只知道硬件方法,通過一個信號到NFC卡的復位端。是否有明確的APDU命令用於重置卡或者定製的操作系統是否爲我重新設置?如果命令存在,它是什麼?它如何應用於非接觸式NFC卡?智能卡非接觸式復位apdu

回答

0

ATR(回覆重置)通常通過向NFC控制器(閱讀器)發出特殊命令來查找。 APDU是一個術語,用於指示與NFC卡本身(PICC)的命令/響應交換。給你一些東西去比較一下documentation of the ACR122U,這是市場上流行的USB讀卡器之一。它利用了大多數操作系統常見的PCSC USB驅動程序(CCID)(從與智能卡控制器接口演變而來),這使得在Windows,Mac或Linux上易於使用。下面是它的流程圖:

Communication flowchart of ACR122U

的PCSC接口有多個命令,但所有讀者API connect開始。對於聯繫人智能卡,這等同於設置RESET較高的線。對於非接觸式(NFC)卡,這相當於打開NFC場(RF能量脈衝)。如果有卡,connect呼叫將返回ATR響應。

查看PCSC圖層下方和CCID驅動程序,您可以看到如何構建讀取器API connect調用。下面是來自nfcpy project的一個代碼段,用於NFC一個開源堆棧:所述ACR122U讀者內部

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是NFC控制器(從NXP)。命令0x18指示NFC控制器打開RF字段並嘗試從存在的任何標籤獲得ATR響應。一旦找到ATR,則可以開始APDU交換。如詢問卡其描述信息:

rsp = self.dev.in_list_passive_target("106A", ""); // for NFC-A type cards 

因此,要明確回答您的問題:

  1. 是否有重置卡明確APDU命令或者不定製OS採取復位的護理爲了我? - 在PCSC的情況下,這是一個閱讀器API connect調用。直接與NFC控制器通話,可能會有一條指令,如PN533的in_list_passive_target命令。
  2. 如果該命令存在,它是什麼? - 通過POS中的Linux設置搜索並查看是否有CCID驅動程序或PCSC守護程序正在運行。如果沒有,您需要找到用於與POS NFC控制器通話的驅動程序。有了這個,你應該能夠確定打開RF場的等效命令。
  3. 它是如何應用於非接觸式NFC卡? - 有很多類型的NFC卡,但獲得ATR是很常見的。
+0

您的答案在命令APDU和API調用(如* connect *或控制器寄存器修改)的區別中有點模糊。爲了清楚這一點:沒有用於復位的命令APDU,因爲這不是由卡提供的服務,而是被尋址的閱讀器必須發起的動作。 – guidot 2014-10-31 15:19:15

+0

謝謝!這非常有幫助。而且,作爲答案,你如何回答問題? – 2014-11-04 07:21:33

+0

@Peter:您通過接受其中一個答案(收到綠色勾號)來更改問題的狀態(對於無效問題,結束是一個不同的過程)。 – guidot 2014-11-04 09:52:34

0

一般來說,關閉RF場並將其打開時應該「重置」該卡。但是,如果您需要更具體的重置機制,則取決於操作系統支持的卡類型以及所涉及的卡。 ISO14443-Part3應該可以幫助你。

+0

雖然關閉和再次打開領域肯定會完成這項工作,但這是一個相當大的衝擊,影響了現場所有卡片。我記得一些標準化討論,認爲這對取消/重新選擇被認爲是足夠的,但由於我的知識,這還沒有標準化,這是有點困難,因爲一般的解決方案將需要超出ISO 14443的變化,例如, G。 ISO 15693和18092也是如此。 – guidot 2014-10-31 15:12:42

+0

感謝所有答覆。我已經能夠將grundyoso的答案應用到我正在做的事上,並且幫助過了,就像ALOT !!! – 2014-11-04 07:20:55