2

我正在尝试更改 Ultralight C 卡上的 3DES 密钥。我可以将值写入地址 44-47,正如我在此处的某些主题中找到的那样。但是我在使用它时无法进行身份验证。如果我写回默认密钥,它可以正常工作。

我认为有些东西我不明白,这可能是问题的根源,查看免费库示例以及来自这个和 libnfc 论坛的一些帖子,我发现超轻 C 中的默认键是: 425245414b4d454946594f5543414e21 (ASCII 的十六进制值“ BREAKMEIFYOUCAN!"),但要在客户端解密它使用的密钥49454D4B41455242214E4143554F5946

我不知道这两个键之间的关系是什么,但我认为需要进行一些预先确定的操作才能从另一个生成一个,这就是我失败的原因。有人有幸这样做吗?感谢每一个帮助

对于我的所有代码,我都使用此代码作为起点

4

1 回答 1

0

你设法解决了你的问题吗?你介意与社区分享你的代码吗?

如果你没有,这里是前提:

如果十六进制键是:“00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F”,那么您必须在4 页,从页 0x2C (44) 到页 0x2F (47)。

如果您想更改需要身份验证的位置(哪些页面),请执行以下操作:

  • 0x2A 定义需要验证的页面地址。例如,如果 0x2A = 0x30,则不需要身份验证,因为内存上升到 0x2F。
  • 0x2B 定义读/写 (0x2B=0) 或仅写访问 (0x2B=1) 是否需要身份验证
于 2018-05-30T15:14:24.063 回答