使用 C 语言的 NXP Mifare Ultralight 从 NFC 腕带读取正确的数据

2023-12-13

我对 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 标签的项目,所以您认为我应该阅读的任何内容请告诉我。

Edit 1

所以我发现了这个问题:使用 NXP 读卡器库读取 NFC Mifare 卡

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

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 页包含功能容器 (CC),指示该标签根据 NFC 论坛类型 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论坛(它们可以在他们的网站上找到):

  • 2 类标签操作规范
  • NFC 数据交换格式 (NDEF) 技术规范
  • NFC 记录类型定义 (RTD) 技术规范
  • NFC 文本 RTD 技术规范
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C 语言的 NXP Mifare Ultralight 从 NFC 腕带读取正确的数据 的相关文章

随机推荐

  • sencha touch 消息框不可点击

    在 sencha touch 中 我们在消息框方面遇到了一些问题 看起来是android 4 3的东西 在大多数设备上它都可以完美工作 但在 Android 4 3 的设备上 当用户按下按钮时 消息框不会消失 Ext define Test
  • addChildViewController 实际上做了什么?

    我刚刚第一次涉足 iOS 开发 我要做的第一件事就是实现一个自定义容器视图控制器 我们称之为SideBarViewController 交换它显示的几个可能的子视图控制器中的哪一个 几乎与标准完全相同标签栏控制器 这几乎是一个标签栏控制器但
  • HTML:防止 POST 表单的 url 编码

    我有一个 HTML 表单 必须将其发布到 URL 我希望表单能够发布一个名为 DATA 的变量 如下所示 DATA somevar someval somevar2 someotherval 我在做这件事时遇到了麻烦 看来默认情况下 会对数
  • iOS 的免费语音识别引擎?

    我正在寻找一些免费的语音识别引擎来在我的 iPhone 应用程序中使用 你能推荐吗 Nuance 刚刚为开发人员打开了大门龙移动SDK 他们是行业领导者 看一下NDEV 移动
  • Swift 3.0 和 Xcode 8 迁移后未调用 UITableViewDelegate 方法

    将我的代码库从 Swift 2 2 迁移到 Swift 3 0 后 我注意到我的UITableView页脚没有显示 事实证明我的都没有UITableViewDelegate方法被调用 例如 func tableView tableView
  • 如何从 PHP 解析以文本/xml 形式发送到服务器的 XML?

    我有一个用 jQuery 编写的客户端脚本 它将文本 xml 数据发送到服务器 但我不知道如何解析请求 因为数据不是查询字符串变量 jQuery 看起来像这样 jQuery ajax url test php type POST proce
  • Jetty 9 及更高版本中的 SelectChannelConnector 替代类

    jetty 9及以上版本的SelectChannelConnector的替代类是什么 另外 SelectChannelConnector 类有什么用 连接器类在 jetty servlet 架构中有何用途 我们可以使用 ServerConn
  • Python正则表达式提取日期

    我的字符串看起来像这样 server date YYYYMMDD int server date MON DAY YYYY int 还有更多 不同的日期格式 此外 可以有任意数量的 块 并且它们可以以任意顺序出现 我试图获取 Python
  • 如何通过 Docusign API 将动态图像添加到 Docusign 文档

    我不知道 Docusign API 是否可以实现这一点 但我很好奇是否可以将动态图像添加到模板文档中 此动态图像的目的是根据发送者的身份为文档设置徽标 我知道 Docusign 有品牌 但我们希望此图像位于模板文档的特定位置 如果有人知道这
  • 1 到 100 之间的正则表达式编号

    我搜索了很多 找不到这个 RegExp 的解决方案 我不得不说我在 Reg Expressions 方面不是很有经验 Regex 1 9 0 9 1 100 我想测试一个数字1 到 100 之间 不包括 0 Try 1 9 0 9 100
  • 参数类型可能存在的时间不够长

    我有一个简单的程序 我试图实现多态帐户类型 enum AccountType INVALID TYPE1 TYPE2 trait Account fn get name self gt String fn get type self gt
  • JToken.WriteToAsync 不写入 JsonWriter

    我正在尝试创建一个以某种方式更改请求的中间件 我能够阅读它并更改内容 但我无法弄清楚如何正确设置流编写器来创建新的正文 当我打电话时normalized WriteToAsync jsonWriter the MemoryStream仍然是
  • VS2017 和 VS2015 应用程序与 dll 之间的官方二进制不兼容性是否准确?

    TL DR MS 文档指出 VS2015 和 VS2017 库之间的二进制兼容性是one way 虽然我认为这必然是双向的 问题在哪里 首先 背景 任何 MSVC 构建的库都是正式二进制兼容VS2015 和 VS2017 之间 具体来说 您
  • sqldf、csv 和包含逗号的字段

    我花了一段时间才弄清楚这一点 我也是回答我自己的问题 您有一些 csv 您想要加载它fast 你想使用sqldf包裹 您常用的代码会被一些烦人的字段所困扰 例子 1001 Amy 9 43 00 99 2 1002 Ben Jr 9 43
  • HTTPS URL 是否加密?

    使用 TLS SSL HTTPS 加密时是否所有 URL 均已加密 我想知道 因为我希望在使用 TLS SSL HTTPS 时隐藏所有 URL 数据 如果 TLS SSL 为您提供全面的 URL 加密 那么我就不必担心隐藏 URL 中的机密
  • 为什么我的 WCF 服务不使用我的实体模型?

    我在同时使用 WCF 服务和实体模型时遇到问题 我已经从现有数据库创建了一个实体模型 这可以如下所示 在来自 实体对象代码生成器 的任何控制台应用程序中使用我的类时没有任何问题 然后 我创建了 WCF 服务 其接口如下 ServiceCon
  • python 正则表达式包含缺少的逗号

    我需要确保字符串具有逗号分隔的值 我读取的字符串可能有空格分隔的值 我的输入字符串中可能缺少一些逗号 也就是说 如果存在任何空格分隔的值而没有逗号 我必须包含一个逗号 我不应该对单引号或双引号内的字符串进行任何更改 这些带引号的值可以包含除
  • 如何以编程方式快速调用 UIView 上的手势点击

    我有一个 UIView 并且我向它添加了点击手势 let tap UITapGestureRecognizer target self action Selector handleTap tap delegate self myView a
  • 在 IAsyncResult 中使用异步方法

    我正在实施令牌提供者班级来自Microsoft ServiceBus命名空间 我正在重写以下方法 protected override IAsyncResult OnBeginGetToken string appliesTo string
  • 使用 C 语言的 NXP Mifare Ultralight 从 NFC 腕带读取正确的数据

    我对 NFC 设备读取非常陌生 但我已经设法使用以下代码在我自己的项目中实现NFC mfultralight c libnfc 我不明白的是 当我从 MIFARE Ultralight 手环读取数据时 我得到了很多垃圾 例如 我的标签中有数