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

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

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

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

Ответы [ 5 ]

12 голосов
/ 24 января 2009

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

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

7 голосов
/ 24 января 2009

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

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

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

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

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

5 голосов
/ 24 января 2009

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

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

3 голосов
/ 24 января 2009

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

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

но:

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

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

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

1 голос
/ 11 февраля 2009

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.

...