Как узнать информацию о компьютере с 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 шт):
предлагаю использовать mac адрес. и обязательно шифровать. например: берем мас адрес компьютера Х и генерируем контрольную сумму sha. это и будет id. т.е. пишешь, чтобы клиент в бд отпраалял не мас, так как эта инфа конфиденциальная, а чексум.
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")
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]