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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

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

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

Оффлайн saifuddin

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

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


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

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



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

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

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

Но, не знаю, на сколько он хорош. 
« Последнее редактирование: 27 Июнь 2014, 21:13:25 от saifuddin »
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн .ubuntufan

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

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

Оффлайн saifuddin

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

Пользователь решил продолжить мысль 28 Июнь 2014, 01:19:33:
Интересно, а этот способ точно подойдет к веб разработке?
« Последнее редактирование: 28 Июнь 2014, 01:19:34 от saifuddin »
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: скрыть код python
« Ответ #5 : 30 Июнь 2014, 19:15:07 »
Клиент хочет сделать сервис в интернете. В этом сервисе будут проходить некие расчеты. Конкурентов в этой сфере почти нет в РФ. И, если на разработку уйдет скажем 6ть месяцев. А, при этом любой сможет этот код скачать и сделать по этой задумке свой проект, немного изменяя код. То, это заказчика не устраивает. В общих словах все звучит вот так.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн hon

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

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: скрыть код python
« Ответ #8 : 01 Июль 2014, 18:30:32 »
Спасибо за то, что подсказали с выбором новых языков программирования. Но, что касается с Python, то тут я, как погляжу все очень плохо. И, удивительно, как на нем умудряются писать сайт с онлайн играми и серьезные проекты, если не возможно на данный момент защитить свой код.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн 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

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
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

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: скрыть код python
« Ответ #12 : 04 Июль 2014, 10:18:48 »
Есть вероятность(еще обдумывается эта идея), что часть кода будет загружаться клиенту. Т.е. не все будет на сервере находиться. По этой причине и говорится о защите кода.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн alexander.pronin

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

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: скрыть код python
« Ответ #14 : 04 Июль 2014, 11:08:27 »
Честно, я сам даже не представляю для чего это им. Видимо думают сделать некую клиентскую программу для взаимодействия  с сервером. 
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

 

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