pn532 Arduino не может изменить ключи и UID - PullRequest
0 голосов
/ 27 февраля 2020

Я использую pn532 (SPI-связь) с библиотекой Adafruit для Arduino, чтобы изменить китайский тег с изменяемым uid.

Я могу прочитать все блоки тега, используя ключ по умолчанию. Я могу записать все блоки данных (1,2,4,5,6,8,9 ....), но Я не могу написать трейлер сектора, содержащий ключи (блоки 3, 7, 11 ... ) ни один блок 0 (содержащий UID) с использованием модуля pn532. Я могу успешно написать все блоки, используя Mifare Classi c Tool для Android.

Вот код, который я использую (блок 8 написан в этом примере). Во всех случаях (блок данных или трейлер), nfc.mifareclassic_WriteDataBlock возвращает success=1. Но данные действительно записываются, только если номер блока соответствует блоку данных.

uint8_t blankAccessBits[3] = { 0xff, 0x07, 0x80 };
uint8_t keya[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
uint8_t keya_new[6] = { 0x48, 0x45, 0x58, 0x41, 0x43, 0x54 };
success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 8, 0, keya);

if (success)
{
    memcpy(blockBuffer, keya_new, sizeof(keya_new));
    memcpy(blockBuffer + 6, blankAccessBits, sizeof(blankAccessBits));
    blockBuffer[9] = 0x69;
    memcpy(blockBuffer + 10, keya, sizeof(keya));
    success = nfc.mifareclassic_WriteDataBlock (8, blockBuffer);
}
if (success)
        {
          // Data seems to have been written
          Serial.println("Successfully wrote the block");
}
...