支持扩展长度 APDU 的要求是啥?哪些智能手机支持它?

Posted

技术标签:

【中文标题】支持扩展长度 APDU 的要求是啥?哪些智能手机支持它?【英文标题】: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 不支持。

【问题讨论】:

【参考方案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 个字节,那么你将开始回复:

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

【讨论】:

这种方法有效吗?你试过你的解决方案了吗?

以上是关于支持扩展长度 APDU 的要求是啥?哪些智能手机支持它?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用扩展长度 APDU 从卡中读取大数据

推送通知是如何工作的,它的要求是啥?

flash cs6通常支特啥格式的配音和音乐和声效?如果手机上有支持录音的格式可以导入Flash

cun-al00是啥型号

有啥手机软件可以自己编曲

如何使用 Windows Phone 8 NFC 应用程序向智能卡发送 APDU 命令