1
votes

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|
1
Are you sure that this is a DESFire card? Have you verified this with some other tag reader app?Michael Roland
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
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
Is possible if my android doesn't support native protocol?sams

1 Answers

0
votes

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).