3

我有一个程序需要操作系统安装指纹,例如存储在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid 中的 MSW 中的程序。Linux中是否有任何与此相关的东西?我将没有 root 访问权限,所以任何类似的事情都是不可能dmidecode -s system-uuid的。

一个例子会很好,但没有必要。

4

4 回答 4

3

一种可能性是 read /etc/ssh/ssh_host_{d,r}sa_key.pub,所有人都可以阅读,并且在安装过程中随机生成。

显然问题在于,如果没有安装 SSH(服务器),这些文件可能根本不存在。它们也经常从较旧的安装中复制。

于 2013-09-04T21:50:36.263 回答
2

我认为 MAC 地址不是识别机器的好选择。有许多 USB 加密狗可以插入 PC 以提供移动/3G/H+/等。网络接口,因此当这样的加密狗插入机器时,它将具有从可用网络接口 MAC 地址派生的不同 ID。

/etc/machine-id (/var/lib/dbus/machine-id) 在您的目标系统上可用吗?

见: http: //man7.org/linux/man-pages/man5/machine-id.5.html

见:http: //0pointer.de/blog/projects/ids.html

于 2016-02-17T17:16:23.333 回答
1

标准的 Unix 答案是主机 ID,但在实践中,这通常最终会依赖 IP 地址的哈希......</p>

   #include <unistd.h>

   long gethostid(void);
   int sethostid(long hostid);

DESCRIPTION
   gethostid()  and  sethostid()  respectively get or set a unique 32-bit identifier for
   the current machine.  The 32-bit identifier is intended to be unique among  all  UNIX
   systems  in  existence.   This  normally resembles the Internet address for the local
   machine, as returned by gethostbyname(3), and thus usually never needs to be set.

NOTES
   In the glibc implementation, the hostid is stored in the file /etc/hostid.  (In glibc
   versions before 2.2, the file /var/adm/hostid was used.)

   In  the glibc implementation, if gethostid() cannot open the file containing the host
   ID, then it obtains the hostname using gethostname(2), passes that hostname to  geth‐
   ostbyname_r(3)  in  order  to  obtain  the  host's  IPv4 address, and returns a value
   obtained by bit-twiddling the IPv4 address.  (This value may not be unique.)
于 2013-09-04T22:56:52.163 回答
1

我假设您尝试这样做是因为您想将软件“锁定”到特定的硬件上?

一种选择是使用网络接口的 MAC 地址来识别当前机器。MAC 地址相当容易获得,请参阅这个 Stackoverflow 问题

这很好地解决了更改 IP 等问题,因为除非有人更换网卡,否则接口的 MAC 地址不太可能更改。

于 2013-09-05T15:27:58.907 回答