● Экспорт модулей через Cython с последующей защитой через Sentinel Envelope
Первый вариант защищает Python приложения, комбинируя Sentinel Envelope с Sentinel Data File Protection (DFP). Таким образом, защищается непосредственно интерпретатор Python, которому на уровне защиты указывается, с какими файлами он должен работать как с защищенными (зашифрованными), следовательно, такие файлы интерпретатор будет предварительно автоматически расшифровывать и только затем выполнять. Незашифрованные файлы будут работать также, как и ранее. Сами *.py модули, требующие защиты шифруются с помощью инструмента Sentinel Data File Protection (DFP).
- 1 Метод #1: защита через шифрование данных (Sentinel Data File Protection)
- 2 Метод #2: экспорт модулей через Cython и защита с помощью Sentinel Envelope
Метод #1: защита через шифрование данных (Sentinel Data File Protection)
Защита приложения Python с помощью Sentinel Data File Protection состоит из трех этапов:Примеры защиты
Для Windows
После установки Sentinel LDK пример, демонстрирующий защиту Python приложения для Windows с помощью Sentinel Data File Protection, можно найти в директории:C:\Users\<username>\Documents\Gemalto\Sentinel LDK version\Samples\Envelope\Python \data_file_protection
Прилагаемые скрипты демонстрируют защиту простого Python приложения, которое можно найти в директории:
Этот сценарий защищает и упаковывает пример приложения для Python3 для Windows, с использованием: кода разработчика DEMOMA, Sentinel Envelope, утилиты шифрования файлов данных для Sentinel LDK (dfcrypt) и pyinstaller
Файл проекта Sentinel Envelope, в котором указаны параметры Envelope для защиты интерпретатора Python3 (python37.dll) для приведенного выше сценария.
Для Linux
Пример, демонстрирующий защиту Python приложения для Linux с использованием Sentinel Data File Protection, можно найти в директории:Этот сценарий защищает и упаковывает пример приложения для Python2 для Linux с использованием: кода разработчика DEMOMA, Sentinel Linux Envelope, утилиты шифрования файлов данных для Sentinel LDK (dfcrypt) и pyinstaller.
Этот сценарий защищает и упаковывает пример приложения для Python3 для Linux с использованием: кода разработчика DEMOMA, Sentinel Linux Envelope, утилиты шифрования файлов данных для Sentinel LDK (dfcrypt) и pyinstaller.
Процесс защиты
Шаги для создания защищенного приложения с использованием Sentinel Data File Protection и Sentinel Envelope:Сборка приложения и зависимостей в *.py модуль
Запустите pyinstaller с параметрами: "-d noarchive" для требующего защиты*.py модуля, например:Шифрование *.py модулей
Используйте dfcrypt для шифрования чувствительных модулей байт-кода вашего приложения, например:dfcrypt --encrypt --encver:2 "--key:A secret" --vcf:DEMOMA.hvc --fid:0 dist/<application_name>/moduleA.pyc encrypted/moduleA.pyc
dfcrypt --encrypt --encver:2 "--key:a secret" --vcf:DEMOMA.hvc --fid:0 dist/<application_name>/moduleB.pyc encrypted/moduleB.pyc
Защита интерпретатора Python
Защитите с помощью Envelope библиотеку интерпретатора Python (*.dll / *.so) с поддержкой возможности чтения зашифрованных файлов данных:linuxenv --vcf:DEMOMA.hvc --fid:0 --dfp dist/<app_name>/libpython2.7.so.1.0 dist/<app_name>/libpython2.7.so.1.0
Ключ «--dfp» активирует Data File Protection, что позволяет защищенному интерпретатору Python выполнять зашифрованные модули Python.
Метод #2: экспорт модулей через Cython и защита с помощью Sentinel Envelope
Защита приложения Python с помощью Cython и Sentinel Envelope состоит из трех этапов:- Переведите ваши модули Python (*.py) в C-Code, используя Cython.
- Скомпилируйте полученные C-файлы в модули расширения Python (*.pyd / *.so), используя C-компилятор для вашей платформы1.
- Защитите полученные модули расширения Python (*.pyd / *.so) с помощью Sentinel Envelope.
Примеры защиты
Для Windows
После установки Sentinel LDK пример, демонстрирующий защиту приложения Python для Windows с использованием Cython и Sentinel Envelope, можно найти в директории:C:\Users\<username>\Documents\Gemalto\Sentinel LDK version\Samples\Envelope\Python \cythonize_and_envelope
Скрипты демонстрирующие защиту простого приложения Python, которое можно найти в директории:
Файл проекта Sentinel Envelope, который задает параметры Envelope для защиты расширений Python (moduleA.pyd, moduleB.pyd), которые были созданы с помощью приведенного выше сценария.
Файл проекта Sentinel Envelope, который задает параметры Envelope для защиты расширений Python (moduleA.pyd, moduleB.pyd), которые были созданы с помощью приведенного выше сценария.
Для Linux
Пример защиты приложения Python для Linux с использованием Cython и Sentinel Envelope можно найти в директории:Этот сценарий защищает и упаковывает приложение для Python2 под Linux с использованием: кода разработчика DEMOMA, Cython, GCC, Sentinel Envelope и pyinstaller.
Этот сценарий защищает и упаковывает приложение для Python3 под Linux с использованием: кода разработчика DEMOMA, Cython, GCC, Sentinel Envelope и pyinstaller.
Процесс защиты
Шаги для создания защищенного приложения с использованием Cython и Sentinel Envelope:Трансляция *.py модулей в C-Code с использованием Cython
Для защиты необходимо сначала изменить расширение вашего модуля Python с *.py на *.pyx, потому что это позволяет Cython генерировать код, который может быть лучше защищен с помощью Sentinel Envelope.Cython может быть установлен с использованием командыСборка C-Файлов в нативное Python приложение (исполняемый файл)
Для Windows:Установите требуемый компилятор:● Python2: Microsoft Visual C++ Compiler для Python 2.7
● Python3: Microsoft Build Tools для Visual Studio 2019 https://visualstudio.microsoft.com/ru/downloads/
Запустите консоль (cmd-shell) и выполните команду:
● Python2: C:\Users\<username>\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat" amd64
● Python3: C:\<vs_build_tools_install_dir>\VC\Auxiliary\Build\vcvarsall.bat" amd64
● Python2: cl /nologo /c /MD /Ox /W3 /I C:\Python27\include moduleA.c link /nologo /dll -out:moduleA.pyd C:\Python27\libs\python27.lib moduleA.obj
● Python3: cl /nologo /c /MD /Ox /W3 /IC:\Python37\include moduleA.c link /nologo /dll -out:moduleA.pyd C:\Python37\libs\python37.lib moduleA.obj
В результате получите модуль расширения Python для Windows (moduleA.pyd).Для Linux:Установите GCC-Compiler с помощью менеджера пакетов вашего дистрибутива Linux, например следующей командой в консоли:
apt install gcc
Установите пакет разработчика Python, используя менеджер пакетов вашего дистрибутива Linux, например:
apt install python2-dev
или
apt install python3-dev
● Python2: gcc -fPIC -pthread -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.7 -c moduleA.c gcc -pthread -shared moduleA.o -o moduleA.so
● Python3: gcc -fPIC -pthread -fwrapv -O2 -Wall -fno-strict-aliasing -I "/usr/include/python3.7" -c moduleA.c gcc -pthread -shared moduleA.o -o moduleA.so
В результате получите модуль расширения Python для Linux (moduleA.so).
Защита нативного Python приложения (исполняемого файла) с помощью утилиты Envelope
Пример команды для защиты для Linux:linuxenv --vcf:DEMOMA.hvc --fid:0 plain/moduleA.so prot/moduleA.so
Для Windows используйте Sentinel Envelope точно так же, как при защитите обычного dll/exe файла.