Online Store

NT4H NTAG® 424 DNA Tag Read/Write Software

Source code examples in C programming language

このページで説明されているソフトウェアのソースコード例は、NFC NTAG® DNAテクノロジーソリューションを参照しています。 その主な目的は、NTAG 413 DNAおよびNTAG 424 DNAタグ、つまりNXP NTAG®®® Type 4タグの書き込みと読み取りです。

これらのタグは、以下に対して完全に準拠しています。

  • ISO/IEC 14443、第1部から第4部まで、ISO/IEC 7816-4のファイル選択とAPDU処理、ISO/IEC18092に準拠したパッシブターゲット
  • 7 バイト の UID (ISO/IEC 14443 – 3 に準拠)
  • NFCフォーラムタグ4タイプの技術およびNDEFデータ構造構成

ただし、すべてのNTAGファミリータイプの中でNTAG® 424 DNAタグを選択する主な理由は、その高度なセキュリティサポートです。 NTAG® 424 DNAタグは、次のような高度なセキュリティ方法を提供します。

  • 認証/セキュアメッセージング用の標準AES-128暗号化、または さらに強力な攻撃耐性のためのLRPラップAES操作
  • 保護されたデータ ファイルにアクセスするための 3 パス相互認証
  • セキュア固有NFCメッセージ(SUN)
  • インクリメンタルNFCタップカウンター
  • プレーン、CMAC、および暗号化通信(設定可能)
  • ECCベースの NXPオリジナリティシグネチャー
  • 柔軟なASCIIミラーを使用したアイテムURLのオンチップアセンブリ。

したがって、当社のソフトウェアサンプルには、すべてのNTAG® 424 DNAセキュリティプロトコルとオプション実装の機能が含まれています。

Docs & Software Download

ソフトウェアの概要

ソフトウェア機能:

  • ファイル設定の取得と編集
  • UID を取得する
  • ランダムIDを設定する
  • AES キーを変更する
  • Linear read/write (ASCII & HEX)
  • 3レベル認証モード
  • SDM (セキュア動的メッセージ) 読み取り/書き込み
  • SDM 読み取りカウンターを取得する
  • AESキーをリーダーに保存する
  • リーダーのロック/ロック解除
  • 高度なリーダーオプション(リーダーCOMポート、IPアドレス、SNなどを指定します)

利用可能なプログラミング言語:

  • C (コンソール)
  • C# (GUI)

サポートされているオペレーティング システム、プラットフォーム、および環境:

  • クロスプラットフォーム

サポートされているタグ、ラベル、カード:

  • NXP NTAG® 21x (210、213、215、216、タグタンパー)
  • NXP NTAG® 4xx DNA (413, 424)

推奨ハードウェア:

  • μFRナノ
  • μFRナノオンライン
  • μFR クラシック
  • μFR クラシック CS
  • μFRアドバンス
  • μFR XL

nt4h source coe software

 

ソフトウェア呼吸器 D碑文
UFR-例-C-NT4H

μFRシリーズNFC RFIDリーダを使用したnt4hタグ実装のコンソールCソースコードサンプル。  

UFR例-c_sharp-NT4H

μFRシリーズNFC RFIDリーダを使用したNT4hタグの実装に関するGUI C#ソースコードの例。

Software manual

1. NT4Hソフトウェア – Cコンソール – リーダーオープン

ダウンロード: ufr-examples-c-nt4h

NT4Hは、NXP NTAG®の新しいタグシリーズの操作を目的としています。 このシリーズには、NTAG 413 DNAとNTAG® ®424 DNAが含まれています。 NTAG® 424 DNAは、NFCフォーラムタイプ4タグICに完全に準拠しています。 AES-128暗号化操作と新しいセキュアユニークNFC(SUN)メッセージをサポートしています。 NXPは、利用可能なNTAG® 424 DNAがより優れたセキュリティ機能を提供するため、新しいプロジェクトにNTAG® 413 DNAタグを使用することを推奨していません。

