pyboard - python for arm




Получить уникальный идентификатор компьютера в Python для окон и Linux (8)

Вызовите одну из них в оболочке или через канал в Python, чтобы получить серийный номер аппаратного обеспечения компьютеров Apple, работающих под управлением ОС X> = 10.5:

/usr/sbin/system_profiler SPHardwareDataType | fgrep 'Serial' | awk '{print $NF}'

или же

ioreg -l | awk '/IOPlatformSerialNumber/ { print $4 }' | sed s/\"//g

Кстати: MAC-адреса не являются хорошей идеей: в машине может быть> 1 сетевая карта, а MAC-адреса могут быть spoofed .

Я хотел бы получить уникальный идентификатор компьютера с Python в Windows и Linux. Это может быть идентификатор CPU, серийный номер материнской платы ... или что-то еще.

Я посмотрел несколько модулей (pycpuid, psi, ...) без везения.

Любая идея о том, как это сделать?


Для python3.6 и windows необходимо использовать декодирование

>>> import subprocess
... current_machine_id = subprocess.check_output('wmic csproduct get uuid').decode().split('\n')[1].strip()
... print(current_machine_id)


Смешной! Но uuid.getnode возвращает то же значение, что и dmidecode.exe .

subprocess.Popen('dmidecode.exe -s system-uuid'.split())

00000000-0000-0000-0000-001FD088565A

import uuid    
uuid.UUID(int=uuid.getnode())

UUID('00000000-0000-0000-0000-001fd088565a')


Я не думаю, что есть надежная кросс-платформа, способ сделать это. Я знаю одно сетевое устройство, которое меняет свой MAC-адрес как форму сообщения об ошибках аппаратного обеспечения, и есть миллион других способов, которые это может привести к сбою.

Единственное надежное решение для вашего приложения - назначить уникальный ключ для каждой машины. Да, это может быть подделано, но вам не нужно беспокоиться об этом, полностью разбираясь. Если вас беспокоит спуфинг, вы можете применить какую-то эвристику (например, изменение адреса mac), чтобы попытаться определить, был ли перемещен ключ.

ОБНОВЛЕНИЕ: вы можете использовать бактериальную отпечатки пальцев .



Кажется, нет прямого «питонного» способа сделать это. На современном оборудовании для ПК обычно есть UUID, хранящийся в BIOS - на Linux есть утилита командной строки dmidecode которая может это прочитать; пример с моего рабочего стола:

System Information
        Manufacturer: Dell Inc.
        Product Name: OptiPlex 755                 
        Version: Not Specified
        Serial Number: 5Y8YF3J
        UUID: 44454C4C-5900-1038-8059-B5C04F46334A
        Wake-up Type: Power Switch
        SKU Number: Not Specified
        Family: Not Specified

Проблема с MAC-адресами заключается в том, что обычно вы можете легко их программно изменить (по крайней мере, если вы запустите ОС в виртуальной машине)

В Windows вы можете использовать этот C API





hardware