#uuid #unique-id #machine-id #hwid #hardware-id #sha-1 #machineuid

machineid-rs

Get an encrypted unique MachineID/HWID/UUID. Inspired by .Net DeviceId.

11 stable releases

1.2.4 Jul 25, 2023
1.2.3 Mar 10, 2023
1.2.2 Apr 25, 2022
1.2.1 Jan 9, 2022
1.1.0 Jul 30, 2021

#85 in Operating systems

Download history 11319/week @ 2024-01-21 12816/week @ 2024-01-28 12243/week @ 2024-02-04 12448/week @ 2024-02-11 13866/week @ 2024-02-18 13617/week @ 2024-02-25 14200/week @ 2024-03-03 14761/week @ 2024-03-10 14084/week @ 2024-03-17 16129/week @ 2024-03-24 13952/week @ 2024-03-31 13798/week @ 2024-04-07 12651/week @ 2024-04-14 13796/week @ 2024-04-21 13536/week @ 2024-04-28 12589/week @ 2024-05-05

54,483 downloads per month
Used in 5 crates (4 directly)

MIT/Apache

24KB
531 lines

docs.rs docs

MachineID for Rust - Like .Net DeviceId

This Rust package is inspired by DeviceId, a .Net package to build a unique Machine ID.

Features

  • 3 Different types of hash (MD5, SHA1, SHA256)
  • Different components to make the ID
  • Support for Windows, Linux and MacOS
  • No Admin privileges are required

How to use

First add this to your Cargo.toml file

[dependencies]
machineid-rs = "1.2.4"

Then, you need to define the builder variable with the encryption type you want.

For example, SHA256

use machineid_rs::{IdBuilder, Encryption};

// There are 3 different encryption types: MD5, SHA1 and SHA256.
let mut builder = IdBuilder::new(Encryption::SHA256);

After that, you just need to add the components you want the id to have.

The available components are:

  • System UUID: Unique identifier of your machine

  • CPU Cores: Number of physical cores from your computer

  • OS Name: Operative System name, i.e., linux/windows

  • Username: The username currently being used

  • Machine Name: The name of the machine

  • CPU ID: The serial number of the processor

  • Drive Serial : The serial number of the disk storing the OS.

For example, i will add the System UUID and CPU Cores

use machineid_rs::HWIDComponent;

builder.add_component(HWIDComponent::SystemID).add_component(HWIDComponent::CPUCores);

Once you are ready, you just need to build the id with your key

let hwid = builder.build("mykey").unwrap();

Todo

  • Optimize the code

Feel free to report any bug you find! ;)

Dependencies

~2–31MB
~412K SLoC