How can i enable CMAC, UID, COUNTER and RAND in NTAG424 DNA?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How can i enable CMAC, UID, COUNTER and RAND in NTAG424 DNA?

1,279件の閲覧回数
rocky2
Contributor I

I'm trying to use the newest Android SDK library to set my dynamic URL based on AES key, but I'm unable to do it.

nxpnfcandroidlib-release-protected.aar

This is my code

override fun onNewIntent(intent: Intent) {
	Log.i("NFC", "Intent action: ${intent.action}")
	super.onNewIntent(intent)

	Log.i("MainActivity", "NFC tag discovered")

	val cardType = libInstance.getCardType(intent)
	Log.i("MainActivity", "Detected card type: $cardType")
	if (cardType == CardType.NTAG424DNA) {
	    val ntag424DNA: INTAG424DNA = DESFireFactory.getInstance().getNTAG424DNA(libInstance.customModules)
	    val reader: IReader = ntag424DNA.reader

	    try {

	        if (!reader.isConnected) {
	            reader.connect()
	        }

	        ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME)
	        Log.i("NFC", "ISO selected app by DF Name ")

	        authenticateTag(ntag424DNA, KEY_AES128_DEFAULT)
		    creatingNDEFmessage(ntag424DNA)
            authenticateTag(ntag424DNA, KEY_AES128_DEFAULT)
		    changeFileSettings(ntag424DNA, 0x01)

            authenticateTag(ntag424DNA, KEY_AES128_DEFAULT)
	        ntag424DNA.setPICCConfiguration(true)
	        Log.i("MainActivity", " PICC Configuration updated to enable SDM globally.")

	        authenticateTag(ntag424DNA, KEY_AES128_DEFAULT)
	        changeSDMFileSettings(ntag424DNA, 0x01)

	        if (reader.isConnected) {
	            reader.close()
	        }
	    } catch (e: Exception) {
	        e.printStackTrace()
	    }

	}
}

private fun creatingNDEFmessage(ntag424DNA: INTAG424DNA) {
    // 1. Creating URI NDEF message
    val msg = NdefMessageWrapper(
        NdefRecordWrapper(
            NdefRecordWrapper.TNF_ABSOLUTE_URI,
            "https://domain.com?uid=04BB38D2AA1191&ctr=0001&cmac=3ab665b76b795cb9bf76a17956cc9fb3&rand=422def08-8a1c-49c9-9138-434cde858faa".toByteArray(
                Charset.forName("US-ASCII")
            ), ByteArray(0), ByteArray(0)
        )
    )

    ntag424DNA.writeNDEF(msg);
    Log.i("MainActivity", "URI NDEF message written successful ")

    val ndefRead = ntag424DNA.readNDEF()
    Log.i("MainActivity", "Read URI NDEF message ${CustomModules.getUtility().dumpBytes(ndefRead.toByteArray())}")

}

private fun changeFileSettings(ntag424DNA: INTAG424DNA, fileNumber: Int) {
    // 3. Create NTAG 424 DNA file settings for E104
    val fileSettings = NTAG424DNAFileSettings(
        MFPCard.CommunicationMode.Encrypted,    // = 0x03 = Full ENC + CMAC (SUN)
        0x0E.toByte(),             // Read access = key slot 0x00 maybe 0x01
        0x0E.toByte(),             // Write access = always
        0x0E.toByte(),             // RW access = always
        0x0E.toByte()              // Change access = always
    )

    Log.i("MainActivity", "Prepare for saving changes in file $fileNumber")
    ntag424DNA.changeFileSettings(fileNumber, fileSettings)
    Log.i("NFC", " File settings updated $fileNumber")
}


private fun changeSDMFileSettings(ntag424DNA: INTAG424DNA, fileNumber: Int) {
    val fileSettings = ntag424DNA.getFileSettings(fileNumber);

    fileSettings.isSDMEnabled = true;
    fileSettings.isUIDMirroringEnabled = true;

    fileSettings.piccDataOffset = intTo2ByteArray(51)
    fileSettings.sdmMacOffset = intTo2ByteArray(51)
    fileSettings.sdmMacInputOffset = intTo2ByteArray(51)
    fileSettings.sdmReadCounterOffset = intTo2ByteArray(51)
    fileSettings.uidOffset = intTo2ByteArray(51)
    fileSettings.sdmAccessRights = byteArrayOf(0x00, 0x00)

    Log.i("MainActivity", "Prepare for saving SDM changes in file $fileNumber")
    ntag424DNA.changeFileSettings(fileNumber, fileSettings)
    Log.i("NFC", " File settings updated: SUN CMAC enabled on $fileNumber")
}

private fun intTo2ByteArray(value: Int): ByteArray {
    return byteArrayOf(
        ((value shr  and 0xFF).toByte(),
        (value and 0xFF).toByte()
    )
}

I know that the offset number doesn't match the position in the URL but whatever I'm changing, I'm still getting this error. It looks like, for some reason, these settings can not be saved by this method.

ntag424DNA.changeFileSettings(fileNumber, fileSettings)

This is the error message

com.nxp.nfclib.exceptions.UsageException: Invalid Parameters! {Invalid Value for PICC Offset}
ラベル(1)
0 件の賞賛
返信
5 返答(返信)

521件の閲覧回数
sushil_adhikari
Contributor II

hey there,

I am following this thread to set up JSON data, but it is not working for me. This is my first time working with hardware, which is making things much more challenging. I am using the NXP Android library and the sample Android application from here: https://www.nxp.com/design/design-center/software/rfid-developer-resources/taplinx-software-developm...

Below is my code inside Sample_Application_Android/src/main/java/com/nxp/sampletaplinx/WriteActivity.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();
    }

}

 would be great help if someone can assist me with this

