Machine ID читает несколько независимых аппаратных источников без запуска PowerShell/WMIC.

Источники

  • Windows: SMBIOS UUID, baseboard serial, MachineGuid, volume serial;
  • Linux: DMI /sys/class/dmi/id/* и /etc/machine-id;
  • macOS: IOPlatformUUID через ioreg.
Сырые идентификаторы наружу не возвращаются: binary выдаёт salted SHA-256. Общий id строится из наиболее стабильных источников, volume serial остаётся компонентом для частичного сопоставления.
Смена встроенной соли нарушит сопоставление с ранее зарегистрированными устройствами. Выпускайте такую смену только вместе с версией fingerprint и серверной миграцией.
Timeout и включение модуля задаются в launcher.config.json через native.machineId.enabled и native.machineId.timeoutMs.

Устройство binary

  • platform/windows.rs читает SMBIOS, registry и serial системного тома;
  • platform/linux.rs читает DMI и machine-id;
  • platform/macos.rs получает IOPlatformUUID;
  • fingerprint.rs единственный имеет доступ к соли и превращает сырые поля в hashes;
  • model.rs описывает публичный JSON, который читает Electron;
  • main.rs только печатает результат в stdout.
Тип с сырыми источниками имеет видимость pub(crate) и не реализует сериализацию. Это специально не даёт случайно вернуть hardware identifiers из будущего API метода.