我目前正在開發NFC應用程序,用於在POS設備中運行的非常非常定製的Linux內核,例如用於非接觸式NFC卡的this TPS300。它具有與NFC卡進行通信的內置庫。我研究了NFC並瞭解了NFC重置命令,該命令應答於重置應答。我的問題是,該命令是通過正常的APDU命令響應方法執行還是基於硬件的命令復位?我問這是因爲上面提到的庫沒有針對卡片或程序的明確的重置命令方法,而且我(直到現在)未發現用於重置NFC卡的APDU命令。我只知道硬件方法,通過一個信號到NFC卡的復位端。是否有明確的APDU命令用於重置卡或者定製的操作系統是否爲我重新設置?如果命令存在,它是什麼?它如何應用於非接觸式NFC卡?智能卡非接觸式復位apdu
回答
ATR
(回覆重置)通常通過向NFC控制器(閱讀器)發出特殊命令來查找。 APDU
是一個術語,用於指示與NFC卡本身(PICC)的命令/響應交換。給你一些東西去比較一下documentation of the ACR122U,這是市場上流行的USB讀卡器之一。它利用了大多數操作系統常見的PCSC USB驅動程序(CCID)(從與智能卡控制器接口演變而來),這使得在Windows,Mac或Linux上易於使用。下面是它的流程圖:
的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
因此,要明確回答您的問題:
- 是否有重置卡明確APDU命令或者不定製OS採取復位的護理爲了我? - 在PCSC的情況下,這是一個閱讀器API
connect
調用。直接與NFC控制器通話,可能會有一條指令,如PN533的in_list_passive_target
命令。 - 如果該命令存在,它是什麼? - 通過POS中的Linux設置搜索並查看是否有CCID驅動程序或PCSC守護程序正在運行。如果沒有,您需要找到用於與POS NFC控制器通話的驅動程序。有了這個,你應該能夠確定打開RF場的等效命令。
- 它是如何應用於非接觸式NFC卡? - 有很多類型的NFC卡,但獲得
ATR
是很常見的。
一般來說,關閉RF場並將其打開時應該「重置」該卡。但是,如果您需要更具體的重置機制,則取決於操作系統支持的卡類型以及所涉及的卡。 ISO14443-Part3應該可以幫助你。
雖然關閉和再次打開領域肯定會完成這項工作,但這是一個相當大的衝擊,影響了現場所有卡片。我記得一些標準化討論,認爲這對取消/重新選擇被認爲是足夠的,但由於我的知識,這還沒有標準化,這是有點困難,因爲一般的解決方案將需要超出ISO 14443的變化,例如, G。 ISO 15693和18092也是如此。 – guidot 2014-10-31 15:12:42
感謝所有答覆。我已經能夠將grundyoso的答案應用到我正在做的事上,並且幫助過了,就像ALOT !!! – 2014-11-04 07:20:55
- 1. Java和非接觸式智能卡
- 2. 確定Java中非接觸式智能卡的功率要求。
- 3. 如何讓android手機充當非接觸式智能卡?
- 4. APDU命令獲取智能卡uid
- 5. 從java智能卡APDU接收到奇怪的數據?
- 6. 如何確定智能卡閱讀器的類型(聯繫vs非接觸式)
- 7. 智能卡:pyscard從apdu獲得剩餘字節
- 8. 使用APDU命令瀏覽智能卡的文件結構
- 9. 用於使用javax.smartcardio的智能卡的ISO 7816 APDU
- 10. 智能卡eToken PRO CardOS/M4數字簽名APDU
- 11. 使用APDU命令無法驗證智能卡PIN碼
- 12. APDU命令獲取智能卡的序列號
- 13. 非接觸卡的脫機功能
- 14. 智能卡答覆重置
- 15. iOS智能卡接口
- 16. 連接到智能卡
- 17. 讀取智能卡(8位或16位?)
- 18. Java智能卡 - 讀Scosta智能卡
- 19. 智能卡非對稱密鑰生成
- 20. 聯繫卡和非接觸式(RF)卡之間的區別
- 21. Android NFC:當APDU命令發送到智能卡時標記丟失
- 22. 如何在Windows 10(移動)上將低級命令(非APDU)發送到智能卡?
- 23. 從智能卡發送/接收數據
- 24. 通過USB的Android智能卡接口
- 25. 智能卡和Android
- 26. 讀取智能卡
- 27. 安全智能卡
- 28. 智能卡查詢
- 29. 智能卡開發
- 30. APDU命令讀取卡號
您的答案在命令APDU和API調用(如* connect *或控制器寄存器修改)的區別中有點模糊。爲了清楚這一點:沒有用於復位的命令APDU,因爲這不是由卡提供的服務,而是被尋址的閱讀器必須發起的動作。 – guidot 2014-10-31 15:19:15
謝謝!這非常有幫助。而且,作爲答案,你如何回答問題? – 2014-11-04 07:21:33
@Peter:您通過接受其中一個答案(收到綠色勾號)來更改問題的狀態(對於無效問題,結束是一個不同的過程)。 – guidot 2014-11-04 09:52:34