Automox uses its own formula to generate and identify devices by generating a fingerprint of a device using these criteria: 

   const HARDWARE_ID_UUID = 'uuid'; // windows
const HARDWARE_ID_MACHINE_ID = 'machine-id'; // non-windows
const PROCESSOR_HASH = 'processor-hash';
const MEMORY_HASH = 'memory-hash';
const BIOS_HASH = 'bios-hash';
const SYSTEM_HASH = 'system-hash';
const HOSTNAME_INFO = "hostname-info";
const IP_ADDRESS_ID = 'ipaddress-info';
const MAC_ADDR_INFO = 'macaddr-info';
const DISK_INFO = 'disk-info';
const MINIMUM_MATCH_PERCENT = 40;

This set of criteria is what we use to generate an Automox UUID. The last line lists the variable (Minimum_Match_Percent) with the value 40. This means that if two devices have 40% or more matchable variables (meaning they're the same), Automox is not able to tell them apart. However, if the two devices have 39% or less of the same variables, then Automox is able to discern it as a unique device.

What if I have two devices that have the same Automox UUID?

There are multiple ways to address this issue:

  • You can, for example, change the hostname.
  • You can change the machine-id of the device (see: Linux Devices Share a UUID)
  • You can change your BIOS, but this should be done by advanced users as this can have major impacts for the device.

There's also a script you can use that will retrieve these identifiable variables and output it on the screen. For Windows we can use PowerShell:

# Get UUID
$uuid = (Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID) -replace "-"

# Get hostname
$hostname = (Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty Name)

# Get IP address
$ipAddresses = Get-NetIPAddress | Where-Object { $_.InterfaceAlias -ne 'Loopback Pseudo-Interface 1' } | Select-Object IPAddress

# Get MAC address
$macAddress = (Get-NetAdapter | Where-Object { $_.Status -eq 'Up' } | Select-Object -ExpandProperty MacAddress)

# Get disk space
$diskSpace = Get-WmiObject -Class Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3 } | Select-Object DeviceID, @{'Name'='FreeSpaceGB'; 'Expression'={ "{0:N2}" -f ($_.FreeSpace / 1GB) }}

# Display the information
Write-Output "UUID: $uuid"
Write-Output "Hostname: $hostname"
Write-Output "IP Addresses:"
$ipAddresses | ForEach-Object {
Write-Output $_.IPAddress
}
Write-Output "MAC Address: $macAddress"
Write-Output "Disk Space:"
$diskSpace | ForEach-Object {
Write-Output "Drive: $($_.DeviceID)"
Write-Output "Free Space: $($_.FreeSpaceGB) GB"
Write-Output ""
}


## GetHashes

$systemHash = (Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID) -replace "-"

$processorHash = (Get-WmiObject -Class Win32_Processor | Select-Object -ExpandProperty ProcessorId) -join ""

$memoryHash = (Get-WmiObject -Class Win32_PhysicalMemory | Select-Object -ExpandProperty SerialNumber) -join ""

$biosHash = (Get-WmiObject -Class Win32_BIOS | Select-Object -ExpandProperty SerialNumber) -join ""

Write-Host "System Hash: $systemHash"
Write-Host "Processor Hash: $processorHash"
Write-Host "Memory Hash: $memoryHash"
Write-Host "BIOS Hash: $biosHash"

 

For Linux, we can use Bash:

#!/bin/bash

# Get UUID
uuid=$(dmidecode -s system-uuid | tr -d '-')

# Get hostname
hostname=$(hostname)

# Get IP addresses
ipAddresses=$(hostname -I | tr ' ' '\n')

# Get MAC addresses
macAddresses=$(ip link show | grep -Eo '([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}' | grep -v '^00:00:00:00:00:00')

# Get disk space
diskSpace=$(df -h --output=source,avail | grep '^/dev' | awk '{print "Drive: "$1"\nFree Space: "$2"\n"}')

# Display the information
echo "UUID: $uuid"
echo "Hostname: $hostname"
echo "IP Addresses:"
echo "$ipAddresses"
echo "MAC Addresses:"
echo "$macAddresses"
echo "Disk Space:"
echo "$diskSpace"

# Get hashes

# System Hash
systemHash=$(dmidecode -s system-uuid | tr -d '-')

# Processor Hash
processorHash=$(dmidecode -t processor | grep 'ID:' | awk '{print $2}' | tr -d ' ')

# Memory Hash
memoryHash=$(dmidecode -t memory | grep 'Serial Number:' | awk '{print $3}' | tr -d ' ')

# BIOS Hash
biosHash=$(dmidecode -s bios-version | tr -d ' ')

# Display hashes
echo "System Hash: $systemHash"
echo "Processor Hash: $processorHash"
echo "Memory Hash: $memoryHash"
echo "BIOS Hash: $biosHash"
Was this article helpful?
0 out of 0 found this helpful