アプリケーションを起動すると、コンソールが開き、ホームメニューが印刷されます。
ハードウェアドライバを正しくインストールしている場合は、使用可能なオプションのいずれかを選択してリーダーポートを開くことができます。

  • オプション 1 –リーダーポートは、デフォルト(自動検出)オプションを使用して開きます(通常、ホストに接続された単一のUSBリーダーに使用されます)
  • オプション 2 – リーダー ポートは、手動で設定可能なパラメーター (reader_type、port_name、port_interface、引数) を使用して開きます。

D NFC SDK ufr examples c nt4h master win64 release nt4h c example.exe 27 08 2020 13 36 18

2. NT4Hソフトウェア – Cコンソール – メインメニュー

これがシンプルリーダーオープンモードのショーケースです。 
メニューオプション1を選択します。リーダーポートを開き、デバイスとの通信を確立します。 通信が確立されると、コンソールにメインメニューが表示され、すべてのソフトウェア機能が一覧表示されます。 

D NFC SDK ufr examples c nt4h master win64 release nt4h c example.exe 27 08 2020 13 37 35

2.1 NT4Hソフトウェア – C コンソール – ファイル設定の取得

最初の関数である [ファイル設定の取得] では、選択したファイル設定が表示されます。 使用するタグに応じて、NTAG413 の場合は 1 -2、NTAG 424 の場合は 1-3 と入力します。

NTAG413 には、次の 2 つの標準データ ファイルがあります。

  • ファイル番号 1 は、機能コンテナー ファイル (32 バイト) を参照します。
  • ファイル番号 2 は NDEF ファイル (128 バイト) を参照します。

NTAG424 には、次の 3 つの標準データ ファイルがあります。

  • ファイル番号 1 は、機能コンテナー ファイル (32 バイト) を参照します。
  • ファイル番号2はNDEFファイル(256バイト)を参照し、
  • ファイル番号3はプロプライエタリファイル(128バイト)を参照し、
  • 返されるパラメーターの数は可変です。

現在のファイルが AES セキュア・メッセージングの標準データ・ファイルである場合は、以下が適用されます。

  • ファイルの種類
  • 通信モード
  • ファイル アクセス権。

nt4h c set file settings1 1

EXAMPLE 1

ファイルサイズの例:

  • ファイル番号 = 3 (NTAG424 独自のファイル)
  • 通信モードの状態が暗号化されました (0x03)
  • セキュアダイナミックメッセージングが無効になっている
  • 読み取り用のキー番号は2、書き込み用のキー番号は3、
  • 読み取り/書き込み用のキー番号は 3 です。
  • ファイル変更設定のキー番号は 0 です。
  • ファイルサイズは128バイトです。

nt4h c get file settings

EXAMPLE 2

現行ファイルがセキュア動的メッセージングを使用する標準データ・ファイルである場合は、さらに多くのデータが含まれます。

例:

  • ファイル番号は2(NDEFファイル)です。
  • セキュアダイナミックメッセージングが有効になっている場合、
  • 読み取りおよび書き込みアクセスは無料です(キー 0x0E)、
  • ファイルサイズは256バイトです。
  • UIDミラーリングが有効になっている場合、
  • SDM 読み取りカウンタが有効になっている場合、
  • SDM 読み取りカウンタ制限が無効になっている場合、
  • ファイルの暗号化されたデータ部分がアクティブ化され、
  • SDM メタ読み取りのキー番号は 2 (UID、SDM 読み取りカウンタ、PICC データ、MAC) です。
  • ファイルキー番号の暗号化されたデータ部分は 2 です。
  • SDM読み取りカウンタは認証なしで読み取ることができます。
  • PICC データ オフセット(暗号化 UID および SDM 読み取りカウンタ)は 49 です。
  • MAC入力オフセットは86です。
  • ファイルオフセットの暗号化されたデータ部分は86です。
  • ファイル長の暗号化されたデータの部分は32です。
  • MAC オフセットは 124 です。

nt4h c set file settings

2.2 NT4Hソフトウェア– Cコンソール–ファイル設定を設定する

