Я работаю над проектом тегов 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
Какова правильная процедура для настройки пароля защиты записи на теге NXP NTAG213? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Какова правильная процедура для настройки пароля защиты записи на теге NXP NTAG213?
Anonymous » » в форуме Android - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Какова правильная процедура для настройки пароля защиты записи на теге NXP NTAG213?
Anonymous » » в форуме Android - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Какова правильная процедура внесения исправления в документацию Python?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-