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

StackOverflow https://stackoverflow.com/questions/475216

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

http://www.lysator.liu.se /~astrand/проекты/pyobfuscate/

но:

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

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

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

py2exe

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

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

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

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

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

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

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

пыпи

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top