ファイル設定を追加するには、2番目のメニューオプションを選択します。 パラメータの数が多いため、ファイルパラメータ設定には2つの機能があります。

nt4h c set file settings1

EXAMPLE 1

nt4h c set file settings2

標準データファイル:

  • ファイル番号3(専有ファイル)、
  • 現在の通信モードが暗号化され、
  • [キー] の値が 0 です。

新しい設定は次のとおりです。

  • プレーンコミュニケーションモード、
  • キー2を読み、
  • キー3を書き、
  • 読み取り/書き込みキー3、
  • キー0の変更、
  • 提供されたキー認証モード。

 

 

 

 

 

 

EXAMPLE 2

nt4h c set file settings2

セキュアダイナミックメッセージングファイル:

  • ファイル番号は2です。
  • 通信モードプレーン、
  • 読み取りキーは 14 です。
  • 書き込みキーは14、
  • 読み取り/書き込みキーは14です。
  • キー値の変更が 0 の場合、
  • UIDミラーリングが有効になっている場合、
  • SDM 読み取りカウンタが有効になっている場合、
  • SDM 読み取りカウンタが無効になっている場合、
  • ファイルの暗号化されたデータ部分がアクティブ化され、
  • SDM メタ読み取りキーは 2 です。
  • SDM ファイルの読み取りは 2 です。
  • SDM 読み取りカウンタ キーは 2 です。
  • 暗号化されたPICCデータオフセット49、
  • MAC入力データオフセット86、
  • 暗号化されたデータ部分のオフセット86、
  • MAC オフセット 124。

2.3 NT4Hソフトウェア– Cコンソール– UIDを取得する(NTAG 424のみ)

認証セキュリティー・モードを有効にして NTAG® 424 タグを使用する場合は、メニュー・オプション 3.タグUIDが表示されます。

この関数は、カードの 7 バイトの UID を返します。 ランダム ID オプションが有効になっていると便利です。 任意のカードキーを使用した有効な認証が必要です。

nt4h c get uid

2.4 NT4Hソフトウェア– Cコンソール–ランダムUIDを設定します(NTAG® 424のみ)

NTAG® 424 DNAは、ランダムUID設定(メニューオプション4)によって追加のタグセキュリティを可能にします。
ランダム UID 設定機能は、7 バイトの固有 UID を 4 バイトのランダム UID に置き換えます。 その結果、タグは読み取りごとに4バイトのランダムUIDを返します。 タグは、7 バイトの一意の ID ではなく、4 バイトのランダム ID を返すようになりました。
この機能には、マスターキー認証(番号0)が必要です。

警告:この操作は元に戻せません!

nt4h c get uid example1 1

2.5 NT4Hソフトウェア– Cコンソール– AESキーを変更する

 

nt4h c change aes keyメニュー オプション 5 では、AES キーを変更できます。
この機能には、マスターキー認証(番号0)が必要です。
16 桁の 16 進数を入力して、新しい AES キーを入力します。
変更するキーがマスター キーでない場合、以前のキー値は必須です。
 
 
 
 

EXAMPLE 1

AES キー変更の例:

  • キー番号4。
  • アプリケーション マスター キーの値0x00000000000000000000000000000000
  • 旧キー 4 の値0x00000000000000000000000000000000
  • 新しいキー 4 の値0x11111111111111111111111111111111。

nt4h c change aes key

2.6 NT4Hソフトウェア – C コンソール – リニア読み取り

リニア読み取り機能には、プレーン、マック、および暗号化された読み取りモードがあります。 また、提供キーモードと内部キーモードでのコンテンツ読み取り認証では、タグが保護されている場合にコンテンツへのアクセスが許可されます。 それ以外の場合、ロック解除されたタグの内容は、キーを入力せずに読み取ることができます(オプション:認証なし)。 コンソールには、選択した認証モードで読み取り可能なコンテンツが16進数とASCI表記として表示されます。

2.6.1 NT4Hソフトウェア– Cコンソール–リニア読み取り

