Удастся ли защитить от копирования код Python средствами Linux?
Проектируется встраиваемая система, предварительно на Raspberry PI (в дальнейшем возможен переход на компьютер собственной разработки на процессорах TI Sitara также под Linux). Основная роль компьютера, интерфейс с пользователем и нереалтайм математика. Хотелось бы разрабатывать программу под Linux на Python, но так чтобы нельзя было скопировать код.
Удастся ли настроить Linux, чтобы пользователь не смог скопировать программу с SD-карты (файловая система ext4), а также не имел доступа ни к каким средствам Linux, кроме интерфейса программы (программа должна запускаться в полноэкранном режиме по загрузке ОС).
Либо все таки надо использовать фреймворки GTK+ или Qt и С++?
Никакой код который ты расспростроняешь на клинтах защитить невозможно. Тот же c++ можно используя реверс инженеринг и дебаггинг спереть. Используй удаленный сервер на которомм все это будет происходить либо весь твой код будет общедоступен в любом случае.
Когда код откомпелирован в машинные коды, то дешевле написать заново. Новая разработка с этим и связана, потому что нет поддержки старой сторонней программы, надо написать аналогичную свою.
Этот вопрос по администрированию Linux и по файловой системе ext4.
1. Может ли файловая система ext4 запретить доступ к файлам при вынутой флеш карте, либо надо шифровать диск?
2. Можно ли запретить пользователю Linux любые действия, кроме работы с интерфейсом программы. В основном запретить просмотр и копирование файлов запущенной пользователем программы на языке Python
Владимир, можно ли в Linux разграничить права так, чтобы пользователь не смог открытьвать на чтение и скопировать файлы, а только запускать единственную программу (да и то, это будет автоматически при старте системы)?
Михаил, к сожалению, для того чтобы запустить файл, его нужно прочитать.
поэтому мне такие средства не известны
думаю python тем и хорош что все его коды всегда доступны для чтения и понимания что именно там происходит и почему
Владимир, так а что пользователь должен сделать, чтобы посмотреть файлы? Если ни чего кроме интерфейса программы у него нет (ни рабочего стола, ни bash)? Как имея графический интерфейс программы увидеть ее код?
Я видел аналогичное устройство, где заявлено что используется Андроид, на каком языке программа написана не известно. Ни чего кроме кнопок интерфейса пользователю не доступно.
Ты пользуешься Линуксом и хочешь разрабатывать программу с закрытым кодом? Спасибо, посмеялся. А как же open-source software и выкладывание проекта на гитхабе?
С открытым кодом конкурентных встраиваемых систем нет, есть только хобби проекты. Материальную и программую поддержку Linux осуществляют в том числе производители процессоров, которые их продают за деньги.
Linux предназначен для разграничения прав доступа, если бы все было открыто, то зачем надо было бы это внедрять в Linux и в файловые системы?
Михаил, разграничение прав доступа и ЧТЕНИЕ, ЗАПИСЬ и ВЫПОЛНЕНИЕ как в самой системе так и извне. Но открытый код на то и открытый, что каждый может его посмотреть и изменить (настроить под себя). Python ≠ закрытый код.
Простое решение: использование "клиент-сервер".
Антон Пархоменко, графический интерфейс - это и есть клиент. Программа поставляется вместе с компьютером. Ни чего кроме кнопок программы пользователю не должно быть доступно. Даже обновление можно было бы заложить в саму программу (как загрузчик в микроконтроллерах), либо еще проще и надежнее, обновление производить заменой sd-карты с системой и новой версией программы.
Лучшее чего вы можете добиться - использовать любой питоновский обфускатор для усложнения понимания кода, а затем, по желанию, запаковать в бинарник через pyinstaller. От хищения самого файла никак не защититься - только если вы не будете использовать некий аппаратный ключ, выполняющий часть кода.
Если программа запускает на ПК это одно - смысла защищать байт-код нет - надо писать на С++ с компиляцией в машинные коды.
А если программа запускается на встраиваемой системе, где она является единственным интерфейсом - это другое. Можно ли в Linux запретить копирование файлов пользователю?
Михаил, для запуска файла требуются права на чтения. А чтение, так или иначе, позволит скопировать. Да и получить рутовый доступ к консоли на встроенной системе не является чем-то сложным.
SELinux/AppArmour, но вы тогда должны беречь доступ к руту как зеницу ока.
P.S. Как говорил мой коллега: "Любая разработка на Python автоматически идёт с открытыми исходниками".
В принципе можно ни когда не пользовать root, кроме начальной установки системы и программы, после чего о нем можно забыть.
Для обновления ПО заменять sd-карту с системой и программой. Либо написать в программе свой загрузчик, как это делается для обновления прошивки в микроконтроллерах.
Вы хотите сделать то, что стало причиной самих действий. Пользователь, даже будь у него код с коментариями и документацией - ничего не сделает. Мозгов не хватит.
Вы можете использовать Bash скрипт вместо Python и тогда этот Bash скрипт можно скомпилировать с помощью утилиты shc. Она сделает из вашего Bash скрипта бинарный ELF-файл который будет серьезно обфусцирован и будет очень сложен реверс-инжиниринг, если вообще возможен.