NFC的mifare卡与ntag具体区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFC的mifare卡与ntag具体区别相关的知识,希望对你有一定的参考价值。
我看mifare的classic卡的存储与ntag存储划分好像不一样,这两种到底是哪些区别?
应该这么说,Ntag才是符合NFC规约的Tag(标签), 它的最基本存储信息形式是NDEF格式。Mifare卡有很多,你不特别指明的话,我就认为是最常见的Mifare Classic One(俗称M1卡)是一种卡片实体,它有三次认证,之后才可以忘内存里写数据。M1卡不符合NFC对Ntag的规约,它实际上算不上NFC标签,这个你用支持NFC的手机,去读M1卡,就知道了。追问如果一个读卡器,是M1卡读卡器程序,要想能改成能读nfc标签,那么这个需要改动的地方多吗?希望可以回答一下,我可以继续提高悬赏,如果您这边也不清楚的话,也麻烦回复一下,我就不等了,直接采纳
追答作为主机端(Reader/Writer)硬件不需要任何改动,软件的话当然必须要改,至少三次认证的操作你可以省了(NFC标准的4总Tag不需要认证,三次认证是NXP的加密专利)。你改之前首先要确定你要读的NFC Tag是属于哪种,然后在针对性的去修改你的读头代码。
研究一周多了 nfcA MifareClassic ndefFormatable都试了不行 也不知道问题出在哪
看网上介绍ndef读写标签的博文挺多 于是换了ntag216 使用ndef读写 成了
但是我这项目除了android端还有网站端 如果我改成ndef 他那也要改
现在还不确定目前的NFC设备是否支持MifareClassic
厂商的工程师都说不清
使用 C 语言 NXP Mifare Ultralight 从 NFC 腕带读取正确数据
【中文标题】使用 C 语言 NXP Mifare Ultralight 从 NFC 腕带读取正确数据【英文标题】:Reading correct data from NFC wrist band with NXP Mifare Ultralight in C 【发布时间】:2014-05-29 08:54:14 【问题描述】:我对 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 的原因吗?
【问题讨论】:
【参考方案1】:您在第 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 技术规范【讨论】:
以上是关于NFC的mifare卡与ntag具体区别的主要内容,如果未能解决你的问题,请参考以下文章
使用 ACR1252U NFC 标签阅读器读取 NTag213 上的所有记录
这是哪个NFC标签? nfc-list Mifare Ultralight/Classic 7Byte UID