3 releases
| 0.1.2 | Dec 1, 2025 |
|---|---|
| 0.1.1 | Sep 24, 2024 |
| 0.1.0 | Sep 24, 2024 |
#721 in Cryptography
11KB
178 lines
A lightweight crate for retrieving the unique machine ID without needing root/admin privileges. Uses OS APIs only and does not spawn new processes!
IDs sources
- Windows: the
MachineGuidvalue fromHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography(Identifying Unique Windows Installation) - Linux:
/etc/machine-idwith a fallback to/var/lib/dbus/machine-id(man page) - macOS:
IOPlatformUUID - FreeBSD:
CTL_KERN:KERN_HOSTUUIDsysctl(3) with a fallback to/etc/hostid - Other Unix: like FreeBSD, requires testing!
- Not yet implemented:
- iOS
- Android
Security Considerations
A machine ID uniquely identifies the host and should be treated as confidential, avoiding exposure in untrusted environments. If your application requires a stable unique identifier, avoid using the machine as it is. Instead, hash the machine ID securely with a fixed, application-specific salt.
[!WARNING]
Hashing IDs is not only a best practice today, if you store the ID somewhere (like your remote server), you actually must do it by law according to GDPR (see identifiers) and similar regulations.
[!TIP]
Virtual machines deployed from the same template often share the same machine ID. To differentiate them, include the MAC address when hashing.
Dependencies
~0.4–11MB
~72K SLoC