【问题标题】:What are the requirements for support of extended length APDUs and which smartphones support it?支持扩展长度 APDU 的要求是什么?哪些智能手机支持它?
【发布时间】:2014-09-18 13:06:14
【问题描述】:

当我第一次尝试发送 APDU 命令并收到“超出支持的长度”错误时,我认为这只是 NFC 芯片本身的限制 - 没有办法解决。但是this site 暗示这可能是 Android 操作系统中的软件问题:

许多当前可用的智能手机只能通过 NFC 传输 261 字节[2],而无需对操作系统进行重大修改。

有谁知道更多关于如何解决这个问题以及修改究竟有多“重大”的信息?

另外,你有一个列表,哪些手机支持扩展长度 APDU?如果没有,我们可能应该开始一个,因为你在 google 上真的找不到太多。

我知道三星 Galaxy Note II 支持它,而三星 Galaxy S3、Nexus 5 和 Galaxy Nexus 不支持。

【问题讨论】:

    标签: android nfc smartcard apdu contactless-smartcard


    【解决方案1】:

    查看此网站: https://code.google.com/p/android/issues/detail?id=76598

    你必须做什么:

    • 下载 Android 源代码
    • 在 NativeNfcManager.java 的行中将“261”更改为“2462”(如上面链接的站点所示)
    • 构建 Android
    • 在手机上刷入修改后的 Android 版本

    可以在此处找到为 Nexus 5 构建 Android 的教程: http://nosemaj.org/howto-build-android-kitkat-nexus-5

    这适用于您智能手机的读卡器模式,我还不知道如何让它适用于卡模拟模式。

    【讨论】:

      【解决方案2】:

      更好/更容易/更便携的解决方案是仅发送 261 字节(或更少)并返回 ISO7816-4 状态代码 SW1-SW2 = 0x61xx,其中 xx 表示仍然可用的数据字节数。 阅读器将发送 ISO7816-4 命令“GET RESPONSE”来请求剩余的字节。

      例如,如果你想从 Android HCE 发送 300 个字节,那么你将开始回复:

      1. HCE:sendResponseApdu({ 250 first bytes of data + 0x6132 })(0x32 表示剩余 50 个字节)
      2. NFC 读卡器应发送:GET RESPONSE
      3. HCE:sendResponseApdu({ last 50 bytes of data + 0x9000 })

      【讨论】:

      • 这种方法有效吗?你试过你的解决方案了吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多