如何解析Mifare Ultralight NFC标签的非TLV格式数据?
Mifare Ultralight 非TLV区域数据解析(含17.5/1750数值推测)
原始提取数据
[ 05:7E:EF:1C ] Addr. 00 : DATA [ 6E:51:64:E9 ] Addr. 01 : DATA [ B2:15:00:00 ] Addr. 02 : DATA [ 00:00:00:00 ] Addr. 03 : DATA [ 65:33:ED:7A ] Addr. 04 : DATA [ A2:00:00:5A ] Addr. 05 : DATA [ A5:5A:12:34 ] Addr. 06 : DATA [ 00:00:00:00 ] Addr. 07 : DATA [ 00:00:00:00 ] Addr. 08 : DATA [ 00:00:00:00 ] Addr. 09 : DATA [ 00:00:00:00 ] Addr. 0A : DATA [ 00:00:00:00 ] Addr. 0B : DATA [ 00:00:00:00 ] Addr. 0C : DATA [ 00:00:00:00 ] Addr. 0D : DATA [ 00:00:00:00 ] Addr. 0E : DATA [ 00:00:00:00 ] Addr. 0F : DATA
解析步骤与推测
1. 确认标签类型与数据加密状态
Mifare Ultralight C的页4及之后区域默认加密,未用对应密钥解密时读取到的是乱码,自然不符合TLV格式。建议先验证标签类型:
- 标准Ultralight(非C版)页0-3为UID、校验位、内部数据和锁位,页4及之后为明文可写区域;Ultralight C从页4开始加密。
- 若为Ultralight C,需通过专业工具(如Proxmark3、NFC Tools)使用合法密钥解密页4及之后数据,得到明文再解析。
2. 明文数据的目标数值匹配逻辑
假设已获取明文,针对17.5或1750可按以下方向排查:
(1)十六进制与字节序匹配
- 1750的十六进制为
0x06D6(16位)、0x000006D6(32位) - 17.5的IEEE754单精度浮点表示为
0x418C0000(32位) - 检查连续2/4字节组合,同时考虑大端(高位在前)、小端(低位在前)字节序,匹配上述值。
(2)BCD码排查
1750的压缩BCD码为0x17 0x50(每字节存两位十进制数),17.5可表示为0x17 0x05(整数+小数位),检查数据中是否有对应字节组合。
(3)固定点小数换算
若数据为缩放后的整数(如目标值×10/100存储),尝试将连续字节数值除以10/100,看是否得到17.5或1750。例如:17500÷10=1750,175÷10=17.5。
(4)ASCII编码排查
17.5的ASCII编码为0x31 0x37 0x2E 0x35(对应字符'1' '7' '.' '5'),1750为0x31 0x37 0x35 0x30(对应字符'1' '7' '5' '0'),检查数据中是否有连续对应字节。
3. 当前未解密数据的排查结果
遍历你提供的页4-6所有字节组合后,未找到与17.5/1750直接匹配的编码值,因此优先判断数据处于加密状态,需解密后再分析。
内容的提问来源于stack exchange,提问作者Maxime B
相关产品推荐
相关产品推荐

