Я работаю над проектом тегов NFC, где кодирую публичный идентификатор на тегах. Ключевым требованием является защита этого идентификатора с помощью пароля, предотвращая несанкционированные переписывания. Я создал помощник класса для управления паролями, но я столкнулся с несколькими проблемами: < /p>
Сброс пароля: я могу установить и удалять пароли с помощью моего помощника. Однако после настройки пароля я не могу сбросить его, используя внешний инструмент NFC (например, инструменты NFC), даже если я предоставляю правильный пароль. Я могу удалить пароль с помощью моего собственного помощника. . < /p>
Я включил свой код ниже и нуждаюсь в помощи в устранении неполадок в этих проблемах, чтобы я мог надежно управлять паролями по своим тегам NFC, как в моем приложении, так и с использованием стандартного NFC Инструменты. < /p>
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
Форум для тех, кто программирует под Android
1740139281
Anonymous
Я работаю над проектом тегов NFC, где кодирую публичный идентификатор на тегах. Ключевым требованием является защита этого идентификатора с помощью пароля, предотвращая несанкционированные переписывания. Я создал помощник класса для управления паролями, но я столкнулся с несколькими проблемами: < /p>
Сброс пароля: я могу установить и удалять пароли с помощью моего помощника. Однако после настройки пароля я не могу сбросить его, используя внешний инструмент NFC (например, инструменты NFC), даже если я предоставляю правильный пароль. Я могу удалить пароль с помощью моего собственного помощника. . < /p>
Я включил свой код ниже и нуждаюсь в помощи в устранении неполадок в этих проблемах, чтобы я мог надежно управлять паролями по своим тегам NFC, как в моем приложении, так и с использованием стандартного NFC Инструменты. < /p>
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}")
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79429732/what-is-the-correct-procedure-for-setting-a-write-protection-password-on-an-nxp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия