How to prevent python decompile procedure?
Unfortunatly, python is a interpretation programming language
How we can defence our authority rights?
One way: use gcc and write python module for some critical data, for example some often used function or constats.
Как защитить python-код от декомпиляции?
Хреновость состоит в том что python является интерпритационным языком, а как известно любые программы компиляции в байт-код несостоятельны против декомпиляторов.
(такие процедуры как py_compile.compile или даже py_installer - это все не годится)
Проще говоря если хочешь защитить код то стандартным способом из python это хрен сделаешь. Как быть? Ответ один: использовать пакет для python development и писать python-модуль который будет содержать некие критические данные, будь-то функции или константы.
apt-get install python-dev
Напишем-ка для примера модуль одна функция которого будет возвращать login для сайта superjob
#include <Python.h>
char *
_SJ1LOGIN(void)
{
return "sj1loginname";
}
static PyObject*
SJ1LOGIN(PyObject* self, PyObject* args)
{
return Py_BuildValue("s", _SJ1LOGIN());
}
static PyMethodDef SecureMethods[] = {
{"sj1login", SJ1LOGIN, METH_NOARGS, "superjob login name"},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC
initsecuredata(void)
{
(void) Py_InitModule("securedata", SecureMethods);
}
Так же создадим в том же каталоге py-файлик для компиляции этого всего дела и назовем его setup.py
from distutils.core import setup, Extension
module1 = Extension('securedata', sources = ['securedata.c'])
setup (name = 'securedata',
version = '1.0',
description = '',
ext_modules = [module1])
делаем
python setup.py build
в каталоге build ищем securedata.so
далее это дело можно подцепить из ipython:
import securedata
print(securedata.sj1login())
что и требовалось доказать
литература: