Какова правильная процедура для настройки пароля защиты записи на теге NXP NTAG213?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Какова правильная процедура для настройки пароля защиты записи на теге NXP NTAG213?

Сообщение Anonymous »

Я работаю над проектом тегов NFC, где кодирую публичный идентификатор на тегах. Ключевым требованием является защита этого идентификатора с помощью пароля, предотвращая несанкционированные переписывания. Я создал помощник класса для управления паролями, но я столкнулся с несколькими проблемами: < /p>
Сброс пароля: я могу установить и удалять пароли с помощью моего помощника. Однако после настройки пароля я не могу сбросить его, используя внешний инструмент NFC (например, инструменты NFC), даже если я предоставляю правильный пароль. Я могу удалить пароль с помощью моего собственного помощника. .
fun isPasswordProtected(tag: Tag): Boolean {
val nfcA = NfcA.get(tag)
try {
nfcA.connect()
// Read page 41 (0x29)
val response = nfcA.transceive(byteArrayOf(0x30, 0x29))
// Get the AUTH0 byte (first byte of the response)
val auth0 = response[0]
// Password protection is enabled if AUTH0 is less than 0xFF
return auth0 < 0xFF.toByte()
} catch (e: IOException) {
LogUtil.log(LogUtil.TAG_NFC, "IOException while reading NFC-A tag -> ${e.message}")
return false // Or handle the exception as needed
} finally {
try {
nfcA.close()
} catch (e: IOException) {
LogUtil.log(LogUtil.TAG_NFC,"IOException while closing NFC-A tag -> ${e.message}")
}
}

}

fun writeProtectWithPassword(tag: Tag, password: String, pack: String) {
val nfcA = NfcA.get(tag)
try {
nfcA.connect()
val passwordBytes = password.toByteArray(Charset.forName("US-ASCII"))
val packBytes = pack.toByteArray(Charset.forName("US-ASCII"))
// Write password to page 43 (0x2B)
nfcA.transceive(byteArrayOf(0xA2.toByte(), 0x2B, passwordBytes[0], passwordBytes[1], passwordBytes[2], passwordBytes[3]))
// Write PACK to page 44 (0x2C)
nfcA.transceive(byteArrayOf(0xA2.toByte(), 0x2C, packBytes[0], packBytes[1], 0x00, 0x00))
// Set AUTH0 to page 9 (0x09) to protect from page 9 onwards
nfcA.transceive(byteArrayOf(0xA2.toByte(), 0x29, 0x09, 0x00, 0x00, 0x00))
// (Optional) Set PROT bit in page 42 (0x2A) to 1 for read/write protection
nfcA.transceive(byteArrayOf(0xA2.toByte(), 0x2A, 0x80.toByte(), 0x00, 0x00, 0x00))
} catch (e: IOException) {
LogUtil.log(LogUtil.TAG_NFC,"IOException while writing to NFC-A tag -> ${e.message}")
} finally {
try {
nfcA.close()
} catch (e: IOException) {
LogUtil.log(LogUtil.TAG_NFC,"IOException while closing NFC-A tag -> ${e.message}")
}
}
}

fun removePasswordProtection(tag: Tag, password: String) {
val nfcA = NfcA.get(tag)
try {
nfcA.connect()
val passwordBytes = password.toByteArray(Charset.forName("US-ASCII"))
// Authenticate with the current password
nfcA.transceive(byteArrayOf(0x1B, passwordBytes[0], passwordBytes[1], passwordBytes[2], passwordBytes[3]))
val result = nfcA.transceive(byteArrayOf(0x30, 0x29))
// Set AUTH0 to 0xFF to disable password protection
nfcA.transceive(byteArrayOf(0xA2.toByte(), 0x29, result[0], result[1], result[2], 0xFF.toByte()))
} catch (e: IOException) {
LogUtil.log(LogUtil.TAG_NFC, "IOException while writing to NFC-A tag -> ${e.message}")
} finally {
try {
nfcA.close()
} catch (e: IOException) {
LogUtil.log(LogUtil.TAG_NFC,"IOException while closing NFC-A tag -> ${e.message}")
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -on-an-nxp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»