Возможно ли распространять только версию байт-кода (.pyc-файла) скрипта Python вместо исходного .py-файла? Мое приложение внедряет интерпретатор Python и вызывает PyImport_Import для загрузки сценария. Как я могу сказать, что он ищет файл .pyc и импортирует его?Как защитить исходный код Python?
ответ
Я сделал это, создав .py-библиотеку и простую .py-программу, которая использует эту библиотеку. Затем я скомпилировал библиотеку для .pyc и распространял: программу как .py исходный код и библиотеку как скомпилированный .pyc.
Это может сработать. Я попробую. –
Работал как шарм! Благодарю. –
Это не будет действительно защищать ваш источник, поскольку байт-код .pyc легко декомпилируется с помощью таких инструментов, как Uncompyle6: https://pypi.python.org/pypi/uncompyle6 –
Это не должно быть проблемой, если вы создаете автономную программу, используя py2exe, вы получаете только файлы .pyc.
Обычно вам не нужно указывать python на поиск файлов .pyc, так оно и есть. Только если есть более новый .py исходный файл, это используется.
Однако уровень защиты вашего исходного кода может быть не очень высоким.
Мое приложение написано на C++, а не на Python. py2exe не вариант. Я имею в виду API Python/C. –
Используйте инструмент freeze, который входит в исходное дерево Python как Tools/freeze. Он преобразует байт-код Python в массивы C; с компилятором C вы можете вставлять все свои модули в новую программу, которая затем связана со стандартными модулями Python.
Обратите внимание, что для замораживания требуется компилятор C.
Другие утилиты:
1- PyInstaller
2- Py2Exe
3- Squeeze
4- cx_freeze
Сценарии распространяются отдельно от приложения. –
поэтому распространяйте скрипты отдельно ... есть ли какие-либо проблемы? –
Ну ... скрипты тоже не являются его частью. На самом деле некоторые третьи стороны напишут некоторые из них - и им не нужно будет устанавливать компилятор только для их написания. –
В интерактивном интерпретаторе, это автоматически - если нет .py, то .pyc еще будет использоваться:
$ echo 'print "hello"' > test.py
$ python -m compileall .
$ rm test.py
$ python -m test
hello
$
Не могли бы вы просто попробовать, если это работает так же, как с API?
Отредактировано для добавления: Я согласен с Ber в том, что ваша защита кода будет довольно слабой. -O удалит docstrings, если это не изменит поведение вашей программы, что может затруднить восстановление поведения, но то, что вам действительно понадобится для обфускации байткода.
Я не знаю, если готовый инструмент запутывания существует для питона, но this звучит жизнеспособным, если вы хотите/может инвестировать время (и не чувствовать себя слишком глупо это делать, и можешь отправляйте свой собственный переводчик).
Я попробую, когда у меня появится такая возможность. Если я правильно помню, это не сработало. –
Я попробовал. Это не сработало. –
Поскольку вы пишете свою основную программу на C++, вы можете делать все, что хотите защитить свои файлы на Python. Вы можете зашифровать их для распространения, а затем дешифровать их как раз вовремя, чтобы импортировать их в интерпретатор Python, например.
Поскольку вы используете PyImport_Import, вы можете написать свой собственный крюк __import__
для импорта модулей не из файла, а из буфера памяти, поэтому ваше преобразование в .pyc-файл может происходить в памяти, без понятного кода Python на диск вообще.
+1 для шифрования –
Слишком сложно для третьих лиц ... –
- 1. Как защитить исходный код?
- 2. Как защитить исходный код приложения
- 3. как защитить исходный код партии?
- 4. Golang: защитить исходный код
- 5. Скрыть/защитить код Python
- 6. Как защитить исходный код веб-приложений PHP
- 7. Android-Как защитить мой исходный код
- 8. Как я могу защитить свой исходный код
- 9. Как защитить исходный код в электронном проекте
- 10. Собственный клиент Google - как защитить исходный код?
- 11. Как защитить исходный код при его развертывании?
- 12. Как защитить исходный код хром-упакованного приложения?
- 13. Защитить исходный код от угона iOS
- 14. Минимированный JavaScript - единственный способ защитить исходный код?
- 15. Защитить исходный код при доставке клиенту
- 16. Защитить исходный код веб-сайта ASP.NET
- 17. как зашифровать исходный код python?
- 18. Как преобразовать исходный код python в исходный код C++
- 19. Исходный код Python/package
- 20. Исходный код HTML Python
- 21. Grabbing Python исходный код
- 22. Как защитить исходный код php, размещенный в SD-карте?
- 23. Как скрыть или защитить исходный код PhoneGap с Android apk
- 24. Как защитить исходный код при развертывании на разных компьютерах
- 25. Как защитить исходный код PHP при продаже веб-сайта клиентам?
- 26. Как вы действительно можете защитить свой Javascript/JQuery исходный код?
- 27. Любая подсказка о том, как защитить исходный код моего сайта?
- 28. Как я могу защитить исходный код моего приложения Firefox OS?
- 29. Исходный код для модулей Python
- 30. Защитите исходный код Android
Duplicate: http://stackoverflow.com/questions/261638/how-do-i-protect-python-code –
Разница между этим вопросом и 261638 заключается в том, что это код Python, встроенный в C++, который обеспечивает более интересные возможности влиять на загрузку кода Python. –