Простая защита лицензии для приложения Python

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

У меня есть приложение Python стоимостью 5 долларов, которое я распространяю с помощью py2exe, py2app и источника для Linux. Приложение имеет годичную лицензию, чтобы люди могли перейти на более новую версию через год. Я хотел бы добавить какую-то простую лицензию для защиты одного года. Поскольку приложение составляет всего 5 долларов США, мне все равно, легко ли это обойти. Просто наличие чего-то побудит многих пользователей заплатить 5 долларов США, чтобы обновиться через год, а не игнорировать лицензию.

Обратите внимание, что:

  • Я хочу, чтобы источник был легко читаемым, поэтому нет обфускации
  • Я не хочу иметь скомпилированный код или SaaS
  • Я бы подумал о какой-то системе лицензионных ключей, если бы она была действительно простой, но не хотела ничего сложного

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

Есть ли лучшие решения для этого?

Ответ 1

Почему оператор if не сравнивает дату, а не тривиально решает это для вас?

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

Вы сказали, что код доступен для чтения. Что еще вы действительно могли сделать? У вас может быть много таких, если статусы... но grep или perl или другой python script также могут быстро найти их все и быстро исправить, чтобы снова работать. Если у вас есть рынок для вашего продукта за 5 долларов, раздраженный клиент может распространять дату, отключающую script своим друзьям или через Интернет.

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

Вы можете разместить уведомление DMCA рядом с критическим оператором if в исходном коде. Оператор if является мерой предотвращения использования после даты лицензии. Спросите хорошего адвоката. Ваш пробег может отличаться.

Википедия имеет это в DMCA в разделе "Anti-circumvention":

Обход контроля доступа Раздел 103 (17 U.S.C, раздел 1201 (a) (1)) государства DMCA: ни одно лицо не должно обойти технологическую меру который эффективно контролирует доступ к работа защищена под этим названием. Закон определяет, что это означает в разделе 1201 (a) (3): (3) Как используется в этом п -

(A), чтобы избежать технологического меру 」означает дешифрование скремблировать работу, расшифровывать зашифрованной работы или иным образом, чтобы избежать, обход, удаление, деактивация или нарушение технологической меры, без полномочия владельца авторских прав; и

(B) - технологическая мера 「Эффективно контролирует доступ к работа 」если мера, в обычном ход его работы, требует применения информации или процесса или лечения, с полномочия владельца авторских прав, получить доступ к работе. Таким образом, если существует некоторая "технологическая мера который эффективно контролирует доступ к работать", незаконно обходить эта мера. Однако раздел 1201 создает несколько исключений для этого правила, а Библиотека Конгресса уполномочены создавать дополнительные исключения.

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

Примечание. У Ричарда Столлмана, пионера бесплатного программного обеспечения, была теория, согласно которой конкуренция имеет тенденцию устранять анти-функции от программного обеспечения, такого как paywalls, раздражающие напоминания и т.д.

Ответ 2

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

https://github.com/Cryptolens/cryptolens-python