1

I'm using ACR1222L NFC smartcard reader with Mifare Plus cards (Security Level 0 as of now; manufacturer default keys A and B). I tried a variety of commands to load authentication key into the reader:

FF 82 00 00 06 FF FF FF FF FF FF
FF 82 00 01 06 FF FF FF FF FF FF
FF 82 20 00 06 FF FF FF FF FF FF
FF 82 00 00 06 A0 A1 A2 A3 A4 A5
FF 82 00 00 06 D3 F7 D3 F7 D3 F7
... and others ...

All of them are returning the error status:

63 00 (Operation Failed)

What could be wrong? I have searched long and wide for a hint, but many other questions are about failed authentication or failed read after successfully loading authentication key with one of the above commands, and they are often based on a different device (ACR122U).

I noticed that the reader does not even respond to the command when a card is not present. Should a card be present on the reader for it to load authentication key?

ADTC
  • 8,999
  • 5
  • 68
  • 93
  • Card must be present to do any operations with it. Reader is just a dumb hardware layer that doesn't do any logic, load or store anything inside. It simply relays the communication between the host and the device (card) applying some its (reader) restrictions. You have to monitor the state of the reader to be sure that the card is present. But in your case it's very strange that the reader doesn't return any error code it should! Most of the time it should be ICC_MUTE. – Alex D Aug 27 '15 at 16:28
  • @Alex When card is not present, I usually get error code `6` from the Jacspcsc-based native method that attempts to transmit the command to the reader (probably indicating failure of transmission). There is no response from the reader itself. When card is present, I get error code `0` from this method (indicating success of command transmission). The response from the reader itself is in a separate `byte` array. – ADTC Aug 28 '15 at 04:25
  • 1
    AFAIK you're not supposed to load key in this security level. If your card is in Security Level 0, what you probably want is the `write perso` command to load your key onto the card. – Xaqq Sep 01 '15 at 13:07

2 Answers2

1

To be able to use the commands such as "Load Authentication Key", "Authentication (of a block)", Read, Write, Update, etc, the card has to be in Security Level 1 or higher.

There are certain commands to move the card from Security Level 0 to Security Level 1 by loading several relevant keys into the card. Please contact ACS to obtain these commands as they are not publicly documented.

(Additional Info)

ADTC
  • 8,999
  • 5
  • 68
  • 93
  • I have the same problem. Any chance you could share those certain commands? (The link with 'additional info' is broken) – user3050534 May 03 '17 at 10:23
  • I'm so sorry I don't have access to the information anymore (it was for an old project). It is also copyrighted and not publicly available. I suggest you or your company contact ACS support directly to obtain the documentation as part of your paid support. The link of additional info didn't have those commands I think. It just had some extra theory information. – ADTC May 06 '17 at 18:02
0

Please try command-

 0xFF 0x82 0x00 0x60 [key length] [ key value]

or

0xFF 0x82 0x00 0x61 [key length] [ key value]

Where 0x60 to use key Type A and 0x61 for key Type B.

Arjun
  • 3,491
  • 4
  • 25
  • 47
  • Tried `FF 82 00 60 06 FF FF FF FF FF FF` and `FF 82 00 61 06 FF FF FF FF FF FF`... still getting `63 00`. – ADTC Aug 28 '15 at 04:17
  • I realized you had confused with the *obsolete version of* Authentication command (`FF 88 00 [block number] [key type] [key number]`). The question is about the Load Authentication Key command (`FF 82 ...`). – ADTC Aug 28 '15 at 04:55