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标签,即恩智浦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的 恩智浦原创性签名
  • 具有灵活 ASCII 镜像的项目 URL 的片上组装。

因此,我们的软件示例包括所有NTAG® 424 DNA安全协议和选项实现的功能。

Docs & Software Download

软件概述

软件功能:

  • 获取和编辑文件设置
  • 获取 UID
  • 设置随机 ID
  • 更改 AES 密钥
  • 线性读/写(ASCII和HEX)
  • 三级认证模式
  • SDM(安全动态消息)读/写
  • 获取 SDM 读数计数器
  • 将 AES 密钥存储到读取器中
  • 锁定/解锁读卡器
  • 高级读取器选项(指定读取器 COM 端口、IP 地址、SN 等)

可用的编程语言:

  • C(控制台)
  • C# (图形用户界面)

支持的操作系统、平台和环境:

  • 跨平台

支持的标签、标签、卡片:

  • 恩智浦NTAG® 21x (210, 213, 215, 216, 标签篡改)
  • 恩智浦NTAG® 4xx DNA (413, 424)

推荐硬件:

  • 微FR 纳米
  • μFR 纳米在线
  • 微阻燃经典
  • μFR 经典 CS
  • 微FR预付款
  • 微FR XL

nt4h source coe software

 

软件呼吸D标注
UFR-examples-c-nt4h

使用 μFR 系列 NFC RFID 读取器实现 nt4h 标签的控制台 C 源代码示例。  

UFR-examples-c_sharp-nt4h

GUI C# 源代码示例 f nt4h 标签实现与 μFR 系列 NFC RFID 阅读器。

Software manual

1. NT4H 软件 – C 控制台 – 读卡器打开

下载: ufr-examples-c-nt4h

NT4H用于恩智浦NTAG®新标签系列操作。 该系列包括NTAG 413 DNA和NTAG® ®424 DNA。 NTAG® 424 DNA完全符合NFC论坛Type 4标签IC。 它支持 AES-128 加密操作和新的安全唯一 NFC (SUN) 消息。 恩智浦不建议在新项目中使用NTAG 413 DNA标签,因为现有的NTAG®® 424 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有两个标准数据文件:

  • 文件编号 1 是指功能容器文件(32 字节),
  • 文件编号 2 是指 NDEF 文件(128 字节)。

NTAG424有三个标准数据文件:

  • 文件编号 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 控制台 – 设置文件设置

要添加文件设置,请选择第二个菜单选项。 由于参数数量众多,文件参数设置有两个功能。

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。 该标记现在返回 4 字节随机 ID,而不是 7 字节唯一 ID。
此函数需要主密钥身份验证(数字 0)。

警告:此操作是不可逆的!

nt4h c get uid example1 1

2.5 NT4H 软件 – C 控制台 – 更改 AES 密钥

 

nt4h c change aes key菜单选项 5 允许更改 AES 密钥。
此函数需要主密钥身份验证(数字 0)。
通过键入 16 个十六进制字节输入新的 AES 密钥。
如果要更改的密钥不是主密钥,则以前的密钥值是必需的。
 
 
 
 

EXAMPLE 1

AES 密钥更改示例:

  • 关键4。
  • 应用程序主密钥值0x00000000000000000000000000000000
  • 旧键 4 值0x00000000000000000000000000000000
  • 新的键 4 值0x11111111111111111111111111111111。

nt4h c change aes key

2.6 NT4H 软件 – C 控制台 – 线性读取

线性读取功能包括普通、粉碎和加密读取模式。 此外,如果标记受到保护,则提供密钥模式和内部密钥模式下的内容读取身份验证允许内容访问。 否则,无需输入密钥即可读取解锁的标记内容(选项:无身份验证)。 控制台将以十六进制和 ASCI 表示法显示所选身份验证模式下可读的内容。

2.6.1 NT4H软件 – C 控制台 – 线性读取

线性读取功能包括普通、mac(消息认证码)和加密读取模式。 此外,如果标记受到保护,则“提供的密钥”模式和“内部密钥”模式下的内容读取身份验证允许内容访问。 否则,无需输入密钥即可访问解锁的标记内容(选项:无身份验证)。 控制台将以十六进制和 ASCI 表示法显示所选身份验证模式下可读的内容。

该函数读取文件记录的数据。 必需的参数包括:

  • 文件编号,
  • 读取或读/写访问密钥,
  • 通信模式,
  • 身份验证模式(如果读取密钥为 14,请选择“无身份验证”选项),
  • 起始地址(0 – 最大地址),
  • 数据长度。

nt4h c linear read function

2.7 NT4H 软件 – C 控制台 – 线性写入

与线性读取功能一样,线性写入功能也允许三种通信模式和十六进制或ASCII格式的内容写入。 此外,所选的身份验证模式适用于录制的内容。 

该函数将数据写入文件。 必需的参数包括:

  • 文件编号,
  • 读取或读/写访问密钥,
  • 通信模式,
  • 身份验证模式(如果读取密钥为 14,则选择无身份验证选项),
  • 起始地址(0 – 最大地址),
  • 以 ASCII 或十六进制格式输入数据。

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 密钥存储到读卡器

读取器设备可以存储 16 个索引值为 0-15 的 AES 密钥。 这意味着键索引可以是 0 到 15 之间的任何值。

EXAMPLE 1

该示例演示如何将值为 0 x 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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。
请查看我们的 GitLab 存储库 ,了解其他编程语言的可用源代码示例。