Pull to refresh

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 классов обычной школы.

Дальше по вашим пунктам:

  1. NTP. Он доступен не везде, но допустим, доступен. Подменить NTP сервер - задачка уровня школьника.

  2. Запуск внешних приложений через subprocess - меняется тем же школьником, в вашем случае даже путь не прописан, поэтому поможет игра в переменную path, иначе помог бы любой вариант jail/chroot.

  3. Обфускация. Самое сильное из вашего списка и реально может потребовать 1-5 дней человека, знакомого с python и механизмами обфускации (если не найдётся готового решения). Но у вас реально такой важный продукт, что конкурент не захочет потратить это время на его вскрытие? Если да,... но не пофигу ли?

Единственный реально работающий способ - перенос бизнес-логики на находящееся у вас оборудование.

Использую Nuitka для перевода Python кода в бинарник.
Пробовал дебажить бинарник.
Логику проследить по бинарнику довольно сложно.

Хотелось бы услышать пример что за такое приложение упоминается. Для чего оно может понадобится и какие задачи решать. К чему вопросы? Для разраба с 20+ лет стажем на всяком разном статейка похожа на заметки студента. Такая же фигня в голове была в то время и тоже всякие "защиты* мастерил. Только время было другое и десктопные приложения были. Сейчас же уже все давно реализуется через веб. Потому очень интересно какое такое приложение может быть нынче у работника что может иметь интерес доя конкурента.

Оттранслируйте файлы модулей в *.pyc и распространяйте их. От скрипт-киддисов будет достаточно. От профессиональных реверсеров не спасёт ничего.

Ну вы бы, хоть, сами погуглили для того, чтобы такое написать. Из .pyc файлов код восстанавливается даже вместе с комментариями (если оптимизация не была включена).

Sign up to leave a comment.

Articles