我的程序需要操作系统安装指纹,就像存储在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ MachineGuid中的MSW一样
在Microsoft Windows中,我已经准备好了,但我找不到与Linux相同的功能。 Linux中有什么接近这个的吗?我不会有root权限,所以像dmidecode -s system-uuid
这样的东西就不可能了。
一个例子很好,但没有必要。
答案 0 :(得分:2)
一种可能性是阅读所有人都可读的/etc/ssh/ssh_host_{d,r}sa_key.pub
,并在安装过程中随机生成。
显然问题是,如果没有安装SSH(服务器),那些文件可能根本不存在。它们也经常从较旧的安装中复制。
答案 1 :(得分:1)
规范的Unix'y答案是主机ID,但实际上,这往往最终会落在IP地址的哈希值上......
#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.)
答案 2 :(得分:1)
我假设您正在尝试这样做,因为您想将软件“锁定”到特定的硬件上?
一种选择是使用网络接口的MAC地址来识别当前机器。 MAC地址很容易获得,请参阅this Stackoverflow question。
这很好地解决了更改IP等问题,因为除非有人替换网卡,否则接口的MAC地址更不太可能发生变化。
答案 3 :(得分:0)
我认为MAC地址不是识别机器的好选择。有许多USB加密狗可以插入PC以提供移动/ 3G / H + /等。网络接口,所以当这样的加密狗插入机器时,它将具有从可用网络接口MAC地址派生的不同id。
目标系统上是否有/ etc / machine-id(/ var / lib / dbus / machine-id)?