我正在尝试编写一个C#Winforms应用程序,以使用ACR122读卡器对MiFare 1K智能卡进行编程。我坚持了解身份验证。 我有一些示例代码,我不理解它是如何工作的。 我的问题是: 1)是否有多个认证级别?通用身份验证和扇区级别身份验证? 2)如何确定某个扇区是否具有出厂默认值FF FF FF FF FF FF FF,或者是否已将其修改为其他值? 3)下面的代码似乎有效,但是我看不到任何地方包含密钥。有人可以向我解释它的工作原理吗? 4)该命令将如何修改KeyA,然后使用修改后的密钥访问块?
我一直在阅读此文档,但无法找出解决方案: https://www.nxp.com/docs/en/data-sheet/MF1S70YYX_V1.pdf
private bool authenticateBlock(String block)
{
ClearBuffers();
SendBuff[0] = 0xFF;
SendBuff[1] = 0x86;
SendBuff[2] = 0x00;
SendBuff[3] = 0x00;
SendBuff[4] = 0x05;
SendBuff[5] = 0x01;
SendBuff[6] = 0x00;
SendBuff[7] = (byte)int.Parse(block);
SendBuff[8] = 0x60;
SendBuff[9] = (byte)int.Parse("1");
SendLen = 0x0A;
RecvLen = 0x02;
retCode = SendAPDUandDisplay(0);
if (retCode != Card.SCARD_S_SUCCESS)
{
MessageBox.Show("FAIL Authentication!");
return false;
}
return true;
}