DEV Community 👩‍💻👨‍💻

Joe Hayes
Joe Hayes

Posted on

Android NFCAdapter - Issue with AuthenticateSectorWithKeyA

Developing Android App in .net Maui. Having issues with NFCAdapter, specifically passing a specific sector key with AuthenticateSectorWithKeyA.
We print and encode our own Mifare 1K cards. Print software allows us to change the sector key A. I have tried multiple, and all ok, but need a specific key to work which is failing authentication.

No problem passing the following Keys and authenticating the sector with AuthenticateSectorWithKeyA.


byte[] keybytes = new byte[] { (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff };

OR
byte[] keybytes = new byte[] { (byte)0xAB, (byte)0xCD, (byte)0xEF, (byte)0x12, (byte)0x34, (byte)0x56 };

var auth = tag.AuthenticateSectorWithKeyA(0, keybytes);

All ok, var auth = true

But when I try the following Key it fails to authenticate. var auth = false.

byte[] keybytes = new byte[] { (byte)0x19, (byte)0x23, (byte)0x86, (byte)0x18, (byte)0x05, (byte)0x00 };

HEXString is 192386180500

Only thing I can see if the last two bytes have a zero prefix

SO
Tried:

byte[] keybytes = new byte[] { (byte)0xAB, (byte)0xCD, (byte)0xEF, (byte)0x12, (byte)0x34, (byte)0x56 };
Result: OK - var auth = True

Tried:

byte[] keybytes = new byte[] { (byte)0x19, (byte)0x23, (byte)0x86, (byte)0x18, (byte)0x05, (byte)0x00 };

Result: Fail - var auth = false

Use this key with non android RFID readers and all is ok. Need to use this key as we have produced thousands of RFID cards with this key A for sector 0.

Bit new to Hex and byte arrays, any help welcome.

Top comments (0)

Tired of sifting through your feed?

Find the content you want to see.

Change your feed algorithm by adjusting your experience level and give weights to the tags you follow.