繁体   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