リニア読み取り機能には、プレーン、mac(メッセージ認証コード)、および暗号化読み取りモードが含まれます。 また、提供キー モードと内部キー モードでのコンテンツ読み取り認証では、タグが保護されている場合にコンテンツ アクセスが許可されます。 それ以外の場合、ロック解除されたタグコンテンツはキーを入力せずにアクセスできます(オプション:認証なし)。 コンソールには、選択した認証モードで読み取り可能なコンテンツが16進数とASCI表記として表示されます。

この関数は、ファイルの記録データを読み取ります。 必須パラメーターは次のとおりです。

  • ファイル番号、
  • 読み取りまたは読み取り/書き込みアクセスキー、
  • 通信モード、
  • 認証モード (キーの読み取りが 14 の場合は、[認証なし] オプションを選択します)。
  • 開始アドレス (0 – 最大アドレス)
  • データ長。

nt4h c linear read function

2.7 NT4Hソフトウェア– Cコンソール–リニア書き込み

リニア読み取り機能と同様に、リニア書き込み機能では、3つの通信モードと、コンテンツ書き込み用の16進数またはASCII形式も使用できます。 また、選択した認証モードは記録されたコンテンツに適用されます。 

この関数は、データをファイルに書き込みます。 必須パラメーターは次のとおりです。

  • ファイル番号、
  • 読み取りまたは読み取り/書き込みアクセスキー、
  • 通信モード、
  • 認証モード (キーが 14 の場合は、[認証なし] オプションを選択します)
  • 開始アドレス (0 – 最大アドレス)
  • ASCII 形式または 16 進形式でデータを入力します。

nt4h c linear write

2.8 NT4Hソフトウェア – Cコンソール – セキュアダイナミックメッセージ読み取り

NT4H DNA タグのセキュアダイナミックメッセージング(SDM)は、SUN 機能を有効にします。 これは、NDEF メッセージ内のテキスト (ASCII) を参照します。
セキュア動的メッセージ読み取り機能を適用するには、セキュア動的メッセージファイルを有効にします。 また、[読み取りアクセス] を [空き] に設定します (キー 14 – 認証なし オプション)。

nt4h c sdm read

2.9 NT4Hソフトウェア – C コンソール – セキュアダイナミックメッセージ書き込み

セキュア動的メッセージ読み取りと同様に、セキュア動的メッセージ書き込み機能では、セキュア動的メッセージファイルを有効にします。 また、[読み取りアクセス] を [空き] に設定します (キー 14 – 認証なし オプション)。

nt4h c sdm write

2.10 NT4Hソフトウェア– Cコンソール– SDM読み取りカウンターを取得する

セキュア動的メッセージ読み取りカウンタは、ファイル SDM が有効になっている場合にのみ存在します。 認証は、ファイルの SDM 読み取りカウンターのアクセス設定に応じて、必要かどうかによって異なります。

nt4h c get sdm reading counter

 

2.11 NT4Hソフトウェア– Cコンソール– AESキーをリーダーに保存します

リーダーデバイスは、インデックス値0〜15の16個のAESキーを保存できます。 つまり、キー インデックスは 0 から 15 までの任意の値にすることができます。

EXAMPLE 1

この例では、値 0 x 000000000000000000000000000000000000000 のキーをリーダーのアドレス 1 に格納する方法を示します。

nt4h c store aes key into the reader

EXAMPLE 2

リーダーに保存されているAESキーは、デフォルトでロック解除されています。 保存されているキーは、任意の 8 バイトのパスワードでロックできます。

例:
パスワードが12345678

nt4h c store aes key into the reader password

EXAMPLE 3

保存されているキーがパスワードで保護されている(ロックされている)場合は、8バイトのパスワードを入力してロックを解除する必要があります。

例:
パスワードが12345678

nt4h c store aes key into the reader password unlock

このマニュアルでは、Cプログラミング言語のソフトウェア例を紹介します。 それでも、他のプログラミング言語の関連するすべてのソースコードソフトウェアには、同じ機能が含まれています。 達成可能な場合は、GUIが開発されています。
他のプログラミング言語で利用可能なソースコードの例については