2009-02-23 5 views
35

Знаете ли вы о каком-либо инструменте, который мог бы помочь мне в запутывании кода python?Python Code Obfuscation

+99

Конвертировать в Perl? Бум, бум, спасибо за прослушивание, я здесь всю неделю :-) – paxdiablo

+1

Дубликат: http://stackoverflow.com/questions/261638/how-do-i-protect-python-code –

+0

И более общее обсуждение: http : //stackoverflow.com/questions/164137/how-do-i-deploy-a-python-desktop-application – tzot

ответ

5

Во многих ситуациях вы можете грузят байт скомпилированные .pyc файлов вместо .py исходных файлов. Это дает вам некоторый уровень обфускации. Как предполагает pyobfuscate README, это имеет ограничения. Но вы можете комбинировать два подхода.

15

Ваше проблемное пространство недоказано. Это для приложения командной строки? Этот код предполагается использовать в качестве библиотеки?

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

py2exe или freeze - это другое решение, которое преобразует код в исполняемый файл. Он просто включает код в двоичном формате и не делает какого-либо серьезного обдумывания, но все равно сложнее открыть файл .py.

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

Все они взломаны, как и все решения. Как вам тяжело это быть?

+6

+1 для Cython, которую я недавно использовал, и нашел, что она очень хороша в что оно делает. – Dan

+0

Какое самое простое решение для использования, если я просто не хочу, чтобы простой 'decompyle' был возможен? – Basj

4

Стандартная библиотека Python включает в себя compileall.py. Вы можете запустить это в каталоге, и он будет генерировать файлы .pyc для всех ваших исходных файлов. Файлы .pyc будут включать только байт-коды и docstrings, а также исключить все комментарии. Затем вы можете скопировать этот каталог, а затем запустить что-то вроде rm -rf $(find . -name .py), чтобы удалить исходные исходные файлы.

2

Ваш лучший выбор - скомпилировать его, используя Shed Skin, экспериментальный компилятор Python-to-C++.

+0

Существует также Pypy, но он недокументирован и очень ограничен в коде, который он принимает. – Antimony

+0

@ Anthony: Вы говорите о RPython?PyPy (который использует RPython) - это полная реализация Python и вовсе не ограничена в коде, который он принимает. –

+0

@John Да, я говорю о RPython. Это часть проекта PyPy. – Antimony

6

Я действительно нашел очень хороший проект, который в основном преобразует Python в C++ и создает двоичный, статически связанный файл.

Проверьте это: http://www.nuitka.net/

0

Хотя это не делает запутывание, это Python recipe очень хорошо работает для минимизации размера кода Python, в том числе зачистки комментариев.