簡體   English   中英

如何區分不同的ISO 14443-4卡?

[英]How do I distinguish different ISO 14443-4 cards?

有不同的智能卡支持ISO 14443-4。 例如,Mifare Plus及其本機命令集。 或其他具有不同命令集的卡(即7816-4 APDU)。

我為讀卡器開發了一些軟件,我需要確定卡支持哪些命令(例如,它是否支持ISO 7816-4結構中的命令)。

建議區分它們的方法是什么? 我應該從Mifare Plus命令集中嘗試一些命令並檢查我是否得到正確的回復? 或者有更聰明的方法嗎?

在連接協議期間,會交換一些參數,您可以使用這些參數來確定卡的功能。 例如,SAK字節將通知讀卡器該卡是否為ISO 14443-4,即使它是MIFARE Plus(還有一個NXP文檔說明您必須閱讀哪些位)。 然后你有ATS(選擇答案),它包含很多關於卡的有用信息。 看看ISO 14443-4和ISO 7816-4。

永遠不要使用ATQ! 僅將SAK用於非14443-4卡(例如Mifare Classic)! ATS也是不好的做法,因為不同的卡供應商可以設置不同的方式。

現在該怎么做:

唯一的方法是如何考慮卡而不要發瘋,想象它就像是完整的通信堆棧(參見OSI模型)。

請記住,您的目標是連接兩個應用程序,一個在卡中,一個在您的計算機中。 14443-4提供了發送消息的機制,而不關心其內容。

最重要的是它實現了不同卡的接口,如果雙方:卡 - 卡驅動器兼容,他們將進行通信。 如果沒有,那么該級別就會出現錯誤。 所以你知道你需要使用不同的卡驅動程序。

完整的通信堆棧將如下所示:

  Your Application 
  |  CardProtocol/7816-4 
  |  |  14443-4 
  |  |  |  14443 
  |  |  |  |  radio waves 
  |  |  |  14443 (in card) 
  |  |  14443-4 (in card) 
  |  CardProtocol/7816-4 (in card) 
  Application/Appdata (in card)

當然每個層之間必須有一些接口。

如果你有兩個想要通信的應用程序嘗試一個,然后嘗試第二個。

應用程序級錯誤=>卡上沒有兼容的應用程序

CardProtocol級別錯誤=>沒有兼容的卡

點是您的通信必須在所有級別上取得成功所以不要擔心嘗試通過不兼容的協議與卡通信 - 如果您(通過一些奇跡)不會在CardProtocol級別上獲得錯誤,您肯定會在您的應用程序級別獲得一個結果會一樣。 祝好運!

PS有一些更復雜的情況,如“一個應用程序超過兩個協議/類型的卡”,但它們也可以輕松處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM