В течение нескольких недель я изо всех сил пытаюсь персонализировать NTAG424, чтобы вернуть после ответа на каждом TAP. < /p>
{"uuid":"","counter":"","cmac":"","domaindata1":"","domaindata2":""}
Я использую библиотеку Android NXP для настройки и записи. Android
[*] Пример приложения Taplinx Android
Ниже мой код внутри sample_application_android/src/main/java/com/nxp/sampletaplinx/publeActivity.java
public static byte[] intTo2ByteArray(int value) {
return new byte[] {
(byte) (value & 0xFF), // LSB
(byte) ((value >> 8) & 0xFF), // middle byte
(byte) ((value >> 16) & 0xFF) // MSB
};
}
private void tag424DNACardLogic(INTAG424DNA ntag424DNA) {
byte[] KEY_AES128_DEFAULT = new byte[] {
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
};
byte[] NTAG424DNA_APP_NAME =
{(byte) 0xD2, (byte) 0x76, 0x00, 0x00, (byte) 0x85, 0x01, 0x01};
byte[] data ={ 0x73, 0x75, 0x73, 0x68, 0x69, 0x6C };
mStringBuilder.append("\n\n");
int timeOut = 2000;
try {
ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME);
KeyData aesKeyData = new KeyData();
Key keyDefault = new SecretKeySpec(KEY_AES128_DEFAULT, "AES");
aesKeyData.setKey(keyDefault);
ntag424DNA.authenticateEV2First(0, aesKeyData, null);
mStringBuilder.append(getString(R.string.Authentication_status_true));
mStringBuilder.append("\n\n");
ntag424DNA.setPICCConfiguration(true);
String jsonTemplate = "{\"uuid\":\"00000000000000\",\"counter\":\"000000\",\"cmac\":\"0000000000000000\",\"domain1\":" + 1 + ",\"domain2\":" + 1 + "}";
byte[] jsonBytes = jsonTemplate.getBytes("UTF-8");
NTAG424DNAFileSettings fs = new NTAG424DNAFileSettings(
CommunicationMode.Plain, // or MAC/ENC depending on your security
(byte) 0x0E, // Read access: Key 0
(byte) 0x0E, // Write access: Key 0
(byte) 0x0E, // Read/Write: Key 0
(byte) 0x00 // Change access: Free
);
byte[] type = "U".getBytes("US-ASCII");
fs.setSDMEnabled(true);
fs.setUIDMirroringEnabled(true);
fs.setSDMReadCounterEnabled(true);
byte[] bytes = new byte[] { (byte)0xE0, (byte)0x00, (byte)0x00 };
fs.setSdmAccessRights(bytes);
byte[] uuidOffset = intTo2ByteArray(8);
fs.setUidOffset(uuidOffset);
byte[] readCounterOffset = intTo2ByteArray(35);
fs.setSdmReadCounterOffset(readCounterOffset);
byte[] macOffset = intTo2ByteArray(51);
fs.setSdmMacInputOffset(uuidOffset);
fs.setSdmMacOffset(macOffset);
ntag424DNA.changeFileSettings(FILE_NUMBER, fs);
// Create NDEF record
NdefRecordWrapper record = new NdefRecordWrapper(
NdefRecordWrapper.TNF_WELL_KNOWN,
type,
new byte[0], // empty ID
jsonBytes // payload (your JSON)
);
// Wrap record into NDEF message
NdefMessageWrapper msg = new NdefMessageWrapper(record);
ntag424DNA.writeNDEF(msg);
NxpLogUtils.save();
} catch (Exception e) {
writeFailedMessage();
mStringBuilder.append(e.getMessage());
Log.i("MainActivity", "URI NDEF message written successful $msg " + e.getMessage() );
showMessage(mStringBuilder.toString(), PRINT);
NxpLogUtils.save();
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... h-static-d
Персонализация NXP NTAG424 NFC для создания return uuid, счетчика вместе со статическими данными ⇐ Android
Форум для тех, кто программирует под Android
1758167513
Anonymous
В течение нескольких недель я изо всех сил пытаюсь персонализировать NTAG424, чтобы вернуть после ответа на каждом TAP. < /p>
{"uuid":"","counter":"","cmac":"","domaindata1":"","domaindata2":""}
Я использую библиотеку Android NXP для настройки и записи. Android
[*] Пример приложения Taplinx Android
Ниже мой код внутри sample_application_android/src/main/java/com/nxp/sampletaplinx/publeActivity.java
public static byte[] intTo2ByteArray(int value) {
return new byte[] {
(byte) (value & 0xFF), // LSB
(byte) ((value >> 8) & 0xFF), // middle byte
(byte) ((value >> 16) & 0xFF) // MSB
};
}
private void tag424DNACardLogic(INTAG424DNA ntag424DNA) {
byte[] KEY_AES128_DEFAULT = new byte[] {
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
};
byte[] NTAG424DNA_APP_NAME =
{(byte) 0xD2, (byte) 0x76, 0x00, 0x00, (byte) 0x85, 0x01, 0x01};
byte[] data ={ 0x73, 0x75, 0x73, 0x68, 0x69, 0x6C };
mStringBuilder.append("\n\n");
int timeOut = 2000;
try {
ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME);
KeyData aesKeyData = new KeyData();
Key keyDefault = new SecretKeySpec(KEY_AES128_DEFAULT, "AES");
aesKeyData.setKey(keyDefault);
ntag424DNA.authenticateEV2First(0, aesKeyData, null);
mStringBuilder.append(getString(R.string.Authentication_status_true));
mStringBuilder.append("\n\n");
ntag424DNA.setPICCConfiguration(true);
String jsonTemplate = "{\"uuid\":\"00000000000000\",\"counter\":\"000000\",\"cmac\":\"0000000000000000\",\"domain1\":" + 1 + ",\"domain2\":" + 1 + "}";
byte[] jsonBytes = jsonTemplate.getBytes("UTF-8");
NTAG424DNAFileSettings fs = new NTAG424DNAFileSettings(
CommunicationMode.Plain, // or MAC/ENC depending on your security
(byte) 0x0E, // Read access: Key 0
(byte) 0x0E, // Write access: Key 0
(byte) 0x0E, // Read/Write: Key 0
(byte) 0x00 // Change access: Free
);
byte[] type = "U".getBytes("US-ASCII");
fs.setSDMEnabled(true);
fs.setUIDMirroringEnabled(true);
fs.setSDMReadCounterEnabled(true);
byte[] bytes = new byte[] { (byte)0xE0, (byte)0x00, (byte)0x00 };
fs.setSdmAccessRights(bytes);
byte[] uuidOffset = intTo2ByteArray(8);
fs.setUidOffset(uuidOffset);
byte[] readCounterOffset = intTo2ByteArray(35);
fs.setSdmReadCounterOffset(readCounterOffset);
byte[] macOffset = intTo2ByteArray(51);
fs.setSdmMacInputOffset(uuidOffset);
fs.setSdmMacOffset(macOffset);
ntag424DNA.changeFileSettings(FILE_NUMBER, fs);
// Create NDEF record
NdefRecordWrapper record = new NdefRecordWrapper(
NdefRecordWrapper.TNF_WELL_KNOWN,
type,
new byte[0], // empty ID
jsonBytes // payload (your JSON)
);
// Wrap record into NDEF message
NdefMessageWrapper msg = new NdefMessageWrapper(record);
ntag424DNA.writeNDEF(msg);
NxpLogUtils.save();
} catch (Exception e) {
writeFailedMessage();
mStringBuilder.append(e.getMessage());
Log.i("MainActivity", "URI NDEF message written successful $msg " + e.getMessage() );
showMessage(mStringBuilder.toString(), PRINT);
NxpLogUtils.save();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79767965/personalising-nxp-ntag424-nfc-to-create-return-uuid-counter-along-with-static-d[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия