четверг, 14 мая 2015 г.

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())

что и требовалось доказать
литература:


Комментариев нет:

Отправить комментарий