#machine #id #root #permissions #hex #cross-platform #uid

machine-uid

无需root权限获取操作系统原生机器ID

8个版本 (4个重大更新)

0.5.3 2024年8月17日
0.5.2 2024年6月30日
0.5.1 2023年8月8日
0.5.0 2023年7月29日
0.1.0 2018年10月2日

#50 in Operating systems

Download history 5532/week @ 2024-05-03 4670/week @ 2024-05-10 4373/week @ 2024-05-17 4517/week @ 2024-05-24 3836/week @ 2024-05-31 4137/week @ 2024-06-07 4400/week @ 2024-06-14 3963/week @ 2024-06-21 4435/week @ 2024-06-28 5547/week @ 2024-07-05 4520/week @ 2024-07-12 4576/week @ 2024-07-19 4508/week @ 2024-07-26 4777/week @ 2024-08-02 5013/week @ 2024-08-09 6859/week @ 2024-08-16

每月下载量 21,853
23 个crate中使用 (17个直接使用)

MIT 许可证

11KB
138 代码行数(不含注释)

machine-uid

无需root权限获取操作系统原生机器ID。

machine-uid on GitHub Action machine-uid on crates.io total downloads machine-uid on docs.rs

关于机器ID

在Linux中,机器ID是一个以单个换行符结尾的、32个字符长的小写十六进制ID。从十六进制解码后,对应一个16字节/128位的值。这个ID可能不是全零。这个ID唯一标识了主机。它应该被视为“机密”信息,不应在不受信任的环境中暴露。请注意,机器ID可以被root重新生成。

请注意,在*nix平台上,此库不需要任何依赖项,但在Windows上,它需要winreg依赖项。因此,如果您只需要构建*nix版本,您可以使用版本0.3.0。

使用方法

use machine_uid;

fn main() {
    let id: String = machine_uid::get().unwrap();
    println!("{}", id);
}

工作原理

它从以下来源获取机器ID

Linux或使用systemd的系统

cat /var/lib/dbus/machine-id # or /etc/machine-id

BSD

cat /etc/hostid # or kenv -q smbios.system.uuid

OSX

ioreg -rd1 -c IOPlatformExpertDevice | grep IOPlatformUUID

Windows

(Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography).MachineGuid

illumos

gethostid(3C)

支持的平台

我已经在以下平台上进行了测试

  • Debian 8
  • OS X 10.6
  • FreeBSD 10.4
  • Fedora 28
  • Windows 10
  • OmniOS r151050

更新日志

v0.5.3

  • 移除内置的C依赖项#13

v0.5.2

  • 添加illumos支持#11
  • 将winreg升级到0.52#12
  • 将bindgen升级到0.69#12

v0.5.1

  • 将winreg升级到0.50#9
  • 将bindgen升级到0.66#8

v0.5.0

  • 修复交叉编译问题#7

v0.4.0

  • 修复x86程序在x64上运行的问题#4

v0.3.0

  • 将winreg升级到0.11

v0.2.0

  • 添加对Windows的支持

许可证

MIT License 版权所有 (c) 2018, Hanaasagi

依赖项

~0–9.5MB
~42K SLoC