Какой самый простой генератор лицензионных ключей я могу разработать за 1 день?

Это просто для того, чтобы честный клиент оставался честным.


person Teo Choong Ping    schedule 12.11.2009    source источник


Ответы (7)


Есть ли ограничения операционной системы? Я думаю, что следующий подход будет довольно простым:

  1. Выберите способ получения идентификатора машины. Например, это может быть MachineGuid запись реестра в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography. (Создание уникального идентификатора машины)

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

  3. Создайте пару открытого / закрытого ключей.

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

  5. Каким-то образом объедините идентификатор функции и идентификатор машины и подпишите результат своим закрытым ключом. Например, вы можете создать эту комбинацию путем конкатенации. В этом случае строка результата может выглядеть так: "YourApplicationName-12345678-9abc-def0-1234-56789abcdef0"

  6. Подпись будет представлять собой последовательность байтов, поэтому, если вы хотите передать ее в текстовой форме, вам следует произвести в нее некоторое преобразование. Например, вы можете преобразовать подпись в строку Base64. Комбинация идентификатора функции, идентификатора машины и их комбинации будет лицензионным ключом!

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

Подробнее об операциях с открытым / закрытым ключом здесь.

Скажите, если что-то непонятно, я постараюсь дать развернутый ответ.

РЕДАКТИРОВАТЬ: Я уверен, что реализовать все это можно за 1 день, но я согласен с другими, которые предлагают вам использовать существующие решения. Их много для разных платформ и языков программирования.

person okutane    schedule 12.11.2009

Почему бы тебе просто не получить его от кого-то другого. Если вы готовы потратить только один день, вы не получите хороший продукт.

person Community    schedule 12.11.2009
comment
Что ж, мне всегда было любопытно, как это делают профессионалы, так что это может быть хорошим шансом научиться. - person Teo Choong Ping; 12.11.2009
comment
Если профессионал решит написать такое решение самостоятельно, он потратит больше 1 дня. - person okutane; 13.11.2009

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

person Daniel    schedule 12.11.2009
comment
Лучше не вдаваться в аргументы DRM здесь, я указываю вам на мою подборку причин, почему DRM неправильный: superuser.com/questions/14224/how-to-explain-drm-cannot-work/ Это не значит, что вы не должны Защитите свою программу вообще, просто еще больше DRM - больше проблем для законных пользователей. Лицензионного ключа обычно достаточно, чтобы предотвратить явное пиратство вашего программного обеспечения. - person RCIX; 12.11.2009

Поместите возможности продукта (количество пользователей, IP-адрес хоста, дату истечения срока действия и т. Д.) В текстовый файл. Подпишите файл открытым ключом, затем проверьте подпись во время выполнения.

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

person Will Hartung    schedule 12.11.2009
comment
IP-адрес хоста не кажется хорошим параметром, ноутбуки меняют его как минимум два раза в день. - person ZJR; 12.11.2009

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

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

Если вы все же хотите это сделать, самый простой способ - собрать некоторые данные, уникальные для установки (имя пользователя ОС, адрес электронной почты, серийный номер процессора / материнской платы - все, к чему вы хотите привязать), попросите пользователя отправить их вам и сгенерируйте лицензионный ключ, зашифровав его своим закрытым ключом. Ваше программное обеспечение должно собирать одни и те же данные, расшифровывать лицензию с помощью вашего открытого ключа и сравнивать два больших двоичных объекта.

person Franci Penov    schedule 12.11.2009

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

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

person Dani    schedule 12.11.2009
comment
Что произойдет, если пользователь изменит свой mobo или другой соответствующий параметр - Не очень хорошая идея, я не хочу получать новый лицензионный ключ при обновлении моего компьютера. и что произойдет, если кто-то еще запросит лицензионный ключ с вашей электронной почты? Хм? - person RCIX; 12.11.2009
comment
A. Я не верю в лицензионные ключи, но если вы достаточно заботитесь о них, то да, когда пользователь обновляет свое оборудование - это проблема (у Microsoft была эта проблема с лицензированием Vista - вам нужно будет повторно активировать перспектива, если вы измените МБ или иногда даже видеоплату), Если вы отправите лицензию только на запрошенный адрес электронной почты и отзовете старую лицензию при поступлении нового запроса, владелец электронной почты, который является первоначальным владельцем лицензии, не будет иметь проблем . но вы правы в том, что на этом пути есть что учесть. - person Dani; 12.11.2009
comment
исправление к комментарию. Первоначальный владелец должен будет повторно отправить запрос на лицензию. - person Dani; 12.11.2009

Самый простой генератор лицензий: ini-файл с заполненной контрольной суммой, который содержит имя клиента и информацию о том, какие модули включены. Взломать его будет довольно легко, но для не-хакера это безопасно. Имя должно быть видимым в выходных данных приложения, которые отображаются публично, чтобы другие потенциальные клиенты не могли использовать файл лицензии.

person Lars D    schedule 12.11.2009