0 件の賞賛
返信

507件の閲覧回数
sushil_adhikari
Contributor II

The issue was due to the wrong offset value. It seems ntag reserved 21 default index. Now we are trying to change factory 128 aes key and changekey() function didnt work for us

@ukcas 

0 件の賞賛
返信

1,215件の閲覧回数
rocky2
Contributor I

Thanks for the help! You are right that my offset has the wrong values. This is what I have changed and now I can save settings. 

override fun onNewIntent(intent: Intent) {
    Log.i("NFC", "Intent action: ${intent.action}")
    super.onNewIntent(intent)

    Log.i("MainActivity", "NFC tag discovered")

    val cardType = libInstance.getCardType(intent)
    Log.i("MainActivity", "Detected card type: $cardType")
    if (cardType == CardType.NTAG424DNA) {
        val ntag424DNA: INTAG424DNA = DESFireFactory.getInstance().getNTAG424DNA(libInstance.customModules)
        val reader: IReader = ntag424DNA.reader

        try {

            if (!reader.isConnected) {
                reader.connect()
            }

            ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME)
            Log.i("NFC", "ISO selected app by DF Name ")

            authenticateTag(0x00, ntag424DNA, KEY_AES128_DEFAULT)
            creatingNDEFmessage(ntag424DNA)
            authenticateTag(0x00, ntag424DNA, KEY_AES128_DEFAULT)
            changeFileSettings(ntag424DNA, 0x02)

            if (reader.isConnected) {
                reader.close()
            }
        } catch (e: Exception) {
            Log.e("MainActivity", e.localizedMessage ?: "No Error Message");
            e.printStackTrace()
        }

    }
}

private fun changeFileSettings(ntag424DNA: INTAG424DNA, fileNumber: Int) {
    // 3. Create NTAG 424 DNA file settings for E104
    val fileSettings = NTAG424DNAFileSettings(
        MFPCard.CommunicationMode.Plain,    // = 0x03 = Full ENC + CMAC (SUN)
        0x0E.toByte(),             // Read access = key slot 0x00 maybe 0x01
        0x0E.toByte(),             // Write access = always
        0x0E.toByte(),             // RW access = always
        0x00.toByte()              // Change access = always
    )

    fileSettings.isSDMEnabled = true
    fileSettings.isUIDMirroringEnabled = true
    fileSettings.isSDMReadCounterEnabled = true
    fileSettings.sdmAccessRights = byteArrayOf(0xfe.toByte(), 0xe1.toByte())

    fileSettings.uidOffset = byteArrayOf(0x1A, 0x00, 0x00)   
    fileSettings.sdmReadCounterOffset = byteArrayOf(0x2d, 0x00, 0x00) 
    fileSettings.sdmMacOffset = byteArrayOf(0x39, 0x00, 0x00) 
    fileSettings.sdmMacInputOffset = byteArrayOf(0x39, 0x00, 0x00)

    Log.i("MainActivity", "Prepare for saving changes in file $fileNumber")

    ntag424DNA.changeFileSettings(fileNumber, fileSettings)
    Log.i("MainActivity", " File settings updated $fileNumber")
}

private fun creatingNDEFmessage(ntag424DNA: INTAG424DNA) {
    // 1. Creating URI NDEF message
    val payload = byteArrayOf(0x04) + "noexample.xxxx?uid=00000000000000&ctr=000000&cmac=0000000000000000".toByteArray()

    val msg = NdefMessageWrapper(
        NdefRecordWrapper(
            NdefRecordWrapper.TNF_WELL_KNOWN,
            "U".toByteArray(StandardCharsets.US_ASCII),
            ByteArray(0),
            payload
        )
    )

    ntag424DNA.writeNDEF(msg);
    Log.i("MainActivity", "URI NDEF message written successful ")

    val ndefRead = ntag424DNA.readNDEF()
    Log.i("MainActivity", "Read URI NDEF message ${CustomModules.getUtility().dumpBytes(ndefRead.toByteArray())}")

}

 

0 件の賞賛
返信

1,230件の閲覧回数
ukcas
NXP Employee
NXP Employee

Dear Rocky2,

Please check document refered by jimmyvhan and datasheet. 

 

Your offsets are overlapping, which is not permitted as per datasheet.

Considering your desired URL. You have too less space for NFCCounter, which is 3 bytes. So below settings are suiting corrected URL.

https://domain.com?uid=04BB38D2AA1191&ctr=000001&cmac=3ab665b76b795cb9bf76a17956cc9fb3&rand=422def08...

 You shall use these parameters for SDM Configuration. You decide on Input data for CMAC calculation as well. We used UIDOffset as starting point for this example.

fileSettings.sdmMacOffset = intTo2ByteArray(53)
fileSettings.sdmMacInputOffset = intTo2ByteArray(22)
fileSettings.sdmReadCounterOffset = intTo2ByteArray(41)
fileSettings.uidOffset = intTo2ByteArray(22)

 Best regards,

TapLinx team

0 件の賞賛
返信

