Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: скрыть код python  (Прочитано 5704 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
скрыть код python
« : 27 Июня 2014, 21:05:33 »
Добрый день!
Вот задался вопросом, как можно защитить код, конкретно меня интересует в Web .

Просто, если делать сайты на python, то появляется два вопроса, отдавать исходники пользователю или нет. Если второй вариант, то как защитить их?


Был один вариант взятый с хабра.

Шифруем каким-либо способом все исходники нашей Python-библиотеки, можно их даже перемешать и изменить имена файлов модулей и пакетов;
Пишем обвязку для того, чтобы Python-интерпретатор умел загружать и импортировать модули из зашифрованных текстовых файлов (расшифровка, восстановление структуры пакетов и имён файлов, импорт и т. д.);
«Прячем» всё это в бинарный модуль расширения (*.pyd), чтобы никто не догадался.



Но, как оказалось это плохой вариант. Так как все хранится в расшифрованном виде локально в памяти и есть, огромное кол программ для извлечения нужного кода из такой вот штуки.

Кто, какие варианты еще может предложить?

Пользователь решил продолжить мысль 27 Июня 2014, 21:13:25:
Так же вот еще нашел вариант,

Но, не знаю, на сколько он хорош. 
« Последнее редактирование: 27 Июня 2014, 21:13:25 от saifuddin »
Ubuntu 22.04

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: скрыть код python
« Ответ #1 : 27 Июня 2014, 22:11:31 »
http://habrahabr.ru/post/138537/

Думаю такой вариант будет для вас подходящим. Здесь происходит трансляция в C/C++ с последующей компиляцией библиотеки, так что возможности для реверс-инженеринга будут такими же как как и для других скомпилированных программ - максимум получение машинного кода. Однако существует две проблемы - переносимость (библиотеки компилируются для определенной архитектуры/платформы) а также корректность трансляции со стороны Cython.

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: скрыть код python
« Ответ #2 : 27 Июня 2014, 23:50:13 »
спасибо!
подождем. Может кто еще что, предложит.

Пользователь решил продолжить мысль 28 Июня 2014, 01:19:33:
Интересно, а этот способ точно подойдет к веб разработке?
« Последнее редактирование: 28 Июня 2014, 01:19:34 от saifuddin »
Ubuntu 22.04

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: скрыть код python
« Ответ #3 : 30 Июня 2014, 08:55:18 »
Есть такой вариант.
Все делается модулями.
И отдаются только файлы с расширениями pyc.
ЗЫ. Только не ясно, зачем это ТС понадобилось.
Если он боится, что его код сопрут, то пусть сам его ест, мсм.
Если это для какого-то заказчика, то я не знаю, как он смотрит на такой развод (или он полный лох).
ЗЫ2. Вообще-то питоновский код веб-клиенту не виден изначально, он функционирует на сервере (пользователь видит результат выполнения, а не код). Если сервер взломают и начнут править код, то ничто не поможет, мсм.

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: скрыть код python
« Ответ #4 : 30 Июня 2014, 14:46:44 »
alexander.pronin,
такой способ на раз-два декомпилируется обратно практически полностью в исходный файл + для выполнения необходима та же версия интерпретатора, с помощью которого файлы создали.


P.S. а вообще тоже интересно - автор, можете уточнить зачем вам понадобилось скрывать код, возможно в этом нет необходимости?

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: скрыть код python
« Ответ #5 : 30 Июня 2014, 19:15:07 »
Клиент хочет сделать сервис в интернете. В этом сервисе будут проходить некие расчеты. Конкурентов в этой сфере почти нет в РФ. И, если на разработку уйдет скажем 6ть месяцев. А, при этом любой сможет этот код скачать и сделать по этой задумке свой проект, немного изменяя код. То, это заказчика не устраивает. В общих словах все звучит вот так.
Ubuntu 22.04

Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: скрыть код python
« Ответ #6 : 01 Июля 2014, 01:46:09 »
Если расчеты тяжелые, лучше сразу пиши на С/С++.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: скрыть код python
« Ответ #7 : 01 Июля 2014, 08:47:43 »
... при этом любой сможет этот код скачать и сделать по этой задумке свой проект, немного изменяя код.
Я же Вам объяснил, что питоновские скрипты хранятся и выполняется на сервере. Чтобы их скачать, надо взломать Ваш сервер.
Но если заказчик сам хочет шифроваться, то пишите расчеты на С/C++, компилируйте и используйте результат как внешнюю утилиту. И будет Вам счастье.

Пользователь решил продолжить мысль 01 Июля 2014, 08:52:41:
alexander.pronin,
такой способ на раз-два декомпилируется обратно практически полностью в исходный файл ...
Я в курсе.
Для полноты картины. Аналогично дело обстоит с Java/C#.
« Последнее редактирование: 01 Июля 2014, 08:52:41 от alexander.pronin »

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: скрыть код python
« Ответ #8 : 01 Июля 2014, 18:30:32 »
Спасибо за то, что подсказали с выбором новых языков программирования. Но, что касается с Python, то тут я, как погляжу все очень плохо. И, удивительно, как на нем умудряются писать сайт с онлайн играми и серьезные проекты, если не возможно на данный момент защитить свой код.
Ubuntu 22.04

Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: скрыть код python
« Ответ #9 : 01 Июля 2014, 19:26:45 »
ТС, из-за чего популярен PHP? Из-за низкого порога вхождения, научиться базово владеть им просто. На этом плюсы заканчиваются, среди минусов мы получаем низкую прозводительность, сложную отладку, раздутость и т.д. Python вероятно более сложный и частично лишен некоторых недостатков. Если серьезный проект, требующий высокую производительность — пиши на С/С++.

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: скрыть код python
« Ответ #10 : 02 Июля 2014, 23:26:49 »
Если расчеты тяжелые, лучше сразу пиши на С/С++.

И много ты сайтов на C/C++ написал?
Что еще посоветуешь?

Цитировать
Спасибо за то, что подсказали с выбором новых языков программирования. Но, что касается с Python, то тут я, как погляжу все очень плохо. И, удивительно, как на нем умудряются писать сайт с онлайн играми и серьезные проекты, если не возможно на данный момент защитить свой код.

Мне кажется вы не совсем понимаете как функционируют бэкенды. Там код конечным пользователям не отдается, он им и не нужен. Доступ будет только у вас и вашего клиента.

Цитировать
ТС, из-за чего популярен PHP? Из-за низкого порога вхождения, научиться базово владеть им просто. На этом плюсы заканчиваются, среди минусов мы получаем низкую прозводительность, сложную отладку, раздутость и т.д. Python вероятно более сложный и частично лишен некоторых недостатков. Если серьезный проект, требующий высокую производительность — пиши на С/С++.

А как же скорость разработки, community, и количество библиотек под различные нужды?
И можешь пояснить в чем заключается сложная отладка и раздутость? В C/C++ дамп памяти и регистров то конечно проще.
« Последнее редактирование: 02 Июля 2014, 23:30:05 от .ubuntufan »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: скрыть код python
« Ответ #11 : 04 Июля 2014, 09:49:26 »
... что касается с Python, то тут я, как погляжу все очень плохо. И, удивительно, как на нем умудряются писать сайт с онлайн играми и серьезные проекты, если не возможно на данный момент защитить свой код.
Опять 25.
Повторяю еще раз.
1. Код на сервере клиенту сервера недоступен. Клиент видит только результаты сгенерированные выполнением программы (а не код). Это ясно или нет ? Или еще раз повторить.
2. Защищенный код может быть только в откомпилированной программе ( + аппаратные ключики для усложнения отладки при попытках модернизации).
ЗЫ1. Для начала разберитесь, что Вы хотите защищать и от кого, а потом уже можно о чем-то говорить.
Сейчас пока разговоры ни о чем.

Насчет производительности.
Сравнивать питон надо с Java/C#, все другие сравнения - это некорректно, мсм.
Узкие места всегда можно ускорить:
- за счет компиляции
- модернизации алгоритмов
- реализации узкого места на С ( или даже на ассемблере, если приспичит).
ЗЫ2.
Библиотеки питона компилированные, как и в Java/C#.
1. Мифическое отличие.
В питоне при первом выполнении идет компиляция в байт-код.
В Java/C# компиляция в байт-код предварительная.
Разницы, на мой взгляд, нет.
Но очевидно, что в питоне это удобнее, проще и быстрее в разработке.

2. Реальное отличие.
В питоне API вызовы делаются из байт кода.
Пока в питоне нет jit-компиляции. Будет или нет, я не в курсе.
Когда-то и в Java/C# jit не было.
В Java/C#  API вызовы делаются из jit-компилированного байт кода.

ЗЫ3. jit для ясности что-то типа "just in time".
« Последнее редактирование: 04 Июля 2014, 10:17:15 от alexander.pronin »

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: скрыть код python
« Ответ #12 : 04 Июля 2014, 10:18:48 »
Есть вероятность(еще обдумывается эта идея), что часть кода будет загружаться клиенту. Т.е. не все будет на сервере находиться. По этой причине и говорится о защите кода.
Ubuntu 22.04

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: скрыть код python
« Ответ #13 : 04 Июля 2014, 10:50:50 »
Есть вероятность(еще обдумывается эта идея), что часть кода будет загружаться клиенту. Т.е. не все будет на сервере находиться. По этой причине и говорится о защите кода.
Зачем клиенту сервера понадобились кишки сервера ?
Это какая-то завиральная идея.

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: скрыть код python
« Ответ #14 : 04 Июля 2014, 11:08:27 »
Честно, я сам даже не представляю для чего это им. Видимо думают сделать некую клиентскую программу для взаимодействия  с сервером. 
Ubuntu 22.04

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.