Как узнать информацию о компьютере с Python?

Хочу в базе сохранять информацию о пользователях, которые запускают программу. Но какой уникальное значение использовать? Операционная система - не вариант, windows или linux установлен у тысяч, это как уникальный id не подходит. Какую информацию о компьютере пользователя можно получить с помощью python (в плане разрешённого), которая была бы уникальным для каждого компьютера?
Информация, которая была бы уникальным для каждого пользователя и хранилась в базе данных.
Библиотека platform не помогает в этом случае:

import platform
import socket

my_system = platform.uname()

print(f"System: {my_system.system}")
print(f"Release: {my_system.release}")
print(f"Node Name: {my_system.node}")
print(f"Version: {my_system.version}")
print(f"Machine: {my_system.machine}")
print(f"Processor: {my_system.processor}")
System: Windows
Release: 10
....

Ответы (3 шт):

Автор решения: Chet Vano

предлагаю использовать mac адрес. и обязательно шифровать. например: берем мас адрес компьютера Х и генерируем контрольную сумму sha. это и будет id. т.е. пишешь, чтобы клиент в бд отпраалял не мас, так как эта инфа конфиденциальная, а чексум.

→ Ссылка
Автор решения: Fox Fox
import os
import subprocess
import uuid

def get_hdd_serial():
 result = subprocess.run(
  ['powershell', '-Command', 
  'Get-WmiObject win32_diskdrive | Select-Object -ExpandProperty SerialNumber'], 
  capture_output=True, text=True)
 output = result.stdout.strip().split('\n')
 if len(output) > 0: return output[0].strip()
 else: return "Серийный номер не найден!"

print("Серийный номер жёсткого диска:", get_hdd_serial())

def get_mac_address():
 mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
 return ":".join([mac[e:e+2] for e in range(0, 11, 2)])

print("MAC-адрес сетевой карты:", get_mac_address())

def get_cpu_id():
 result = subprocess.run(
  ['powershell', 
  'Get-WmiObject Win32_Processor | Select-Object -ExpandProperty ProcessorId'],
  capture_output=True, text=True)
 return result.stdout.strip()

print("Серийный номер процессора:", get_cpu_id())

print("\nНажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")
→ Ссылка
Автор решения: eri

Guid пользователя для windows. Dbus machine-id для линукс.

import subprocess
current_machine_id = subprocess.check_output(
    "dbus-send --system --print-reply=literal "
              "--dest=org.freedesktop.machine1 "
              "/org/freedesktop/machine1 "
              "org.freedesktop.DBus.Peer.GetMachineId",
    shell=True
).decode().strip()

import subprocess
current_machine_id = subprocess.check_output(
    "whoami /user", shell=True
).decode().split("\n")[-1].strip().split()[-1]
→ Ссылка