Format 如何读取记录';NXP MIFARE超轻标签的有效负载?

Format 如何读取记录';NXP MIFARE超轻标签的有效负载?,format,nfc,mifare,ndef,tlv,Format,Nfc,Mifare,Ndef,Tlv,我有两个NXP MIFARE Ultralight标记(类型2),在第一条记录中包含一些数据。我使用ACS 1252U读取标记,我尝试手动迭代一些数据以了解标记上的内容,但我似乎不知道如何确定记录的开始和结束位置 以下是关于NFC标签和我试图阅读的记录的一些详细信息: 下面是我从第04页开始的一个标签中的一些数据: 03 ff 01 5a c4 0f 00 00 01 45 62 63 61 72 64 2e 6e 65 74 3a 62 63 61 72 64 39 39 37 30 31

我有两个NXP MIFARE Ultralight标记(类型2),在第一条记录中包含一些数据。我使用ACS 1252U读取标记,我尝试手动迭代一些数据以了解标记上的内容,但我似乎不知道如何确定记录的开始和结束位置

以下是关于NFC标签和我试图阅读的记录的一些详细信息:

下面是我从第04页开始的一个标签中的一些数据:

03 ff 01 5a
c4 0f 00 00
01 45 62 63
61 72 64 2e
6e 65 74 3a
62 63 61 72
64 39 39 37
30 31 1e 34
现在,如果我将所有这些转换为ASCII,我会得到以下结果:

ÿZÄEbcard.net:bcard997014

我所知道的是,我正在寻找的实际数据(或有效载荷)开始于
99701
,但我究竟怎么知道呢?当然,数据中有某种东西可以告诉我记录的有效负载从何处开始,在何处停止?

数据很好地遵循了Type2标记规范。类型2标记的数据页从第4页/第4块开始。数据嵌入到TLV结构中

在您的例子中,第4页的第一个字节是NDEF消息TLV(0x03)的标记。下一个字节表示长度字段以3字节格式编码。因此,长度为0x015A(=346字节)。因此,您必须读取接下来的87页(=ceil(346/4),因为数据从页面边界开始)才能检索完整的NDEF消息

NDEF消息本身由1条NDEF记录组成(头字节0xC4表示该记录是消息的第一条(MB=1)和最后一条(ME=1)记录)。该记录是NFC论坛外部类型(头字节中的TNF=4)。类型名称的长度为0x0F(=15字节)。有效负载的长度为0x0145(=325字节)。因此,类型名为“bcard.net:bcard”,有效负载为“39 39 37 30 31 1E 34…”(ITN似乎没有发布关于其bcard类型的结构规范)


请参阅如何解码这些TLV结构和NDEF消息。

我还想指出,根据本()文档,我在第4页开头看到的是NDEF消息TLV。这完全没有任何意义,因为我没有看到记录头或任何其他与NDEF消息图匹配的内容:啊,我没有意识到长度可以用三字节格式表示。当您说数据从页面边界开始时,这是否意味着在长度由一个字节表示的情况下,数据仍将从第5页开始?例如:@user928112不,我的意思是,在您的特定情况下,数据从页面边界开始。这只是巧合,在其他标签上可能不是这样。因为我在使用Android,如果我从TLV结构中提取NDEF消息后,使用Android.nfc.NdefMessage类帮助我解析它,会不会有任何潜在问题?@user928112我不知道。我终于成功地提取了有效负载。谢谢你朝着正确的方向轻推。