1,246件の閲覧回数
jimmychan
NXP TechSupport
NXP TechSupport

This document could be useful for you.

NTAG 424 DNA and NTAG 424 DNA TagTamper features and hints

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2082672%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ENTAG424%20DNA%20%E3%81%A7%20CMAC%E3%80%81UID%E3%80%81COUNTER%E3%80%81RAND%20%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2082672%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%9C%80%E6%96%B0%E3%81%AE%20Android%20SDKs%20%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81AES%20%E3%82%AD%E3%83%BC%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E5%8B%95%E7%9A%84%20URL%20%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Enxpnfcandroidlib-release-protected.aar%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AF%E7%A7%81%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%99%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eoverride%20fun%20onNewIntent(intent%3A%20Intent)%20%7B%0A%09Log.i(%22NFC%22%2C%20%22Intent%20action%3A%20%24%7Bintent.action%7D%22)%0A%09super.onNewIntent(intent)%0A%0A%09Log.i(%22MainActivity%22%2C%20%22NFC%20tag%20discovered%22)%0A%0A%09val%20cardType%20%3D%20libInstance.getCardType(intent)%0A%09Log.i(%22MainActivity%22%2C%20%22Detected%20card%20type%3A%20%24cardType%22)%0A%09if%20(cardType%20%3D%3D%20CardType.NTAG424DNA)%20%7B%0A%09%20%20%20%20val%20ntag424DNA%3A%20INTAG424DNA%20%3D%20DESFireFactory.getInstance().getNTAG424DNA(libInstance.customModules)%0A%09%20%20%20%20val%20reader%3A%20IReader%20%3D%20ntag424DNA.reader%0A%0A%09%20%20%20%20try%20%7B%0A%0A%09%20%20%20%20%20%20%20%20if%20(!reader.isConnected)%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20reader.connect()%0A%09%20%20%20%20%20%20%20%20%7D%0A%0A%09%20%20%20%20%20%20%20%20ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME)%0A%09%20%20%20%20%20%20%20%20Log.i(%22NFC%22%2C%20%22ISO%20selected%20app%20by%20DF%20Name%20%3CLI-EMOJI%20id%3D%22lia_white-heavy-check-mark%22%20title%3D%22%3Awhite_heavy_check_mark%3A%22%3E%3C%2FLI-EMOJI%3E%22)%0A%0A%09%20%20%20%20%20%20%20%20authenticateTag(ntag424DNA%2C%20KEY_AES128_DEFAULT)%0A%09%09%20%20%20%20creatingNDEFmessage(ntag424DNA)%0A%20%20%20%20%20%20%20%20%20%20%20%20authenticateTag(ntag424DNA%2C%20KEY_AES128_DEFAULT)%0A%09%09%20%20%20%20changeFileSettings(ntag424DNA%2C%200x01)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20authenticateTag(ntag424DNA%2C%20KEY_AES128_DEFAULT)%0A%09%20%20%20%20%20%20%20%20ntag424DNA.setPICCConfiguration(true)%0A%09%20%20%20%20%20%20%20%20Log.i(%22MainActivity%22%2C%20%22%3CLI-EMOJI%20id%3D%22lia_white-heavy-check-mark%22%20title%3D%22%3Awhite_heavy_check_mark%3A%22%3E%3C%2FLI-EMOJI%3E%20PICC%20Configuration%20updated%20to%20enable%20SDM%20globally.%22)%0A%0A%09%20%20%20%20%20%20%20%20authenticateTag(ntag424DNA%2C%20KEY_AES128_DEFAULT)%0A%09%20%20%20%20%20%20%20%20changeSDMFileSettings(ntag424DNA%2C%200x01)%0A%0A%09%20%20%20%20%20%20%20%20if%20(reader.isConnected)%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20reader.close()%0A%09%20%20%20%20%20%20%20%20%7D%0A%09%20%20%20%20%7D%20catch%20(e%3A%20Exception)%20%7B%0A%09%20%20%20%20%20%20%20%20e.printStackTrace()%0A%09%20%20%20%20%7D%0A%0A%09%7D%0A%7D%0A%0Aprivate%20fun%20creatingNDEFmessage(ntag424DNA%3A%20INTAG424DNA)%20%7B%0A%20%20%20%20%2F%2F%201.%20Creating%20URI%20NDEF%20message%0A%20%20%20%20val%20msg%20%3D%20NdefMessageWrapper(%0A%20%20%20%20%20%20%20%20NdefRecordWrapper(%0A%20%20%20%20%20%20%20%20%20%20%20%20NdefRecordWrapper.TNF_ABSOLUTE_URI%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Fdomain.com%3Fuid%3D04BB38D2AA1191%26amp%3Bctr%3D0001%26amp%3Bcmac%3D3ab665b76b795cb9bf76a17956cc9fb3%26amp%3Brand%3D422def08-8a1c-49c9-9138-434cde858faa%22.toByteArray(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Charset.forName(%22US-ASCII%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%20ByteArray(0)%2C%20ByteArray(0)%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20ntag424DNA.writeNDEF(msg)%3B%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22URI%20NDEF%20message%20written%20successful%20%3CLI-EMOJI%20id%3D%22lia_white-heavy-check-mark%22%20title%3D%22%3Awhite_heavy_check_mark%3A%22%3E%3C%2FLI-EMOJI%3E%22)%0A%0A%20%20%20%20val%20ndefRead%20%3D%20ntag424DNA.readNDEF()%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22Read%20URI%20NDEF%20message%20%24%7BCustomModules.getUtility().dumpBytes(ndefRead.toByteArray())%7D%22)%0A%0A%7D%0A%0Aprivate%20fun%20changeFileSettings(ntag424DNA%3A%20INTAG424DNA%2C%20fileNumber%3A%20Int)%20%7B%0A%20%20%20%20%2F%2F%203.%20Create%20NTAG%20424%20DNA%20file%20settings%20for%20E104%0A%20%20%20%20val%20fileSettings%20%3D%20NTAG424DNAFileSettings(%0A%20%20%20%20%20%20%20%20MFPCard.CommunicationMode.Encrypted%2C%20%20%20%20%2F%2F%20%3D%200x03%20%3D%20Full%20ENC%20%2B%20CMAC%20(SUN)%0A%20%20%20%20%20%20%20%200x0E.toByte()%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Read%20access%20%3D%20key%20slot%200x00%20maybe%200x01%0A%20%20%20%20%20%20%20%200x0E.toByte()%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Write%20access%20%3D%20always%0A%20%20%20%20%20%20%20%200x0E.toByte()%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20RW%20access%20%3D%20always%0A%20%20%20%20%20%20%20%200x0E.toByte()%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Change%20access%20%3D%20always%0A%20%20%20%20)%0A%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22Prepare%20for%20saving%20changes%20in%20file%20%24fileNumber%22)%0A%20%20%20%20ntag424DNA.changeFileSettings(fileNumber%2C%20fileSettings)%0A%20%20%20%20Log.i(%22NFC%22%2C%20%22%3CLI-EMOJI%20id%3D%22lia_locked-with-key%22%20title%3D%22%3Alocked_with_key%3A%22%3E%3C%2FLI-EMOJI%3E%20File%20settings%20updated%20%24fileNumber%22)%0A%7D%0A%0A%0Aprivate%20fun%20changeSDMFileSettings(ntag424DNA%3A%20INTAG424DNA%2C%20fileNumber%3A%20Int)%20%7B%0A%20%20%20%20val%20fileSettings%20%3D%20ntag424DNA.getFileSettings(fileNumber)%3B%0A%0A%20%20%20%20fileSettings.isSDMEnabled%20%3D%20true%3B%0A%20%20%20%20fileSettings.isUIDMirroringEnabled%20%3D%20true%3B%0A%0A%20%20%20%20fileSettings.piccDataOffset%20%3D%20intTo2ByteArray(51)%0A%20%20%20%20fileSettings.sdmMacOffset%20%3D%20intTo2ByteArray(51)%0A%20%20%20%20fileSettings.sdmMacInputOffset%20%3D%20intTo2ByteArray(51)%0A%20%20%20%20fileSettings.sdmReadCounterOffset%20%3D%20intTo2ByteArray(51)%0A%20%20%20%20fileSettings.uidOffset%20%3D%20intTo2ByteArray(51)%0A%20%20%20%20fileSettings.sdmAccessRights%20%3D%20byteArrayOf(0x00%2C%200x00)%0A%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22Prepare%20for%20saving%20SDM%20changes%20in%20file%20%24fileNumber%22)%0A%20%20%20%20ntag424DNA.changeFileSettings(fileNumber%2C%20fileSettings)%0A%20%20%20%20Log.i(%22NFC%22%2C%20%22%3CLI-EMOJI%20id%3D%22lia_locked-with-key%22%20title%3D%22%3Alocked_with_key%3A%22%3E%3C%2FLI-EMOJI%3E%20File%20settings%20updated%3A%20SUN%20CMAC%20enabled%20on%20%24fileNumber%22)%0A%7D%0A%0Aprivate%20fun%20intTo2ByteArray(value%3A%20Int)%3A%20ByteArray%20%7B%0A%20%20%20%20return%20byteArrayOf(%0A%20%20%20%20%20%20%20%20((value%20shr%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20and%200xFF).toByte()%2C%0A%20%20%20%20%20%20%20%20(value%20and%200xFF).toByte()%0A%20%20%20%20)%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E3%82%AA%E3%83%95%E3%82%BB%E3%83%83%E3%83%88%E7%95%AA%E5%8F%B7%E3%81%8C%20URL%20%E5%86%85%E3%81%AE%E3%83%9D%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%A8%E4%B8%80%E8%87%B4%E3%81%97%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF%E3%82%8F%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E4%BD%95%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E3%82%82%E3%81%93%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E4%BD%95%E3%82%89%E3%81%8B%E3%81%AE%E7%90%86%E7%94%B1%E3%81%A7%E3%80%81%E3%81%93%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A7%E3%81%AF%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Entag424DNA.changeFileSettings(fileNumber%2C%20fileSettings)%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AF%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%A7%E3%81%99%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Ecom.nxp.nfclib.exceptions.UsageException%3A%20Invalid%20Parameters!%20%7BInvalid%20Value%20for%20PICC%20Offset%7D%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2082672%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%20%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2172171%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20can%20i%20enable%20CMAC%2C%20UID%2C%20COUNTER%20and%20RAND%20in%20NTAG424%20DNA%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2172171%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%81%AE%E5%95%8F%E9%A1%8C%E3%81%AF%E3%82%AA%E3%83%95%E3%82%BB%E3%83%83%E3%83%88%E5%80%A4%E3%81%8C%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E7%99%BA%E7%94%9F%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82ntag%20%E3%81%AF%2021%20%E3%81%AE%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%20%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E4%BA%88%E7%B4%84%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E4%BB%8A%E3%80%81%E3%83%95%E3%82%A1%E3%82%AF%E3%83%88%E3%83%AA%E3%83%BC128%20AES%E3%82%AD%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81changekey()%E9%96%A2%E6%95%B0%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F169705%22%20target%3D%22_blank%22%3E%40ukcas%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2171596%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20can%20i%20enable%20CMAC%2C%20UID%2C%20COUNTER%20and%20RAND%20in%20NTAG424%20DNA%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2171596%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%80%81%E3%81%9D%E3%81%93%E3%80%81%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%81%93%E3%81%AEThread%E3%81%AB%E5%BE%93%E3%81%A3%E3%81%A6%20JSON%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%92%E6%89%B1%E3%81%86%E3%81%AE%E3%81%AF%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%9B%B0%E9%9B%A3%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E7%A7%81%E3%81%AF%E3%80%81NXP%20Android%20%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A8%E3%80%81%E3%81%93%E3%81%93%E3%81%8B%E3%82%89%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%20Android%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3A%20%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fdesign%2Fdesign-center%2Fsoftware%2Frfid-developer-resources%2Ftaplinx-software-development-kit-sdk%3ATAPLINX%22%20target%3D%22_new%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ehttps%3A%2F%2Fwww.nxp.com%2Fdesign%2Fdesign-center%2Fsoftware%2Frfid-developer-resources%2Ftaplinx-software-development-kit-sdk%3ATAPLINX%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AFSample_Application_Android%2Fsrc%2Fmain%2Fjava%2Fcom%2Fnxp%2Fsampletaplinx%2FWriteActivity.java%E5%86%85%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20translate%3D%22no%22%3E%3CSPAN%20class%3D%22%22%3Epublic%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Estatic%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20intTo2ByteArray(%3CSPAN%20class%3D%22%22%3Eint%3C%2FSPAN%3E%20value)%20%7B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Ereturn%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20(value%20%26amp%3B%20%3CSPAN%20class%3D%22%22%3E0xFF%3C%2FSPAN%3E)%2C%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20LSB%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20((value%20%26gt%3B%26gt%3B%20%3CSPAN%20class%3D%22%22%3E8%3C%2FSPAN%3E)%20%26amp%3B%20%3CSPAN%20class%3D%22%22%3E0xFF%3C%2FSPAN%3E)%2C%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20middle%20byte%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20((value%20%26gt%3B%26gt%3B%20%3CSPAN%20class%3D%22%22%3E16%3C%2FSPAN%3E)%20%26amp%3B%20%3CSPAN%20class%3D%22%22%3E0xFF%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20MSB%3C%2FSPAN%3E%0A%20%20%20%20%7D%3B%0A%7D%0A%0A%3CSPAN%20class%3D%22%22%3Eprivate%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Evoid%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Etag424DNACardLogic%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(INTAG424DNA%20ntag424DNA)%3C%2FSPAN%3E%20%7B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20KEY_AES128_DEFAULT%20%3D%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%0A%20%20%20%20%7D%3B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20NTAG424DNA_APP_NAME%20%3D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0xD2%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0x76%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0x85%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x01%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x01%3C%2FSPAN%3E%7D%3B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20data%20%3D%7B%20%3CSPAN%20class%3D%22%22%3E0x73%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x75%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x73%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x68%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x69%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E0x6C%3C%2FSPAN%3E%20%7D%3B%0A%0A%20%20%20%20mStringBuilder.append(%3CSPAN%20class%3D%22%22%3E%22%5Cn%5Cn%22%3C%2FSPAN%3E)%3B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Eint%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3EtimeOut%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E2000%3C%2FSPAN%3E%3B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Etry%3C%2FSPAN%3E%20%7B%0A%20%20%20%20%20%20%20%20ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME)%3B%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3EKeyData%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3EaesKeyData%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3EKeyData%3C%2FSPAN%3E()%3B%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3EKey%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3EkeyDefault%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3ESecretKeySpec%3C%2FSPAN%3E(KEY_AES128_DEFAULT%2C%20%3CSPAN%20class%3D%22%22%3E%22AES%22%3C%2FSPAN%3E)%3B%0A%20%20%20%20%20%20%20%20aesKeyData.setKey(keyDefault)%3B%0A%20%20%20%20%20%20%20ntag424DNA.authenticateEV2First(%3CSPAN%20class%3D%22%22%3E0%3C%2FSPAN%3E%2C%20aesKeyData%2C%20%3CSPAN%20class%3D%22%22%3Enull%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20mStringBuilder.append(getString(R.string.Authentication_status_true))%3B%0A%20%20%20%20%20%20%20%20mStringBuilder.append(%3CSPAN%20class%3D%22%22%3E%22%5Cn%5Cn%22%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20ntag424DNA.setPICCConfiguration(%3CSPAN%20class%3D%22%22%3Etrue%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3EString%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3EjsonTemplate%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%22%7B%5C%22uuid%5C%22%3A%5C%2200000000000000%5C%22%2C%5C%22counter%5C%22%3A%5C%22000000%5C%22%2C%5C%22cmac%5C%22%3A%5C%220000000000000000%5C%22%2C%5C%22domain1%5C%22%3A%22%3C%2FSPAN%3E%20%2B%20%3CSPAN%20class%3D%22%22%3E1%3C%2FSPAN%3E%20%2B%20%3CSPAN%20class%3D%22%22%3E%22%2C%5C%22domain2%5C%22%3A%22%3C%2FSPAN%3E%20%2B%20%3CSPAN%20class%3D%22%22%3E1%3C%2FSPAN%3E%20%2B%20%3CSPAN%20class%3D%22%22%3E%22%7D%22%3C%2FSPAN%3E%3B%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20jsonBytes%20%3D%20jsonTemplate.getBytes(%3CSPAN%20class%3D%22%22%3E%22UTF-8%22%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENTAG424DNAFileSettings%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Efs%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3ENTAG424DNAFileSettings%3C%2FSPAN%3E(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CommunicationMode.Plain%2C%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20or%20MAC%2FENC%20depending%20on%20your%20security%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0x0E%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20Read%20access%3A%20Key%200%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0x0E%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20Write%20access%3A%20Key%200%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0x0E%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20Read%2FWrite%3A%20Key%200%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%20%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20Change%20access%3A%20Free%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20type%20%3D%20%3CSPAN%20class%3D%22%22%3E%22U%22%3C%2FSPAN%3E.getBytes(%3CSPAN%20class%3D%22%22%3E%22US-ASCII%22%3C%2FSPAN%3E)%3B%0A%20%20%20%20%20%20%20%20fs.setSDMEnabled(%3CSPAN%20class%3D%22%22%3Etrue%3C%2FSPAN%3E)%3B%0A%20%20%20%20%20%20%20%20fs.setUIDMirroringEnabled(%3CSPAN%20class%3D%22%22%3Etrue%3C%2FSPAN%3E)%3B%0A%20%20%20%20%20%20%20%20fs.setSDMReadCounterEnabled(%3CSPAN%20class%3D%22%22%3Etrue%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20bytes%20%3D%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20%7B%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0xE0%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%2C%20(%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E)%3CSPAN%20class%3D%22%22%3E0x00%3C%2FSPAN%3E%20%7D%3B%0A%20%20%20%20%20%20%20%20fs.setSdmAccessRights(bytes)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20uuidOffset%20%3D%20intTo2ByteArray(%3CSPAN%20class%3D%22%22%3E8%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20fs.setUidOffset(uuidOffset)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20readCounterOffset%20%3D%20intTo2ByteArray(%3CSPAN%20class%3D%22%22%3E35%3C%2FSPAN%3E)%3B%0A%20%20%20%20%20%20%20%20fs.setSdmReadCounterOffset(readCounterOffset)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%5D%20macOffset%20%3D%20intTo2ByteArray(%3CSPAN%20class%3D%22%22%3E51%3C%2FSPAN%3E)%3B%0A%0A%20%20%20%20%20%20%20%20fs.setSdmMacInputOffset(uuidOffset)%3B%0A%20%20%20%20%20%20%20%20fs.setSdmMacOffset(macOffset)%3B%0A%0A%20%20%20%20%20%20%20%20ntag424DNA.changeFileSettings(FILE_NUMBER%2C%20fs)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20Create%20NDEF%20record%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENdefRecordWrapper%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Erecord%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3ENdefRecordWrapper%3C%2FSPAN%3E(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20NdefRecordWrapper.TNF_WELL_KNOWN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Ebyte%3C%2FSPAN%3E%5B%3CSPAN%20class%3D%22%22%3E0%3C%2FSPAN%3E%5D%2C%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20empty%20ID%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jsonBytes%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20payload%20(your%20JSON)%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F%2F%20Wrap%20record%20into%20NDEF%20message%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENdefMessageWrapper%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Emsg%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Enew%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3ENdefMessageWrapper%3C%2FSPAN%3E(record)%3B%0A%0A%20%20%20%20%20%20%20%20ntag424DNA.writeNDEF(msg)%3B%0A%0A%20%20%20%20%20%20%20%20NxpLogUtils.save()%3B%0A%20%20%20%20%7D%20%3CSPAN%20class%3D%22%22%3Ecatch%3C%2FSPAN%3E%20(Exception%20e)%20%7B%0A%20%20%20%20%20%20%20%20writeFailedMessage()%3B%0A%20%20%20%20%20%20%20%20mStringBuilder.append(e.getMessage())%3B%0A%0A%20%20%20%20%20%20%20%20Log.i(%3CSPAN%20class%3D%22%22%3E%22MainActivity%22%3C%2FSPAN%3E%2C%20%3CSPAN%20class%3D%22%22%3E%22URI%20NDEF%20message%20written%20successful%20%24msg%20%22%3C%2FSPAN%3E%20%2B%20e.getMessage()%20%20)%3B%0A%20%20%20%20%20%20%20%20showMessage(mStringBuilder.toString()%2C%20PRINT)%3B%0A%20%20%20%20%20%20%20%20NxpLogUtils.save()%3B%0A%20%20%20%20%7D%0A%0A%7D%3C%2FPRE%3E%3CP%3E%E8%AA%B0%E3%81%8B%E3%81%8C%E3%81%93%E3%82%8C%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%A3%E3%81%A6CAN%E3%81%A8%E3%81%A8%E3%81%A6%E3%82%82%E5%8A%A9%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2087596%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20can%20i%20enable%20CMAC%2C%20UID%2C%20COUNTER%20and%20RAND%20in%20NTAG424%20DNA%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2087596%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%8A%A9%E3%81%91%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A6%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%EF%BC%81%E7%A7%81%E3%81%AE%E3%82%AA%E3%83%95%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E5%80%A4%E3%81%8C%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E3%81%AE%E3%81%AF%E3%81%9D%E3%81%AE%E9%80%9A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E5%86%85%E5%AE%B9%E3%81%AF%E3%81%93%E3%82%8C%E3%81%A7%E3%80%81%E8%A8%AD%E5%AE%9A%E3%82%92%E4%BF%9D%E5%AD%98CAN%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-java%22%3E%3CCODE%20translate%3D%22no%22%3Eoverride%20fun%20onNewIntent(intent%3A%20Intent)%20%7B%0A%20%20%20%20Log.i(%22NFC%22%2C%20%22Intent%20action%3A%20%24%7Bintent.action%7D%22)%0A%20%20%20%20super.onNewIntent(intent)%0A%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22NFC%20tag%20discovered%22)%0A%0A%20%20%20%20val%20cardType%20%3D%20libInstance.getCardType(intent)%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22Detected%20card%20type%3A%20%24cardType%22)%0A%20%20%20%20if%20(cardType%20%3D%3D%20CardType.NTAG424DNA)%20%7B%0A%20%20%20%20%20%20%20%20val%20ntag424DNA%3A%20INTAG424DNA%20%3D%20DESFireFactory.getInstance().getNTAG424DNA(libInstance.customModules)%0A%20%20%20%20%20%20%20%20val%20reader%3A%20IReader%20%3D%20ntag424DNA.reader%0A%0A%20%20%20%20%20%20%20%20try%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!reader.isConnected)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reader.connect()%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ntag424DNA.isoSelectApplicationByDFName(NTAG424DNA_APP_NAME)%0A%20%20%20%20%20%20%20%20%20%20%20%20Log.i(%22NFC%22%2C%20%22ISO%20selected%20app%20by%20DF%20Name%20%3CLI-EMOJI%20id%3D%22lia_white-heavy-check-mark%22%20title%3D%22%3Awhite_heavy_check_mark%3A%22%3E%3C%2FLI-EMOJI%3E%22)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20authenticateTag(0x00%2C%20ntag424DNA%2C%20KEY_AES128_DEFAULT)%0A%20%20%20%20%20%20%20%20%20%20%20%20creatingNDEFmessage(ntag424DNA)%0A%20%20%20%20%20%20%20%20%20%20%20%20authenticateTag(0x00%2C%20ntag424DNA%2C%20KEY_AES128_DEFAULT)%0A%20%20%20%20%20%20%20%20%20%20%20%20changeFileSettings(ntag424DNA%2C%200x02)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(reader.isConnected)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reader.close()%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20catch%20(e%3A%20Exception)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Log.e(%22MainActivity%22%2C%20e.localizedMessage%20%3F%3A%20%22No%20Error%20Message%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.printStackTrace()%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D%0A%7D%0A%0Aprivate%20fun%20changeFileSettings(ntag424DNA%3A%20INTAG424DNA%2C%20fileNumber%3A%20Int)%20%7B%0A%20%20%20%20%2F%2F%203.%20Create%20NTAG%20424%20DNA%20file%20settings%20for%20E104%0A%20%20%20%20val%20fileSettings%20%3D%20NTAG424DNAFileSettings(%0A%20%20%20%20%20%20%20%20MFPCard.CommunicationMode.Plain%2C%20%20%20%20%2F%2F%20%3D%200x03%20%3D%20Full%20ENC%20%2B%20CMAC%20(SUN)%0A%20%20%20%20%20%20%20%200x0E.toByte()%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Read%20access%20%3D%20key%20slot%200x00%20maybe%200x01%0A%20%20%20%20%20%20%20%200x0E.toByte()%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Write%20access%20%3D%20always%0A%20%20%20%20%20%20%20%200x0E.toByte()%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20RW%20access%20%3D%20always%0A%20%20%20%20%20%20%20%200x00.toByte()%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Change%20access%20%3D%20always%0A%20%20%20%20)%0A%0A%20%20%20%20fileSettings.isSDMEnabled%20%3D%20true%0A%20%20%20%20fileSettings.isUIDMirroringEnabled%20%3D%20true%0A%20%20%20%20fileSettings.isSDMReadCounterEnabled%20%3D%20true%0A%20%20%20%20fileSettings.sdmAccessRights%20%3D%20byteArrayOf(0xfe.toByte()%2C%200xe1.toByte())%0A%0A%20%20%20%20fileSettings.uidOffset%20%3D%20byteArrayOf(0x1A%2C%200x00%2C%200x00)%20%20%20%0A%20%20%20%20fileSettings.sdmReadCounterOffset%20%3D%20byteArrayOf(0x2d%2C%200x00%2C%200x00)%20%0A%20%20%20%20fileSettings.sdmMacOffset%20%3D%20byteArrayOf(0x39%2C%200x00%2C%200x00)%20%0A%20%20%20%20fileSettings.sdmMacInputOffset%20%3D%20byteArrayOf(0x39%2C%200x00%2C%200x00)%0A%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22Prepare%20for%20saving%20changes%20in%20file%20%24fileNumber%22)%0A%0A%20%20%20%20ntag424DNA.changeFileSettings(fileNumber%2C%20fileSettings)%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22%3CLI-EMOJI%20id%3D%22lia_locked-with-key%22%20title%3D%22%3Alocked_with_key%3A%22%3E%3C%2FLI-EMOJI%3E%20File%20settings%20updated%20%24fileNumber%22)%0A%7D%0A%0Aprivate%20fun%20creatingNDEFmessage(ntag424DNA%3A%20INTAG424DNA)%20%7B%0A%20%20%20%20%2F%2F%201.%20Creating%20URI%20NDEF%20message%0A%20%20%20%20val%20payload%20%3D%20byteArrayOf(0x04)%20%2B%20%22noexample.xxxx%3Fuid%3D00000000000000%26amp%3Bctr%3D000000%26amp%3Bcmac%3D0000000000000000%22.toByteArray()%0A%0A%20%20%20%20val%20msg%20%3D%20NdefMessageWrapper(%0A%20%20%20%20%20%20%20%20NdefRecordWrapper(%0A%20%20%20%20%20%20%20%20%20%20%20%20NdefRecordWrapper.TNF_WELL_KNOWN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22U%22.toByteArray(StandardCharsets.US_ASCII)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20ByteArray(0)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20payload%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20ntag424DNA.writeNDEF(msg)%3B%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22URI%20NDEF%20message%20written%20successful%20%3CLI-EMOJI%20id%3D%22lia_white-heavy-check-mark%22%20title%3D%22%3Awhite_heavy_check_mark%3A%22%3E%3C%2FLI-EMOJI%3E%22)%0A%0A%20%20%20%20val%20ndefRead%20%3D%20ntag424DNA.readNDEF()%0A%20%20%20%20Log.i(%22MainActivity%22%2C%20%22Read%20URI%20NDEF%20message%20%24%7BCustomModules.getUtility().dumpBytes(ndefRead.toByteArray())%7D%22)%0A%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2085290%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20can%20i%20enable%20CMAC%2C%20UID%2C%20COUNTER%20and%20RAND%20in%20NTAG424%20DNA%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2085290%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E8%A6%AA%E6%84%9B%E3%81%AA%E3%82%8B%E3%83%AD%E3%83%83%E3%82%AD%E3%83%BC2%E6%A7%98%3C%2FP%3E%0A%3CP%3Ejimmyvhan%20%E3%81%8C%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%AA%E3%83%95%E3%82%BB%E3%83%83%E3%83%88%E3%81%8C%E9%87%8D%E8%A4%87%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AF%E8%A8%B1%E5%8F%AF%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%20%3C%2FP%3E%0A%3CP%3E%E3%81%94%E5%B8%8C%E6%9C%9B%E3%81%AEURL%E3%82%92%E6%A4%9C%E8%A8%8E%E4%B8%AD%E3%81%A7%E3%81%99%E3%80%82NFCCounter%20%E3%81%AE%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%8C%203%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%A8%E5%B0%91%E3%81%AA%E3%81%99%E3%81%8E%E3%81%BE%E3%81%99%E3%80%82SO%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AF%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%20URL%20%E3%81%AB%E9%81%A9%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdomain.com%3Fuid%3D04BB38D2AA1191%26amp%3Bctr%3D000001%26amp%3Bcmac%3D3ab665b76b795cb9bf76a17956cc9fb3%26amp%3Brand%3D422def08-8a1c-49c9-9138-434cde858faa%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdomain.com%3Fuid%3D04BB38D2AA1191%26amp%3Bctr%3D000001%26amp%3Bcmac%3D3ab665b76b795cb9bf76a17956cc9fb3%26amp%3Brand%3D422def08-8a1c-49c9-9138-434cde858faa%3C%2FA%3E%3C%2FP%3E%0A%3CP%3ESDM%20%E6%A7%8B%E6%88%90%E3%81%AB%E3%81%AF%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82CMAC%20%E8%A8%88%E7%AE%97%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%85%A5%E5%8A%9B%E3%83%87%E3%83%BC%E3%82%BF%E3%82%82%E6%B1%BA%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%E3%80%81UIDOffset%20%E3%82%92%E5%87%BA%E7%99%BA%E7%82%B9%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-java%22%3E%3CCODE%20translate%3D%22no%22%3EfileSettings.sdmMacOffset%20%3D%20intTo2ByteArray(53)%0AfileSettings.sdmMacInputOffset%20%3D%20intTo2ByteArray(22)%0AfileSettings.sdmReadCounterOffset%20%3D%20intTo2ByteArray(41)%0AfileSettings.uidOffset%20%3D%20intTo2ByteArray(22)%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%81%3C%2FP%3E%0A%3CP%3ETapLinx%E3%83%81%E3%83%BC%E3%83%A0%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2085141%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20can%20i%20enable%20CMAC%2C%20UID%2C%20COUNTER%20and%20RAND%20in%20NTAG424%20DNA%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2085141%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%81%AE%E6%96%87%E6%9B%B8%E3%81%AF%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AB%E3%81%A8%E3%81%A3%E3%81%A6%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A4%E3%81%8B%E3%82%82%E3%81%97%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Fapplication-note%2FAN12196.pdf%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3ENTAG%20424%20DNA%E3%81%A8NTAG%20424%20DNA%20TagTamper%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%A8%E3%83%92%E3%83%B3%E3%83%88%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E