gpt4 book ai didi

c - 使用 C 中的 NXP Mifare Ultralight 从 NFC 腕带读取正确数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:29 24 4
gpt4 key购买 nike

我对 NFC 设备读取非常陌生,但我已经使用 nfc-mfultralight.c 中的代码在我自己的项目中实现了(libnfc)。

我不明白的是,当我从 MIFARE Ultralight 手环读取数据时,我得到了很多垃圾。

例如,我在标签中有数字 255555574558888(我使用 Android 设备将此数字写入标签)。

现在当我运行时:

nfc-mfultralight r /home/user/dump

我明白了

d▒r▒!▒ H▒▒U255555574558888▒-67644-67546-2346

这是来自libnfc的例子,所以这个程序不应该只是读取正确的数据吗?我正在使用的 Android 应用程序只看到值 255555574558888。值 -67644-67546-2346 是我之前编写的部分内容。

我如何知道我需要读取的正确数据?我应该更改示例代码中的哪些内容才能使其正常工作?

我正在使用 ACR122 从标签中读取数据。

PS:这是我第一个使用 NFC 设备、libnfc 和 MIFARE Ultralight 标签的项目,所以如果您认为我应该阅读任何内容,请告诉我。

编辑 1

所以我发现了这个问题:Reading a NFC Mifare card with NXP Reader Library

我认为这对我有所帮助。我打印出另一个测试字符串的十六进制值并得到了这个

04  64  13  fb
72 f7 21 84
20 48 00 00
e1 11 06 00
03 0a d1 01
06 54 02 65
6e 68 65 79
fe 00 00 79
35 35 38 38
38 38 fe 00
2d 36 37 36
34 34 2d 36
37 35 34 36
2d 32 33 34
36 fe 00 00
00 00 00 00
00

我看到 3d 后跟 0a,然后是 d1,但是 3d 之前的所有值是多少>?这是因为 libnfc 的原因吗?

最佳答案

您在第 0 页和第 1 页(字节 0 到 7)中看到的数据是卡的 UID。第 2 页包含卡特定数据(字节 8 和 9)和锁定字节(字节 10 和 11)。第 3 页包含 Capability Container (CC),表明该标签是根据 NFC Forum Type 2 标签操作规范版本 1.1 格式化的。标签的用户数据区从第 4 页开始。

由于该标签遵循NFC论坛的标签操作规范,其上的NDEF数据存储在一个NDEF-TLV对象中(标签0x03,长度0x0A)。 0xD1 表示一条 NDEF 消息,它由一个短格式的记录组成,具有 NFC 论坛记录类型。记录类型“T”(0x54) 表示它是文本记录。文本记录包含语言定义“en”(英语)和文本“hey”(0x68 0x65 0x79)。数据区由Terminator-TLV(标签0xFE,长度0x00)终止。

此外,以前的 NDEF 消息中的数据似乎比当前的大。由于数据是按页(4 字节)写入的,并且在写入新消息时标签的数据区域通常不会被清除,旧数据仍然可以从标签中读取。

您可能想阅读 NFC Forum 的以下规范(它们在他们的网站上可用):

  • Type 2 标签操作规范
  • NFC 数据交换格式 (NDEF) 技术规范
  • NFC 记录类型定义 (RTD) 技术规范
  • NFC 文本 RTD 技术规范

关于c - 使用 C 中的 NXP Mifare Ultralight 从 NFC 腕带读取正确数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23929387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com