【发布时间】:2014-03-02 10:16:20
【问题描述】:
我正在尝试使用 NFC 读取器库读取 Mifare Ultralight 卡的内容。
我是 NFC 的新手,我使用 this github repository 开始。
此 repo 中的代码允许检测检测到的卡类型(Mifare、Mifare ultralight ...)并读取卡的 UID。我添加此代码是为了读取 Mifare 超轻卡的内容:
uint8_t bBufferReader[96];
memset(bBufferReader, '\0', 0x60);
PH_CHECK_SUCCESS_FCT(status, phalMful_Read(&alMful, 4, bBufferReader));
int i;
for(i = 0; i < 96; i++){
printf("%02X", bBufferReader[i]);
}
我有一张卡片,上面写着“Hello world”,当我读到它时,上面的代码会打印出以下字节:
0103A010440312D1010E5402667248650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
所以我正在从卡中读取一些内容,但是没有“Hello world”的痕迹 文本。
可能遗漏了一些东西(可能是一件大事,也可能是一件小事)。任何帮助都会很棒!
编辑
所以我取得了一些不错的进展。 Mifare ultralight 包含 16 页 4 字节,0 - 3 用于内部使用(序列号、锁等),4 - 15 用于用户数据。我现在可以阅读卡片的内容了,但是只剩下几个问题:
我正在阅读一张包含网址 www.google.com 的卡片,这是我得到的:
03 0F D1 01 -> Page 1, 4 bytes of non text data, not sure what it is
0B 55 01 67 -> Page 2, 3 bytes of non text data, then 1 bytes for the "g"
6F 6F 67 6C -> Page 3, 4 bytes for "oogl"
65 2E 63 6F -> Page 4, 4 bytes for "e.co"
6D FE 00 00 -> Page 6, 1 byte for "m", 1 byte for I don't know
00 00 00 00 -> Other pages are just empty
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
所以我有 7 个字节的数据 + 我的 url,“google.com” + 1 个字节 FE
我找不到这 7 个前缀字节 + 这 1 个尾随字节是什么...
再次编辑
好的,它是 NDEF 消息格式。
【问题讨论】:
-
顺便说一下,这是我创建的开源驱动(目前只能读/写 Mifare ultralight):github.com/robinmonjo/explore-nfc-board-driver