Как защитить Python-код от модификации?

Jul 02, 2015 13:48







Многие задаются вопросом - как скрыть исходный код написанных на питоне скриптов, чтобы затем можно было например продавать эти скрипты. В своё время и мы задались этим вопросом, в следствии чего со временем нашли его решение.

Можно было бы просто отдавать клиентам байт-код, который создает python при первом запуске скрипта. Например, запустили test.py, рядом появился test.pyc, его и продаем. Однако в сети есть скрипты, которые восстанавливают из него исходный код с точностью до байта.

Поэтому, чтобы закрыть сорцы скрипта - его надо скомпилировать. Для этого, с помощью расширения cython его можно перевести в Си код, который и скомпилировать обычными инструментами, вроде make.
Рассмотрим решение пошагово:
- Конвертируем python-скрипт в Си:

cython -3 СКРИПТ.py

Получаем СКРИПТ.c - это исходный код python-модуля, который выполняет то же самое что и питон-скрипт.

Компилируем полученный Си-файл:

gcc -pthread -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python3.3m -c СКРИПТ.c -o СКРИПТ.o

Получаем объектный файл СКРИПТ.о
Осталось слинковать его в бинарник. Так как примеры выполняются на линуксе, он будет иметь расширение .so:
На Windows расширение будет .pyd

link = gcc -pthread -shared СКРИПТ.o -o СКРИПТ.so

Таким образом мы имеем новый модуль для питона "СКРИПТ.so",
который можно импортировать в код других скриптов:

import СКРИПТ

http://python-3.ru/page/python-code-compile

команды, python, утилита, библиотеки, шифрование, конвертация, windows, linux, скрипты, gcc, разное, консоль, coding

Previous post Next post
Up