Каким должен быть уникальный идентификатор машины? Идентификатор материнской платы? Идентификатор продукта Windows?

Я хочу получить уникальный идентификатор машины.

Как и другие, я также провел много исследований и обнаружил, что ни один процесс генерации уникальных идентификаторов не работает идеально.

Серийный номер (ID) материнской платы: он уникален; это не может быть изменено. Тем не менее, он может быть не найден на некоторых машинах, если производители не поместили информацию в ячейку памяти. Тогда я обнаружил, что это не дает уникальный идентификатор.. LOL

Аналогично для "Идентификатор процессора", "Идентификатор BIOS".

Боюсь использовать другую информацию об оборудовании ПК.

MAC и Windows Product ID могут быть изменены программным обеспечением.

И уникален ли "идентификатор продукта Windows"?

Один из вариантов - объединить их, но что если комбинация не уникальна, если применяются вышеуказанные условия?

Есть ли другой способ найти уникальный идентификатор машины?


Изменить: я хочу создать серийный ключ на основе этого уникального идентификатора для защиты от компьютерного пиратства. "Машина" означает целевой компьютер, на котором я должен установить программное обеспечение. @Guge: Спасибо за упоминание.

4 ответа

Поскольку некоторые из этих идентификаторов могут отсутствовать, и пользователи могут менять компоненты, вам нужно решить, что вы подразумеваете под "машиной".

Например, я бы посмотрел на идентификатор материнской платы, идентификатор процессора и идентификатор BIOS, поскольку они с наименьшей вероятностью изменятся. Затем я посмотрел бы все три и позволил бы одному отсутствовать и / или измениться с прошлого раза. Если эти условия соблюдены, то позвольте программному обеспечению работать.

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

Уникальный идентификатор машины?

Как вы обнаружили, не существует такой вещи, как "Уникальный идентификатор машины".

Вам необходимо определить свои требования и использовать идентификатор (возможно, выделенный вами), который отвечает этим требованиям. Например, для веб-приложения cookie с идентификатором GUID может быть достаточно для различения анонимных пользователей (небольшое количество пользователей, использующих несколько браузеров или в "приватном" режиме, можно игнорировать).

Для управления системами достаточно назначить GUID на системном уровне (несколько установок ОС с мультизагрузкой нужно отслеживать отдельно в любом случае).

...

Если вы пытаетесь отследить уникальные компьютеры в ситуации, когда владелец компьютера намеренно пытается обойти вашу уникальную проверку, например бесплатную компьютерную игру, в которой требуется только одна учетная запись на игрока, я видел подобный подход, упомянутый выше, но с использование некоторого шифрования.

Соберите или попытайтесь собрать несколько частей относительно стабильной информации о ПК (The MotherboardID / MAC-адрес / BIOS), объедините их с префиксом соли и затем зашифруйте их, используя простой бесплатный алгоритм. Этот ключ - то, что вы сохраняете для этого игрока вместе с его идентификатором пользователя, аналогично тому, как пароли шифруются. Этот ключ будет довольно хорошим уникальным идентификатором "Машины", который вы можете проверять каждый раз, когда они входят в систему.

Есть несколько фрагментов компьютерной информации, к которым вы можете обратиться, в зависимости от того, насколько рискованным вы хотите быть с обычными людьми, которые меняют свои компоненты, но до тех пор, пока вы не получите пустых мест для всего, что вы проверяете, вы должны быть в полной безопасности.

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

      from pathlib import Path
import uuid

seedfile = Path(".HOST_UUID")
if not seedfile.exists():
    UUID = uuid.uuid4()
    seedfile.write_text(str(UUID))
else:
    UUID = seedfile.read_text().strip()
print(UUID)
Другие вопросы по тегам