原生DESFire APDU框架不起作用

时间:2015-12-20 15:06:44

标签: android nfc mifare apdu contactless-smartcard

我正在使用Galaxy A5,Android 5.0.2,带有Android Studio 1.1.0的SDK 21

Android为PCD,Mifare DESFire为PICC。原生DESFire APDU框架不起作用,但ISO 7816-4有效。

示例:

MIFARE DESFire SelectApplication,AID等于000000h(PICC级别)
命令:90 5a 00 00 03 00 00 00 00
预期回复:91 00
目前回复是68 00

文件参考:AN11004.pdf (page 33)

void SelectApp() {
    _isoDep.connect();
    byte[] reqSelectApp = new byte[]{(byte) 0x90, (byte) 0x5A, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00};
    byte[] resSelectApp = _isoDep.transceive(reqSelectApp);
    _responseTextView.append(String.format("reqSelectApp: %s length:%d\n", BytesToHexStr(reqSelectApp), reqSelectApp.length));
    _responseTextView.append(String.format("resSelectApp: %s length:%d\n", BytesToHexStr(resSelectApp), resSelectApp.length));
}

String BytesToHexStr(byte[] items) {
    StringBuilder builder = new StringBuilder();
    for (byte item : items) {
        builder.append(String.format("%02X", item));
    }
    return builder.toString();
}                        

TagInfo扫描(版本4.11.59 [β4011059])

INFO

  • IC制造商:恩智浦半导体
  • IC类型:未知IC

NDEF

  • 无NFC数据集存储:

EXTRA

TECH

  • 支持的技术:
  • ISO / IEC 14443-4(A类)兼容
  • ISO / IEC 14443-3(A类)兼容
  • ISO / IEC 14443-2(A类)兼容

  • Android技术信息: 标签说明:

  • TAG:Tech [android.nfc.tech.IsoDep,android.nfc.tech.NfcA]
    • android.nfc.tech.IsoDep
  • 最大收发长度:261字节
  • 默认最大收发超时:309 ms
  • 不支持扩展长度APDU
    • android.nfc.tech.NfcA
  • 最大收发长度:253字节
  • 默认最大收发超时:618 ms

Android中没有MIFARE Classic支持

详细协议信息:

  • ID:04:62:26:82:8A:29:80
  • ATQA:0x4403
  • SAK:0x20
  • ATS:0x1078B3C402654B5450304432654B545000
  • 最大。接受的帧大小:256字节(FSCI:8)
  • 支持接收率:106,212,424 kbit / s(DR:1,2,4)
  • 支持的发送速率:106,212,424 kbit / s(DS:1,2,4)
  • 不支持不同的发送和接收率
  • SFGT:4.833 ms(SFGI:4)
  • FWT:1.237 s(FWI:12)
  • 不支持NAD
  • 支持CID
  • 历史字节:0x654B5450304432654B5450 | eKTP0D2eKTP |

1 个答案:

答案 0 :(得分:0)

虽然ATQA / SAK看起来好像卡是DESFire(这就是我的NFC TagInfo应用程序检测到它的原因,但是应该给你一个读错误或者指示DESFire主应用程序的可用性),其余参数(特别是历史字节)清楚地表明这不是DESFire卡。

因此,不要期望卡响应DESFire命令(本机或包裹本机)。这也与卡的行为相匹配,因为它以68 00响应(表示不支持CLA字节的编码(在您的情况下为0x90)。