Pull to refresh

Comments 16

В своё время так и сделал с защитой - компилируешь обычный питон скрипт в .o и всё. Из проблем только - сборку настроить.

Думали переписать на компилируемый язык, но и Go и Cython - это время. А в нашем случае выносить очень много.

А разве на Cython нужно переписывать? Вроде как достаточно просто скомпилировать питоновский скрипт и уже он будет "защищён", плюс станет работать чуточку быстрее.

Если в Cython просто в лоб засунуть Питоновский код, то на выходе получится питоновский же байткод, завёрнутый в бинарник. Чтобы Cython что-то компилировал, нужно код размечать.

Просто берём Nuitka, который делает файлы, работающие так же как .pyc но гораздо труднее читаемые. Потому что там стандартный загрузчик и скомпилированный код. Сломать простую защиту в таком коде не проще и не сложнее, чем в скомпилированном С++ - то есть элементарно. А вот понять всю логику, конечно, будет уже напряжнее. В первую очередь, как и с Denuvo - из -за отсутствия хороших инструментов для реверса такой системы.

Из сложностей - код придётся разметить, и с Django мало кто пробовал его использовать.

P.S. А ещё существует Cython.

Спасибо за совет! Посмотрю в эту сторону.

Аналогичная задача — защита кода.


Просто берём Nuitka ...

Смотрел в сторону Nuitka. Интересное решение.
У вас получилось использовать в коммерческих продуктах?

Мои коммерческие продукты защищены в первую очередь Законом Неуловимого Джо. А Nuitka это в основном чтобы не подключать весь вычислительный стек чтобы один раз файл декодировать.

Красиво ответили.
Нужно будет показать ваш ответ знакомому адвокату. Пусть поучится.

UFO just landed and posted this here

Почему бы не использовать зашифрованную ВМ в качестве локального сервера? Вроде как даже вполне рабочий костыль

Так python же - компилируемый язык программирования!

Шучу, но в каждой шутке есть доля правды. Посмотрите код pydantic. Там, вроде, после сборки получаются so файлы. Правда, в Django много метамагии, может и не сработать. Но хоть критичную бизнес часть можно попробовать пересобрать.

Как уже упомянули, nuitka это прекрасное решение вашей проблемы. А если вместе с ней использовать pyarmor на максимальном уровне обфускации, то вообще нечитабельно будет. Такое просто лень реверсить будет.

На заре этого проекта я еще игрался с Numba, но не осилил. Привет бывшим коллегам ;)

Sign up to leave a comment.

Articles