存储设备唯一ID

Jar*_*und 5 linux storage compact-flash

我遇到过以某种方式与存储介质绑定的许可证系统。虽然基于文件系统上的 UUID 相当简单,但我不认为情况是这样(见下文)。此行为的典型示例如下:

  1. 每次启动时,都会生成一个 id 文件。
  2. 系统将检查密钥文件中的许可证。如果 key 与 id 匹配,那么一切都很好。
  3. 如果没有密钥,或者密钥与 ID 不匹配(如从不同系统复制),则许可证无效。

我观察到以下行为:

  • 完全擦除CF卡并重新安装会生成相同的id文件,因此不需要新的密钥文件。
  • 在不同的 CF 上使用相同的密钥不起作用,因为它与新 id 文件的内容不匹配。

这让我得出结论,有一种方法可以以某种方式获取 CF 卡的唯一 ID。如何在 Linux 中实现这一目标?


PS:我故意省略了产品本身的任何细节,因为我更想知道像这样的系统如何构建 CF 卡的唯一 ID。

har*_*ymc 2

该卡将以只读方式记录有大量信息。

阅读内部 SD 卡信息一文是这样说的:

内部 SD 卡信息

有关 SD 卡的信息编码在其内部卡注册表中。其中之一是卡识别 (CID)寄存器,它是一个 16 字节代码,包含唯一标识 SD 卡的信息,包括卡序列号 (PSN)、制造商 ID 号 (MID) 和制造日期 (MDT)。CID 寄存器在卡制造时设置,设置后不能更改。(根据SD卡规格,该信息只能写入一次,但是如果卡不符合规格,则该信息可能会被更改!)

如何从 SD 卡读取 CID

读取 CID 的一种方法是使用带有 SD 卡插槽的笔记本电脑。笔记本电脑中的读卡器通常通过 PCI 总线(或 IDE 总线)直接连接。这无法通过 USB 读卡器工作,因为检索卡信息的命令被截获并且读卡器无法理解。并非所有带有内置卡插槽的计算机都可以工作,某些内置读卡器是通过 USB 总线连接的。

假设您拥有适当的硬件,可以使用多种方法来获取卡信息。使用Linux,读取内部SD卡信息很简单。插入卡并查看下方 /sys/block/mmcblk0/device/(此位置可能会根据您的设备而变化)。您将看到几个可用的属性,其中包括 CID 寄存器及其内部信息。