Запутывающий инструмент для кода Python3 - PullRequest
1 голос
/ 10 ноября 2011

Существует ли какой-либо существующий инструмент для запутывания кода Python для Python3?

Пожалуйста, не пытайтесь научить меня, что Python не является правильным выбором, если я хочу скрыть / запутать свой код.Или что правильные лицензии должны защищать код вместо обфускации ...

Обновление: этот вопрос не дублирует проблему Как защитить код Python? : я просто спрашиваю, есть лиэто инструмент, чтобы запутать Python.Не больше, не меньше.( Если его нет, я удивляюсь, почему я получаю так много отзывов ... )

Ответы [ 5 ]

5 голосов
/ 10 ноября 2011

Независимо от того, что вы делаете, в какой-то момент интерпретатор Python будет читать в необъясненном байт-коде Python.Исходя из этого, очень легко вернуться к исходному коду (без комментариев и неочевидного макета).Вот почему все говорят, что практически невозможно запутать Python.Тот факт, что Python практически невозможно скрыть, подразумевает, что для этого нет хороших инструментов.Боюсь, это просто желаемое за действительное, чтобы сказать: «Я знаю, что это нельзя сделать очень эффективно, но есть ли инструменты для этого?»

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

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

3 голосов
/ 16 ноября 2011

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

Если ваша программа достаточно проста и хорошо кодирована, создание исполняемых файлов с помощью cx-freeze, py2exe и др. Означаетчто файлы .pyc оказываются внутри исполняемого файла, и, следовательно, их немного сложнее найти, и также менее очевидно, что вы используете Python, так что это может помочь.Но что еще более важно, это может упростить установку для ваших пользователей.Им это нравится.

Если вы действительно хотите запутать свой код полезным способом, конвертируйте все это в Cython, который создаст C-файлы, которые вы можете скомпилировать.Это также ускорит программу.Однако Cython не полностью совместим с Python, поэтому вам, вероятно, придется вносить изменения.

И я знаю, что вы не хотите это слышать, но я скажу это в интересах других:

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

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

2 голосов
/ 10 ноября 2011

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

Инструменты, которые мне известны (вероятно, естьнесколько других):

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

Редактировать: Черт, пропустил часть Python 3.Немного сложно помочь, потому что вы ничего не пишете о самом продукте (ОС, GUI и т. Д.).Если это может быть также код Python 2, но вы уже написали весь свой код на Python 3, я предлагаю 3to2 .

1 голос
/ 02 апреля 2015

Pyminifier - это мини-код, обфускатор и компрессор кода Python.

Этот инструмент работает на Python 3

0 голосов
/ 16 ноября 2011

Лучший способ скрыть ваш код - не выпускать его.

Рекламируйте услугу - вы получаете их данные, а затем возвращаете обработанные данные.Передача может быть через Интернет, электронную почту, DHL, голубь, телефон, гравитон пульс, ...

...