1

I'm using Galaxy A5, Android 5.0.2, SDK 21 with Android Studio 1.1.0

Android as PCD, and Mifare DESFire as PICC. Native DESFire APDU Framing didn't work, but ISO 7816-4 worked.

Example:

MIFARE DESFire SelectApplication with AID equal to 000000h (PICC level)
Command: 90 5a 00 00 03 00 00 00 00.
Expected response: 91 00.
Currently the response is 68 00.

Document reference: 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 scan (version 4.11.59 [β4011059])

INFO

  • IC manufacturer: NXP Semiconductors
  • IC type: Unknown IC

NDEF

  • No NFC data set storage:

EXTRA

TECH

  • Technologies supported:
  • ISO/IEC 14443-4 (Type A) compatible
  • ISO/IEC 14443-3 (Type A) compatible
  • ISO/IEC 14443-2 (Type A) compatible

  • Android technology information: Tag description:

  • TAG: Tech [android.nfc.tech.IsoDep, android.nfc.tech.NfcA]
    • android.nfc.tech.IsoDep
  • Maximum transceive length: 261 bytes
  • Default maximum transceive time-out: 309 ms
  • Extended length APDUs not supported
    • android.nfc.tech.NfcA
  • Maximum transceive length: 253 bytes
  • Default maximum transceive time-out: 618 ms

No MIFARE Classic support present in Android

Detailed protocol information:

  • ID: 04:62:26:82:8A:29:80
  • ATQA: 0x4403
  • SAK: 0x20
  • ATS: 0x1078B3C402654B5450304432654B545000
  • Max. accepted frame size: 256 bytes (FSCI: 8)
  • Supported receive rates: 106, 212, 424 kbit/s (DR: 1, 2, 4)
  • Supported send rates: 106, 212, 424 kbit/s (DS: 1, 2, 4)
  • Different send and receive rates not supported
  • SFGT: 4.833 ms (SFGI: 4)
  • FWT: 1.237 s (FWI: 12)
  • NAD not supported
  • CID supported
  • Historical bytes: 0x654B5450304432654B5450 |eKTP0D2eKTP|
sams
  • 15
  • 7
  • Are you sure that this is a DESFire card? Have you verified this with some other tag reader app? – Michael Roland Dec 23 '15 at 10:11
  • So NXP TagInfo tells you that the card is **not** a DESFire card, right? Why would you expect the card to be accessible as DESFire then? – Michael Roland Dec 23 '15 at 10:37
  • Additional readings using TagInfo(NXP), I show above. I tried using another program NFCTagInfo(NFC Research Lab Hagenberg-Michael Roland), I get information that card is DESFire. – sams Dec 23 '15 at 10:43
  • Is possible if my android doesn't support native protocol? – sams Dec 23 '15 at 10:47

1 Answers1

0

While the ATQA/SAK looks as if the card was DESFire (that's why my NFC TagInfo app detects it as such, but should give you either a read error or does indicate availability of a DESFire master application), the remaining parameters (particularly the historical bytes) clearly indicate that this is something other than a DESFire card.

Hence, don't expect the card to respond to DESFire commands (native or wrapped native). This also matches the behavior of the card as it responds with 68 00 (which indicates that the coding of the CLA byte (0x90 in your case) is not supported).

Michael Roland
  • 39,663
  • 10
  • 99
  • 206
  • It is the resident card, maybe data encrypted. I was confused, I tried to read the card with TagWriter (nxp), Sample App-Mifare SDK (nxp) data is also not out.The tool is very useful for me. Thank you for answers. Nice to meet you :). – sams Dec 23 '15 at 12:42