Захистіть свої сценарії Python від зворотного проектування за допомогою Pyarmor

Python дуже читабельний і має широке використання. Хоча така читабельність заохочує співпрацю, вона збільшує ризик неавторизованого доступу та неправомірного використання. Ваші конкуренти або зловмисники можуть відтворювати ваші алгоритми та власну логіку без належних заходів безпеки. Це негативно вплине на цілісність вашого програмного забезпечення та довіру користувачів.

MUO ВІДЕО ДНЯ

ПРОКРУТЬТЕ, ЩОБ ПРОДОВЖИТИ ВМІСТ

Впровадження надійних заходів безпеки, таких як обфускація та перевірка ліцензії, захищає ваше програмне забезпечення від потенційних загроз. Захист сценаріїв Python — це не просто практика; це критично важлива стратегія для забезпечення конфіденційності ваших інновацій і підтримки довіри ваших користувачів у цифровому середовищі.

Розуміння П’ярмора

Пярмор це бібліотека командного рядка. Це допомагає захистити та обфускатити сценарії та пакети Python. Він перетворює оригінальний код Python у форму, яку важче зрозуміти, зберігаючи при цьому його функціональність. Процес обфускації перейменовує змінні, функції та класи на неописові імена. Він також видаляє коментарі та змінює структуру коду. Це ускладнює зворотне проектування, підробку або копіювання коду.

Pyarmor може захистити окремі сценарії Python і цілі пакети та навіть додати перевірку ліцензії до вашого коду.

Встановлення бібліотеки Pyarmor

Pyarmor входить до списку пакетів Python (PyPI). Використовуйте pip, щоб встановити його, виконавши таку команду:

 pip install pyarmor

Вам не обов’язково встановлювати Pyarmor у той самий каталог, у якому розміщено ваш проект. Ви можете встановити його будь-де на своєму комп’ютері та мати можливість захистити будь-які сценарії Python із будь-якого каталогу.

  Скільки людей мають Netflix?

Однак, якщо ви хочете запускати захищені сценарії без встановлення Pyarmor на цільовій машині, вам потрібно встановити його в той самий каталог, у якому розміщено ваш проект. Це пояснюється тим, що захищені сценарії міститимуть посилання на середовище виконання Pyarmor, яке має бути присутнім для запуску сценаріїв.

Захист окремих скриптів Python

Захистити окремі сценарії за допомогою Pyarmor просто. Прикладом буде наступний сценарій, який додає два числа.

 def add_numbers(num1, num2):
   result = num1 + num2
   print("The sum of {} and {} is: {}".format(num1, num2, result))


num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)

Використовуйте командний рядок, щоб перейти до каталогу, у якому встановлено Pyarmor. Потім виконайте наведену нижче команду, щоб зашифрувати та обфускати свій сценарій. Замініть main.py назвою вашого сценарію.

 pyarmor gen --output dist main.py

Після виконання команди Pyarmor створює нову папку під назвою dist. Усередині нього знаходиться ваш захищений сценарій.

Відкрийте захищений сценарій, щоб побачити його вміст.

На наведеному вище знімку екрана показано результат після того, як Pyarmor заплутає та зашифрує простий скрипт додавання. Тепер ви не можете сказати, що робить сценарій, просто подивившись на нього.

Щоб запустити захищений сценарій, відкрийте термінал або командний рядок і перейдіть до розташування, яке містить каталог dist. Потім скористайтеся такою командою, щоб запустити сценарій:

 python dist/main.py 

Замініть main.py назвою свого сценарію. Сценарій має працювати як і без обфускації. Ретельно перевірте його, щоб переконатися, що всі функції працюють так, як ви очікуєте.

  Як друкувати з телефону на настільний принтер

Захист цілих пакетів Python

Пакети можуть містити кілька модулів або сотні модулів залежно від їх призначення. Охорона кожного модуля окремо може бути виснажливою. На щастя, Pyarmor має можливість захистити весь пакет без необхідності вказувати кожен модуль окремо.

Припустімо, що у вас є простий пакет Python під назвою sample_package із такою структурою:

 sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py

Ви можете створити скільки завгодно модулів.

Щоб зашифрувати та маскувати пакет, відкрийте термінал або командний рядок і перейдіть до каталогу, у якому знаходиться ваш пакет. Потім виконайте таку команду:

 pyarmor gen -O dist -r -i sample_package 

Замініть sample_package назвою вашого пакета. Ця команда зашифрує та замаскує ваш каталог пакунків і збереже захищений вихід у каталог dist. Використовуйте захищений пакет, як і будь-який інший пакет Python.

Наприклад. Щоб використати наведений вище зразковий пакет, створіть новий сценарій у каталозі dist:

 from my_package import module1, module2

module1.say_hello()
module2.do_something()

Коли ви запускаєте код, пакет повинен функціонувати так само, як і до його захисту.

Контроль доступу до вашого сценарію

Ви можете обмежити час, протягом якого користувач виконує ваш сценарій. Наприклад, під час випробувального терміну.

Щоб обмежити час виконання сценарію, використовуйте таку команду під час обфускації сценарію.

 pyarmor gen -O dist -e 30 main.py 

Замініть 30 кількістю днів, протягом яких сценарій має бути активним. Ви також можете замінити його точною датою. Після закінчення днів термін дії сценарію закінчиться.

Ви можете перевірити цю функцію, встановивши минулу дату. Це повинно викликати помилку під час запуску сценарію. Використовуйте таку команду, щоб обфускати сценарій із застарілою датою:

 pyarmor gen -O dist -e 2022-01-01 main.py

Потім запустіть захищений сценарій.

  Як передавати безкоштовну музику за допомогою Amazon Prime

Помилка показує, що термін дії ліцензійного ключа закінчився, тому сценарій не може бути запущений.

Баланс безпеки та ефективності

Хоча Pyarmor пропонує надійні механізми обфускації для підвищення безпеки вашого коду, важливо балансувати між заходами безпеки та підтриманням ефективності та продуктивності вашого програмного забезпечення. Ви можете досягти цього:

  • Оцінка необхідності обфускації: якщо ваше програмне забезпечення включає власні алгоритми, конфіденційні дані або унікальну бізнес-логіку, обфускація є дуже корисною. Однак для сценаріїв з відкритим вихідним кодом з мінімальними проблемами інтелектуальної власності компроміс між безпекою та продуктивністю більше схиляється до ефективності.
  • Оцінка впливу на продуктивність: обфускація створює додаткові витрати на час виконання через додаткові операції та перетворення, застосовані до коду. Цей вплив незначний для невеликих сценаріїв, але стає більш помітним для великих проектів. Ви повинні ретельно оцінити наслідки обфускації для продуктивності та провести тестування, щоб переконатися, що ваше програмне забезпечення залишається оперативним і ефективним.
  • Проведення регулярних оновлень і обслуговування: Регулярно оновлюйте свій обфускований код, ліцензії та механізми безпеки, щоб випереджати потенційні вразливості. Збалансуйте це з необхідністю мінімізувати збої для ваших користувачів.

Чи може хтось зламати заплутаний код?

Злом програмного забезпечення стосується дії з видалення захисту від копіювання або механізмів ліцензування програмного додатка. Щоб отримати несанкціонований доступ до його повного функціоналу без оплати за це. Важливо зазначити, що обфускація вашого програмного забезпечення не повністю захищає його від зломщиків.

При достатній рішучості та ресурсах обфускований код можна зламати. Саме тому ви повинні намагатися проводити регулярні оновлення та технічне обслуговування, щоб виправити будь-які підозрювані лазівки.