首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用NXP Mifare超光速读取NFC腕带的正确数据

用NXP Mifare超光速读取NFC腕带的正确数据
EN

Stack Overflow用户
提问于 2014-05-29 08:54:14
回答 1查看 2.1K关注 0票数 1

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

我不明白的是,当我读到MIFARE超光速波段的数据时,我会收到很多垃圾。

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

现在当我跑:

代码语言:javascript
复制
nfc-mfultralight r /home/user/dump

我明白了

代码语言:javascript
复制
d▒r▒!▒ H▒▒U255555574558888▒-67644-67546-2346

这是libnfc的例子,所以这个程序不应该只读取正确的数据吗?我使用的安卓应用程序只看到了价值255555574558888。价值-67644-67546-2346是我以前写过的。

我怎么知道我需要读的是正确的数据?我应该在示例代码中更改什么才能使它正确工作?

我使用一个ACR122从标记中读取数据。

PS:这是我第一个使用NFC设备,libnfc和MIFARE超光速标签的项目,所以你认为我应该读的东西请告诉我。

编辑1

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

我觉得这对我有一点帮助。我打印出另一个测试字符串的十六进制值,并得到以下结果

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-30 07:35:30

在第0页和第1页(字节0到7)中看到的数据是卡片的UID。第2页包含特定于卡的数据(字节8和9)和锁字节(字节10和11)。第3页包含功能容器(CC),该容器指示此标记是根据NFC论坛类型2标记操作规范1.1版格式化的。标签的用户数据区域从第4页开始。

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

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

您可能希望通过NFC论坛阅读下列规范(可在其网站上查阅):

  • 2型标签操作规范
  • NFC数据交换格式(NDEF)技术规范
  • NFC记录类型定义(RTD)技术规范
  • NFC文本RTD技术规范
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23929387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档