Подтвердить что ты не робот

Какой хороший способ однозначно идентифицировать компьютер?

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

Помимо использования MAC с сетевой карты, есть ли у кого-нибудь другие методы (работающие как с Windows, так и с Mac OS X) для уникальной идентификации компьютера?

4b9b3361

Ответ 1

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

Третье решение - предоставить менеджер лицензий. То есть, когда программное обеспечение запускается, он запрашивает сервер в сети (либо в локальной сети клиента, либо в вашей компании через Интернет), который проверяет, является ли использование программного обеспечения клиентом законным. Это хорошее решение для "параллельных лицензий", поэтому клиенты могут устанавливать ваше программное обеспечение на многих хостах, но вы лицензируете его для одновременного использования на ограниченном количестве хостов. FLEXnet Publisher является примером решения для управления лицензиями.

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

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

"Мы обновили наш сервер до гигабита сетевой адаптер, а теперь лицензия не будет работать, потому что новый адаптер имеет другой MAC-адрес.

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

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

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

Ответ 2

Я буду играть адвоката дьявола здесь и расскажу вам, что что-то вроде этого, вероятно, не лучшее, что можно обсудить в "публике".

С учетом сказанного посмотрите, что другие могли сделать и, возможно, улучшить (или взять часть). MAC-адрес, как вы уже сказали, возможно, подходит для использования. Я слышал, что Windows и другие программы используют информацию на жестком диске (серийный номер) - согласно этот сайт, Windows Activation проверяет 10 разных элементов и делает их уникальным ключом.

Ответ 3

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

Это, если бы это было реальное требование. Моя первая задача - попытаться убедить клиента в том, что это плохая идея.

Причина в том, что эти схемы практически никогда не позволяют взломать ваш код. Тем не менее, они делают жизнь ваших настоящих клиентов более сложной. Мне трудно думать о какой-либо другой отрасли, которая изо всех сил пытается раздражать своих настоящих клиентов схемами, которые никогда не достигают своих целей (кроме государственной службы, конечно: -).

Если вы должны сделать это, я просто сделаю токен, чтобы выполнить контрактные обязательства (не говорите об этом своему клиенту). Принимая MAC-адрес (или случайное число, если, $DEITY запретить, компьютер не имел сетевой карты) в качестве ключа запроса и с помощью программы просто XOR он со строкой ASCII, чтобы получить ключ активации, похоже на работоспособный подход. Я бы также сохранил оба ключа, так как вы не хотите, чтобы программное обеспечение деактивировалось, если они просто изменили свою сетевую карту (или даже материнскую плату) - они все еще видят это как тот же компьютер и не будут счастливы, если программное обеспечение перестанет работать.

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

Основной проблемой при использовании всех схем, которые полагаются на уникальность части оборудования, является то, что клиент может выбрать изменить этот бит аппаратного обеспечения:

  • ghosting их содержимое диска на больший жесткий диск приводит к серийным номерам HD.
  • Использование серийных номеров процессоров означает обновление до новейшего процессора Intel bigmutha, который убивает ваше программное обеспечение.
  • с использованием MAC-адреса означает, что они не могут изменить свою сетевую карту.

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

Ответ 4

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

Некоторые аппаратные части - MAC-адрес, серийный номер жесткого диска, даже серийный номер материнской платы и т.д. - это несколько хороших источников "уникальности", но, как вы знаете, клиент решает обновить часть, от которой зависит лицензия... быть готовым к некоторой поддержке клиентов. Также следует иметь в виду, что некоторые части могут быть подделаны (MAC является одним из них).

Проверка онлайн-лицензии - еще один хороший способ - вы можете управлять всем на стороне сервера и даже определять свои собственные правила (сколько лицензий на клиент/установку, concurrency и т.д.), но большая вещь для Заметьте, что происходит, когда соединение невозможно установить?

Ответ 5

Лучший способ - использовать UUID с помощью С# в Windows

Лучший способ уникальной идентификации машины Windows

public string GetUUID()
{
    var procStartInfo = new ProcessStartInfo("cmd", "/c " + "wmic csproduct get UUID")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    var proc = new Process() { StartInfo = procStartInfo };
    proc.Start();

    return proc.StandardOutput.ReadToEnd().Replace("UUID", string.Empty).Trim().ToUpper();
}

