Как получить hwid в Python?

Попробовал получить этим способом, но в переменную hwid не записывается, а просто выводится в консоль при исполнении функции, к тому же нужно таскать exe приложение. Есть ещё какой-нибудь способ получения hwid в питоне?


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

Автор решения: Insider

Ответ взят отсюда https://stackoverflow.com/a/4194146/3848611

Для Linux:

import sys, os, fcntl, struct

if os.geteuid() >  0:
    print("ERROR: Must be root to use")
    sys.exit(1)

with open(sys.argv[1], "rb") as fd:
    # tediously derived from the monster struct defined in <hdreg.h>
    # see comment at end of file to verify
    hd_driveid_format_str = "@ 10H 20s 3H 8s 40s 2B H 2B H 4B 6H 2B I 36H I Q 152H"
    # Also from <hdreg.h>
    HDIO_GET_IDENTITY = 0x030d
    # How big a buffer do we need?
    sizeof_hd_driveid = struct.calcsize(hd_driveid_format_str)

    # ensure our format string is the correct size
    # 512 is extracted using sizeof(struct hd_id) in the c code
    assert sizeof_hd_driveid == 512 

    # Call native function
    buf = fcntl.ioctl(fd, HDIO_GET_IDENTITY, " " * sizeof_hd_driveid)
    fields = struct.unpack(hd_driveid_format_str, buf)
    serial_no = fields[10].strip()
    model = fields[15].strip()
    print("Hard Disk Model: %s" % model)
    print("  Serial Number: %s" % serial_no)

для Windows:

import wmi
c = wmi.WMI()
for item in c.Win32_PhysicalMedia():
    print item

https://pypi.org/project/WMI/

Либо:

import win32api
print win32api.GetVolumeInformation("C:\\")

http://python.net/crew/mhammond/

Если Вам будет нужна еще какая-либо информация - https://www.thepythoncode.com/article/get-hardware-system-information-python

→ Ссылка
Автор решения: Jairman

Я немного идиот и неправильно задал вопрос, оказывается хотел я не номер жёсткого диска, но в итоге нашёл, что нужно.

from wmi import WMI  
a = WMI().Win32_ComputerSystemProduct()[0].UUID
print(a)
→ Ссылка