Приложения Python: Можете ли вы как-нибудь защитить свой код?

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

Если нет лучшего способа, какие варианты доступны?

Справочная информация: я люблю писать на Python и хотел бы выпустить больше приложений с ним. Одна вещь, которая меня интересует, - это возможность людей обойти любой лицензионный код, который я вставил, или возможность просто сорвать всю мою исходную базу. Я слышал о Py2Exe и подобных приложениях, но мне любопытно, есть ли "предпочтительные" способы сделать это, или эта проблема - просто факт жизни.

5 ответов

Решение

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

Если вы беспокоитесь о том, что они изучают ваш алгоритм безопасности (например, криптографию), то же самое применимо. Реальные, полезные алгоритмы безопасности (такие как AES) безопасны, хотя алгоритм полностью известен.

Даже если вы используете скомпилированный язык, такой как C# или Java, люди могут выполнять обратный инжиниринг, если они мотивированы и технически компетентны. Запутывание не является надежной защитой от этого.

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

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

Пример: Slashdot фактически делает доступным свой код для своего сайта. Вредит ли это их способности управлять своим сайтом? Нет.

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

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

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

Слово, которое вы ищете, является запутанным. Быстрый Google показывает:

http://www.lysator.liu.se/~astrand/projects/pyobfuscate/

но:

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

б) Также возможно получить прибыль от приложений с открытым исходным кодом, если вы умны в этом.

c) Если вы хотите, чтобы ваша Интеллектуальная собственность была действительно защищена, то единственный ответ - не давать кому-либо иметь ее в первую очередь: напишите ваше приложение как веб-приложение (я рекомендую использовать django), и только ваш провайдер веб-хостинга имеет доступ к вашему коду.

py2exe

В windows py2exe - это один из способов доставки кода конечным пользователям, py2exe объединяет интерпретатор python, необходимые библиотеки DLL и ваш код, скомпилированный в байт-код python.

Вот инструкции байт-кода python, чтобы понять, как это выглядит:

http://www.python.org/doc/2.5.2/lib/bytecodes.html

Или вы можете использовать dis, чтобы разобрать некоторые файлы pyc / pyo.

Таким образом, использование py2exe похоже на распространение скомпилированных файлов python (pyc/pyo).

Shedskin C++ компилятор

Компилятор Shedskin компилирует подмножество python в C++, которое вы можете скомпилировать в собственный код, используя любой компилятор.

PyPy

Я не слишком много знаю о PyPy. Согласно их документам Pypy может генерировать C-код.

Другие вопросы по тегам