写一张1k MIfare卡,避开c#

写一张1k MIfare卡,避开c#,c#,winforms,nfc,mifare,C#,Winforms,Nfc,Mifare,我正在写一张1kb的mifare卡,有64个区块,我需要特别避免每4个区块,即扇区拖车,即区块3、7、11、15、19、23、27、31、35、39、63; 在写入之前,我已经对块进行了身份验证 我正在运行这样的循环: 拜托,我需要帮助避免扇区预告片,我的代码只是在写入它的所有块中循环,因此会损坏卡。 int block = 0; byte[] array = ImageConvert(); string hex = ByteArrayToStri

我正在写一张1kb的mifare卡,有64个区块,我需要特别避免每4个区块,即扇区拖车,即区块3、7、11、15、19、23、27、31、35、39、63; 在写入之前,我已经对块进行了身份验证

我正在运行这样的循环: 拜托,我需要帮助避免扇区预告片,我的代码只是在写入它的所有块中循环,因此会损坏卡。

        int block = 0;
        byte[] array = ImageConvert();
        string hex = ByteArrayToString(array);
        Image x = (Bitmap)((new ImageConverter()).ConvertFrom(array));
        foreach (byte[] copySlice in array.Slices(16))
        {
            Console.WriteLine(ByteArrayToString(copySlice));


            if (block == 0)

                AuthBlocks.Auth4(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);

            if (block == 4)
                AuthBlocks.Auth8(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 8)

                AuthBlocks.Auth12(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 12)

                AuthBlocks.Auth16(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 16)

                AuthBlocks.Auth20(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 20)

                AuthBlocks.Auth24(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 24)

                AuthBlocks.Auth28(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 28)

                AuthBlocks.Auth32(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 32)

                AuthBlocks.Auth36(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 36)

                AuthBlocks.Auth40(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 40)

                AuthBlocks.Auth44(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 46)

                AuthBlocks.Auth48(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 48)

                AuthBlocks.Auth52(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 52)

                AuthBlocks.Auth56(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);
            if (block == 56)

                AuthBlocks.Auth60(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);

            if (block == 60)
                AuthBlocks.Auth60(readerFunctions_, KEYTYPES.ACR122_KEYTYPE_A, 00);


            block++;
        writeblocks(block, copySlice);

        }
这是我的WriteBlock方法:

   void writeblocks(int block, byte[] data)
            {
                try
                {


                    byte[] buff = new byte[16];
                    buff = data;

                if (buff.Length < 16)
                    Array.Resize(ref buff, 16);

                myhelper.addTitleToLog(richTextBox1, false, "Update Binary");



                            mifareClassic_.updateBinary((byte)block, buff, (byte)(16));




                myhelper.addMsgToLog(richTextBox1, "Update success");
                    MessageBox.Show("success");
            }
void writeblock(int块,字节[]数据)
{
尝试
{
字节[]buff=新字节[16];
buff=数据;
如果(buff.Length<16)
调整数组大小(参考buff,16);
addTitleToLog(richTextBox1,false,“更新二进制文件”);
mifareClassic_uu.updateBinary((字节)块,buff,(字节)(16));
addMsgToLog(richTextBox1,“更新成功”);
MessageBox.Show(“成功”);
}

在调用writeblocks帮助之前,是否会测试如何避免
块%4==3
?您正在调用
AuthBlocks.Auth60
两次,对吗?@HansKesting这是一个很好的开始,感谢您注意到一个错误,我已经更正了它