Comments 21
Не ставя под вопрос решение о защите кода (и обфускации как механизма защиты) все же замечу, что если
Разработано приложение, которое ... содержит конфиденциальные данные
Тогда у вас проблемы.
Приложение не должно "содержать конфиденциальные данные", они на то и конфиденциальные что не подлежат распространению и должны содержаться в управляемом ограниченном окружении. Иначе они не "конфиденциальные" а "интеллектуальная собственность", что сильно разное.
местный айтишник запускает гидру
Если местный айтишник умеет в гидру, то и набрать в любимом поисковике "unpack pyarmor" осилит
Я сомневаюсь, что "unpack pyarmor" будет достаточно, что сломать последнюю версию pyarmor. То что сломать можно да, но это нетривиальная задача и в большинстве компаний (особенно в малом и среднем бизнесе) маловероятно, что такой сотрудник найдется.
Честно говоря, все эти способы в интерпретируемом скрипте совершенно не помешают взять и отключить их.
Архив от PyInstaller прекрасно распаковывается обратно, причём даже если запакован с паролем, потому что пароль лежит в нём самом. Инструкции гуглятся.
Обфускация - в принципе, хороший способ. Может очень сильно усложнить жизнь. Ещё можно попробовать построить интерпретатор питона из исходников, но, скажем, поменять в нём опкоды. Пока до этого догадаются "исследователи" - может пройти неделя.
Но самое надёжное - перевести в сишный код и скомпилировать.
Но самое надёжное - перевести в сишный код и скомпилировать.
Это тоже детский сад, но - старшая группа ))
Спасибо за комментарий. В статье я хотел рассказать о доступных инструментах именно на питоне. Перевести в сишный код хорошая идея, но единственное я не знаю как себя буду вести библиотеки вроде Селениум, при такой операции.
Ну и сколько часов продержится такая защита, если 30 лет назад в экзкешниках, в машинном коде умудрялись все эти проверки находить и NOPами забивать?
Против реверс-инженера недолго продержится. Но если руководство поставит эту задачу, кому то еще, думаю они через неделю махнут рукой. А как противостоять реверс-инженеру надо писать статью "Сложная защита скрипта без выноса логики на сервер")
Не надо. "Как противостоять реверс-инженеру?" - примерно никак. Только если не обфусцируете код, вычисляющий 2*2, в десять слоёв. Иначе говоря - пока экономический эффект от слома меньше, чем стоимость собственной разработки. Наглядный пример - нашумевший взлом криптокошелька (Joe Grand / RoboForm). С достаточной мотивацией и прямым доступом к девайсу/софту ломается практически всё.
То, что происходит на чужом компе, контролировать в принципе нельзя. К моменту, когда конфиденциальная информация утекла туда, you've been pwned. Поэтому не стоит тратить ресурсы на фантазии, надо переосмыслять задачу.
если 30 лет назад в экзкешниках, в машинном коде умудрялисьесли 30 лет назад в экзкешниках, в машинном коде умудрялись
30 лет назад программы на дискету умещались и можно было всю трассировку в голове держать. А сейчас они требуют 30Гб на диске и 16Гб памяти минимум, подписывают код сертификатами и требуют постоянный канал в интернет хз зачем.. Немножко сложнее стало.
Используется для получения серийного номера жесткого диска, обеспечивая привязку программы к конкретному устройству.
как работать будем в случае поломки физического ЖД, так и в случае если это клауд-сервер и ребята-девопсы запилили рестор из снэпшота после неудачного апдейта винды?
В век наличия компактных одноплатников, в которых можно организовать по настоящему доверенное исполнение возиться с ненадёжной обфускацией? Ну и в консумерских ноутбуках и десктопах соответствующие фичи тоже уже есть...
Извините, но статья уровня ученика 5-7 классов обычной школы.
Дальше по вашим пунктам:
NTP. Он доступен не везде, но допустим, доступен. Подменить NTP сервер - задачка уровня школьника.
Запуск внешних приложений через subprocess - меняется тем же школьником, в вашем случае даже путь не прописан, поэтому поможет игра в переменную path, иначе помог бы любой вариант jail/chroot.
Обфускация. Самое сильное из вашего списка и реально может потребовать 1-5 дней человека, знакомого с python и механизмами обфускации (если не найдётся готового решения). Но у вас реально такой важный продукт, что конкурент не захочет потратить это время на его вскрытие? Если да,... но не пофигу ли?
Единственный реально работающий способ - перенос бизнес-логики на находящееся у вас оборудование.
Использую Nuitka для перевода Python кода в бинарник.
Пробовал дебажить бинарник.
Логику проследить по бинарнику довольно сложно.
Хотелось бы услышать пример что за такое приложение упоминается. Для чего оно может понадобится и какие задачи решать. К чему вопросы? Для разраба с 20+ лет стажем на всяком разном статейка похожа на заметки студента. Такая же фигня в голове была в то время и тоже всякие "защиты* мастерил. Только время было другое и десктопные приложения были. Сейчас же уже все давно реализуется через веб. Потому очень интересно какое такое приложение может быть нынче у работника что может иметь интерес доя конкурента.
Оттранслируйте файлы модулей в *.pyc и распространяйте их. От скрипт-киддисов будет достаточно. От профессиональных реверсеров не спасёт ничего.
Простая защита скрипта на Python