使用恩智浦读卡器库读取NFC Mifare卡

时间:2014-03-02 10:16:20

标签: c nfc mifare

我正在尝试使用NFC阅读器库阅读Mifare Ultralight卡的内容。

我是NFC新手,我正在使用this github repository开始。

此仓库中的代码允许检测检测到哪种类型的卡(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超轻型包含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个字节的数据+我的网址,“google.com”+ 1个字节FE

我找不到这7个前缀字节+这1个尾随字节是什么......

再次编辑

好的,它是NDEF消息格式。

1 个答案:

答案 0 :(得分:1)

是的,它是NDEF格式!

03 NDEF Message
0F length
Record 1
D1 - MB, ME, SR, TNF=”NFC Forum well-known type”
01 Type length
0B Payload length
55 Type - “U”(Abbrivation for URL)  

67  6F 6F 67 6C  65 2E 63 6F 6D (google.com)

Record 2
FE Terminator NDEF