当前位置: 首页 > 知识库问答 >
问题:

写入时的读取在Mi的Ultralight C上受到限制

郗奇玮
2023-03-14

我刚刚收到Mifare Ultralight C。我可以使用android手机(Galaxy Ace 3)轻松读取其中的值。

0 hex: 04 9a 6f 79
1 hex: 52 02 3a 80
2 hex: ea 48 00 00
3 hex: 00 00 00 00
4 hex: 02 00 00 10
5 hex: 00 06 01 10
6 hex: 11 ff 00 00
7 hex: 00 00 00 00
8 hex: 00 00 00 00
9 hex: 00 00 00 00
10 hex: 00 00 00 00
11 hex: 00 00 00 00
12 hex: 00 00 00 00
13 hex: 00 00 00 00
14 hex: 00 00 00 00
15 hex: 00 00 00 00
16 hex: 00 00 00 00
17 hex: 00 00 00 00
18 hex: 00 00 00 00
19 hex: 00 00 00 00
20 hex: 00 00 00 00
21 hex: 00 00 00 00
22 hex: 00 00 00 00
23 hex: 00 00 00 00
24 hex: 00 00 00 00
25 hex: 00 00 00 00
26 hex: 00 00 00 00
27 hex: 00 00 00 00
28 hex: 00 00 00 00
29 hex: 00 00 00 00
30 hex: 00 00 00 00
31 hex: 00 00 00 00
32 hex: 00 00 00 00
33 hex: 00 00 00 00
34 hex: 00 00 00 00
35 hex: 00 00 00 00
36 hex: 00 00 00 00
37 hex: 00 00 00 00
38 hex: 00 00 00 00
39 hex: 00 00 00 00
40 hex: 00 00 00 00
41 hex: 00 00 00 00
42 hex: 30 00 00 00
43 hex: 00 00 00 00

然后,我将第43页的值更改为< code>0x80,第42页的值更改为< code>0x2A。当我这样解读价值观时:

Log.e(LOG, "read");
for(int j = 0; j <= 40; j += 4){
byte[] resp = mifare.readPages(j);
logResponse(j, resp);


private void logResponse(int j, byte[] resp){
     for(int i = 0; i < resp.length; i += 4){
            Log.e(LOG, String.valueOf(j + i / 4) + " hex: " 
                    + String.format("%02x ", resp[i])
                    + String.format("%02x ", resp[i + 1]) 
                    + String.format("%02x ", resp[i + 2]) 
                    + String.format("%02x", resp[i + 3]));
      }
}

我从第0页和第1页而不是第42页和第43页获取值。
接下来的事情是,当我发送消息0x1A00以进行身份验证时,我收到收发失败
有没有办法检查它是否真的是Mi的Ultralight C或其他标签?或者我错了,第43页中的值0x80只限制写入访问?

共有1个答案

徐昆
2023-03-14

您从标签中读取的内容看起来确实像是MIFARE Ultralight C标签(特别是您能够阅读第42和43页)。

> < li>

将AUTH0设置为42 (0x2A)后您看到的翻转是预期行为。即,当你从第X页开始保护标签存储器时,读命令将在第X - 1页之后翻转。

将AUTH1设置为0x80不会达到预期效果。只有AUTH1中的最低位是相关的,因此您通常会将AUTH1设置为0x00(限制读取和写入)或0x01(仅限制写入)。

我不太确定为什么身份验证命令失败。

byte[] cmd = { (byte)0x1A, (byte)0x00 };
byte[] result = mifare.transceive(cmd);

通常,如果此命令返回0xAF(或引发异常)的任何其他内容,则明确指示标记不是 MIFARE Ultralight C。

 类似资料:
  • 我想锁定写入Ultralight C的内存区域。我们可以在文档中看到,如果我将0x2B页设置为0xFF,写访问将受到限制,如果我设置0x00,写访问和读访问都将受到限制。 事实上,我设置了带有0xFF的0x2B页面,后来的页面0x2A带有0x04以锁定内存访问。它运行良好,但是当我尝试从0x04读取任何页面时,它会响应 63 00 有人做了我想做的事吗?

  • 问题内容: 我必须阅读tomcat日志文件,并在一段时间(例如:一个小时)后再次读取该文件(仅针对新添加的内容),因此我创建了RandomAccessFile来记录我完成的最后一个位置并使用BufferedReader.readLine()方法。 但是,我发现有时我无法读取文件的整行。 例如,tomcat正在尝试编写以下内容(仅作为示例): 192.168.0.0本地主机/index.html .

  • 我在while循环中遇到了这个问题: 这个while循环只接受一次输入,不会再次请求它,所以它会循环整个时间接受一次该输入。我在这里做错了什么,因为对我来说,这个诡计循环真的很奇怪? InputHandler类:

  • 我正在尝试用套接字从客户端向服务器写入一个结构。 结构是: 这两个程序(服务器、客户机)的结构是相同的,并且这两个程序的结构是相同的。 客户端程序: 结构R*r; 马洛克.. ...(用数据填充结构) write(socket_fd,(void*)r,size of(R)); 服务器程序: 结构R*r; 马洛克.. read(client_fd,(R*)r,size of(R)); 这不是将结构从

  • 我有一台Mifare UltraLight NTAG216(NFC论坛类型2)。 它没有密码保护,但Android应用程序NXP TagInfo说: NFC数据集访问:只读 NDEF访问:只读 E1 10 6D 0F 查看来自恩智浦标签信息的内存转储: [E2] .00 00 00 BD (锁2-锁4, CHK) [E3].04 00 00 FF(CFG,镜像,AUTH0) 然而,NXP TagW

  • 问题内容: 在我的代码中,我有一个UITextField,当用户点击时会打开一个UIDatePicker,以使用户能够轻松,高效地滚动至其出生日期。显然,我们不希望UIDatePicker像当前一样向上滚动到2015年。由于这是“出生日期”输入字段,因此我还需要能够将输入限制为16岁以上。我该怎么做呢? 问题答案: 您可以使用dateByAddingUnit并从当前日期减去16年来设置datePi