簡體   English   中英

如何使用IsoDep讀取NFC卡?

[英]How Can I Read NFC Card with IsoDep?

我想通過NFC讀取RFID卡,該卡來自哥倫比亞波哥大的當地交通系統。 我知道這是可能的,因為我已經下載了執行此操作的android應用!

到目前為止的進度...當我將手機放在卡片上時,我的應用程序以ACTION_TECH_DISCOVERED的意圖啟動,並且我可以讀取卡片UID之類的信息,但是我不知道如何讀取所需的信息,特別是卡上的錢。

我在stackoverflow上閱讀過,我需要做的是找到我想要訪問的應用程序並發送ADPU命令,但是看來我的卡沒有任何應用程序,因為使用任何android應用程序瀏覽該卡,它總是說找到0個應用程序。 因此,我不知道該從哪里獲得此信息。

我的卡的技術信息為:

  • 標簽ID:08 8B E2 D1 RF
  • 技術:TYPE A(ISO / IEC 14443 Type A)
  • 標簽類型:ISO / IEC 14443-4智能卡
  • ATQA:0004
  • 薩克:20
  • 歷史字節數:01112003
  • 技術分類:android.nfc.tech.IsoDep,android.nfc.tech.NfcA

謝謝!

我在stackoverflow中[閱讀]這里,我需要做的是找到我要訪問的應用程序並發送ADPU命令。

正確,這正是您需要做的。 獲得此信息(即卡的通信協議規范)后,您將執行以下操作:

Tag tag = ... // TODO: get tag handle from intent
IsoDep isoDep = IsoDep.get(tag);
if (isoDep != null) {
    isoDep.connect();

    byte[] response = isoDep.transceive(SELECT_APDU); // SELECT_APDU = 00 A4 0400 <Lc> <APPLICATION ID>

    // TODO: send further APDU commands according to the protocol specification
    //response = isoDep.transceive(APDU);

    isoDep.close();
}

[...]但看來我的卡沒有任何應用程序,因為使用任何android應用程序瀏覽該卡時,它始終顯示Found 0 Applications。

這通常僅意味着卡上沒有掃描器應用程序*知道的應用程序*。 許多ISO-DEP卡沒有卡上可用的應用程序的公共可讀目錄。 (盡管某些卡可能具有EF.DIR或類似的東西。)

因此,我不知道該從哪里獲得此信息。

是的,這通常是棘手的部分。 有幾種解決方法:

  1. 向運輸系統操作員詢問規格。
  2. 檢查卡是否具有EF.DIR(或類似文件)並在其中列出某些內容(盡管這只會為您提供一個起點,因為它仍然無法顯示卡的協議)。
  3. 檢查卡是否具有GlobalPlatform安全域/卡管理器,以及是否可以使用默認密鑰訪問該卡管理器(Google會幫助您查找更多內容)。 如果是這樣,GP將提供命令以列出已安裝的應用程序。 關於協議,與2.相同。
  4. 對您知道可以訪問該卡的應用程序進行反向工程。 (請注意,這可能在您所在的國家/地區是非法的和/或受應用程序的許可協議禁止。)

暫無
暫無

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

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