Комментарии 27
А потом такой шифрованный скрипт не проходит проверку ДКБ. Для мелких заказчиков может и подойдет такое, для крупняка нет. Сейчас вижу попытки шифровать СПО под видом импортозамещения. И самое смешное, шифруют даже текстовый файл, который нужно подложить по пути, только чтобы не показать, что там нужно заменить руками 2 символа.
"обсификациия" скриптов кторые затем дешифруются, чтобы подаваться на интерпретатор - это вообще детский сад. Тема даже не заслуживает обсуждения.
А есть какие-то решения, сокрытия питонячьих скриптов хорошие?
Всё зависит от того от кого вы хотите эти скрипты скрыть. Если от любых чужих глаз - вам поможет всё: обфускация, шифрование, автогенерация и.т.д. Но к вам сразу постучат с вопросом не малварь ли вы пишите. А если цель просто интеллектуальную собственность на питоне защитить (если вдруг продаёте софт с исходниками), то уже с лихвой хватит одного литого питон файла, в котором переименованы любые имена в рандомную тарабарщину с сохранением семантики.
Не, задача банальнее. Делаешь устройство, и там есть одноплатник с прошивкой. Задача скрыть код, чтобы его не могли украсть. Или хотя бы замедлить вскрытие.
В таком случае всё прозаичнее - если девайс есть физически, его рано или поздно вскроют, вопрос только в том насколько поздно. А способствовать длительности этого процесса может тысяча и одна придуманная техника для анти-дизассемблирование и анти-отладки, всё зависит от множества факторов: целевой архитектуры и её возможностей, скрываетесь вы от софта или от исследователей, ловкости ваших рук и необходимого софта для бинарной инструментации.
Это общие слова, которые я знаю и без вас. Мне интересно конкретно способы защиты python скриптов.
Есть ещё вариант: не парить себе мозг. Кому потенциально ваш код нужен? Думаю что никому. Если покупает предприятие достаточно соглашения. Ни кто изи за ваших 10-ти копеек напрягаться не будет. Плюс бизнесу нужна поддержка.
Если физ лица то тут сложнее, но все равно, кто покупать не хочет - найдёт способ спиратить.
там например есть свой платный компилятор который это дело компилит в совсем свой код и становиться сложно. какую то малварь написали на нем и фиг посмотришь че она делает (была статья с анализом). но это только под x86 наверное.
для микроконтроллеров как минимум есть micropytin и lua - интересно есть ли для них декомпиляторы. суть же что существует придуманный байткод на котором сделан главный алгоритм. если нужно закрыть именно алгоритм то любой нестандарт хорошо это дело прикроет. но прошивку то просто 1к1 пиратят (уже совсем другая плоскость)?
суют отдельные хранилища, в которые записывается ключ, содержимое флеш шифруется этим ключом. Такие штуки сдампить можно дырами в самой прошивке. Но это всё тоже не 100% защита. Есть ещё датчики вскрытия, которые при вскрытии корпуса очищают ключ, и вуаля у тебя бесполезная железка. Согласен с комментарием про цену защиты и цену самого кода, если речь о каком-то специфическом узкоиспользуемом устройстве стоимость которого не миллиард, вряд ли найдётся достаточной квалификации человек, чтоб даже просто копировать содержимое впаяной SD или MMC. Я сторонник открытого исходного кода. Люди часто пекутся о защите того, что не стоит защиты.
На самом деле, вы недооцениваете частоту таких взломов.
Считать что это как в анекдоте про неуловимого Джо, что он нафиг никому ненужен не стоит. Часто конкуретнты, или будущие конкуренты ломают железку. Иногда даже сами пользователи делают взлом, чтобы расширить функционал. Это очень частое и распространённое явление.
Даже цена изделия, не всегда является определяющим фактором.
Просто скопируют одноплатник целиком.
Будет надо - перепрошьют любые фьюзы лазером. Будет совсем надо - восстановят код по "фотографии" физической памяти.
То, к чему есть физический доступ защитить невозможно.
define "одноплатник"
Так то существуют и микроконтроллеры с защитой от чтения прошивки, и всякие arm trustzone, и просто cpu со встроенным TPM, куда можно намертво ключи прошить без возможности их достать. Вскрыть это физическим, кхм... назовем это "реверс-инжинирингом", на современных техпроцессах - ну, возможно, реально, но чрезвычайно нетривиально. В таких ситуациях чаше всего каждому отдельно взятому клиенту/пользователю гораздо дешевле купить, чем ломать.
В смысле "кхм" ? Физически на сегодня можно получить "фото" памяти по которому можно получить прошивку побитно. Ее не скрыть. Физически на сегодня можно переключить обратно прожженные фьюзы воздействуя на них лазером и считать ее штатно. Физически сегодня много что можно.
Каждому отдельному клиенту сегодня гораздо дешевле не заниматься каким-то копированием и взломом (где он возьмёт что копировать то?), а заплатить. Исключая что-то реально дорогостоящее. Я уж не знаю что там за драгоценные скрипты, но меня сомненья одолевают ;)
Есть такое движение - опенсоурс, когда ваши ошибки имеет возможность исправить каждый.
А это что - жопенсоурс!
самый известное развитие событий когда разработчик уходит в туман, закрывается, уезжает а то и вообще умирает не доделав толком, и никак уже не допилишь без него
Человек, который пишет bash-скрипты такого размера, что их содержимое имеет смысл скрывать, должен страдать.
Это все конечно хорошо, но только у вас сеть легла.
А вы тут других шифрованию учите.
Python проект можно упаковать в исполняемый файл. Это не шифрование конечно, но спрятать вашу реализацию позволит.
И вот есть уже статья о компиляции для python.
В случае с "системами под ключ" у меня вот такая идея: берем исходники python, меняем там операции сложения и вычитания (ну или больше и меньше, или как-то еще), компилируем этот Python и ставим в систему. В своем коде тоже делаем соотвествующие изменения. Таким образом код открыт, но ни на какой другой системе он правильно не заработает (хотя будет запускаться и даже, возможно, роботать). Если выбрать для подмены специфичные и редкие для своего кода операторы (и особенное если эти операторы используются в бизнес-логике, а не в стандартной обвязке) -- то найти такую подмену операторов все равно что заново написать программу.
Если не хочется портить Python (хотя он обычно в виртуальном окружении) можно сделать что-то похожее с библиотекой. Например regex или подобной.
По-моему шифровать код, который передается заказчику, - это какая-то дичь, учитывая, что это защищается на юридическом уровне. От кого в итоге защита то?
Информация
- Сайт
- timeweb.cloud
- Дата регистрации
- Дата основания
- Численность
- 201–500 человек
- Местоположение
- Россия
- Представитель
- Timeweb Cloud
Шифрование скриптов