Ответ 6

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

Вещи, которые обновляются: -Память -MAC (могут быть подделаны, адаптеры USB подключены и т.д.)

Вещи, которые не обновляются часто: -ЦПУ -BIOS -Motherboard

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

wmic cpu get DeviceId /format:value

Это позволит получить идентификатор ЦП, вы можете запустить эту команду для:

1 - CPU (cpu: DeviceID) 2 - Материнская плата (плинтус: серийный номер) 3 - BIOS (bios: serialnumber)

если вы не получите хотя бы 2 заполненных значения, затем возьмите

4 - Сетевой адаптер - (nic: MACAddress) 5 - ОЗУ - (memphysical: SerialNumber)

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

Вы можете использовать схему обмена ключами Диффи-Хеллмана, чтобы пользователь сгенерировал пару private/pulic key с идентификатором своего оборудования в качестве полезной нагрузки, а затем передал эту информацию на сервер регистрации, где сервер регистрации использовал бы общедоступный/закрытый ключ для дешифрования полезной нагрузки и вычисления регистрационного ключа для возврата обратно конечному пользователю. Мне нравится использовать JWT для передачи вещей туда и обратно с его открытыми ключами, включенными в полезную нагрузку JWT. Надеюсь, что это поможет.

UUID был упомянут выше, и это отличная идея, которую вы можете получить с помощью:

wmic csproduct get UUID /format:vale

Отказ от ответственности эта команда работает только для Windows, я думаю, 2000 и выше, но вам нужно будет проверить, они, возможно, доступны для систем ниже 2000, но в этот момент я действительно стараюсь не поддерживать эти устройства. Удачи.

Ответ 7

Откройте Registry и перейдите к

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography

Найти ключ под названием "MachineGuid", этот ключ генерируется уникально во время установки Windows, и он не изменится независимо от какой-либо аппаратной замены (кроме замены загрузочного жесткого диска, на котором установлена ​​ОС). Это означает, что если вы хотите продолжать отслеживать установку на ОС, это еще одна альтернатива. Это не изменится, если вы не сделаете новую переустановку Windows.

Ответ 8

Раньше был серийный номер, запечатленный в CPU, насколько я видел; эта информация (PSN, серийный номер Pentium) устарела. Информация может все еще существовать, но, по крайней мере, в мире P3 она исчезла. Кроме того, я считаю, что очевидный выбор MAC-адреса на сетевом адаптере для основного интерфейса, используемого для хоста, следует рассматривать как реальную возможность. Если ваш клиент не ожидает, что интерфейсы Ethernet будут присутствовать на хостах, которые они продают.

Ответ 9

У меня есть опыт в этом. В моем решении мы предоставляем ключ услуги, когда мы продаем продукт клиенту.

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

Мы поддерживаем администраторское приложение в ключах активации активации. Мы предлагаем только один ключ активации для ключа для определенного сервисного ключа.

Мы продали несколько экземпляров, и он работает без проблем. Но потом мы узнали некоторые компьютеры, которые не предоставляют серийный номер материнской платы. Эти машины возвращают нулевое значение в качестве серийного номера материнской платы. все еще мы пытаемся решить эту проблему.

Ответ 10

Можно создать серийный ключ, который пользователь должен ввести один раз. Он должен включать адрес электронной почты пользователя (что-то вроде [email protected]). Это остановит многих людей от попыток вмешаться в это или передать их другим людям. Во время активации программное обеспечение должно проверять онлайн-db, если существует серийный ключ.

Ответ 11

Как насчет использования уникального серийного номера MotherBoard?

Ответ 12

Вы можете рассмотреть стороннюю лицензионную утилиту, которая, скорее всего, получит это "право", а также предоставит вам (или вашему клиенту) дополнительные параметры, если требования изменятся (и не всегда ли они?). Я бы упомянул некоторые конкретные по имени, но я их действительно не знаю.

Ответ 13

Или вы можете просто не иметь никакого кода активации и гарантировать, что у вас есть права на аудит, записанные в EULA, и время от времени выполняйте свое право на аудит.

Создает чудеса для Oracle.

Ответ 14

как о хэшировании чего-либо, у которого есть сгоревший SN, harddrive, proc, ram и т.д.... этот хеш останется с компьютером, пока он не заменит его.