Comments 16
Выносить критичные части в Сython?
В своё время так и сделал с защитой - компилируешь обычный питон скрипт в .o и всё. Из проблем только - сборку настроить.
Думали переписать на компилируемый язык, но и Go и Cython - это время. А в нашем случае выносить очень много.
А разве на Cython нужно переписывать? Вроде как достаточно просто скомпилировать питоновский скрипт и уже он будет "защищён", плюс станет работать чуточку быстрее.
Просто берём Nuitka, который делает файлы, работающие так же как .pyc но гораздо труднее читаемые. Потому что там стандартный загрузчик и скомпилированный код. Сломать простую защиту в таком коде не проще и не сложнее, чем в скомпилированном С++ - то есть элементарно. А вот понять всю логику, конечно, будет уже напряжнее. В первую очередь, как и с Denuvo - из -за отсутствия хороших инструментов для реверса такой системы.
Из сложностей - код придётся разметить, и с Django мало кто пробовал его использовать.
P.S. А ещё существует Cython.
Спасибо за совет! Посмотрю в эту сторону.
Аналогичная задача — защита кода.
Просто берём Nuitka ...
Смотрел в сторону Nuitka. Интересное решение.
У вас получилось использовать в коммерческих продуктах?
Почему бы не использовать зашифрованную ВМ в качестве локального сервера? Вроде как даже вполне рабочий костыль
https://github.com/Omyyyy/pycom
Так python же - компилируемый язык программирования!
Шучу, но в каждой шутке есть доля правды. Посмотрите код pydantic. Там, вроде, после сборки получаются so файлы. Правда, в Django много метамагии, может и не сработать. Но хоть критичную бизнес часть можно попробовать пересобрать.
Как уже упомянули, nuitka это прекрасное решение вашей проблемы. А если вместе с ней использовать pyarmor на максимальном уровне обфускации, то вообще нечитабельно будет. Такое просто лень реверсить будет.
На заре этого проекта я еще игрался с Numba, но не осилил. Привет бывшим коллегам ;)
Python, Django и немного защиты кода