Możesz nie chcieć, aby twoje kluczowe skrypty Pythona były poddawane inżynierii wstecznej przez złośliwych aktorów. Oto jak możesz to zabezpieczyć.

Python jest bardzo czytelny i ma szerokie zastosowanie. Chociaż ta czytelność zachęca do współpracy, zwiększa ryzyko nieautoryzowanego dostępu i niewłaściwego użycia. Twoi konkurenci lub złośliwi aktorzy mogą replikować Twoje algorytmy i zastrzeżoną logikę bez odpowiednich zabezpieczeń. Wpłynie to negatywnie na integralność oprogramowania i zaufanie użytkowników.

Wdrożenie solidnych środków bezpieczeństwa, takich jak zaciemnianie i weryfikacja licencji, wzmacnia oprogramowanie przed potencjalnymi zagrożeniami. Zabezpieczanie skryptów Pythona to nie tylko praktyka; jest to kluczowa strategia mająca na celu zapewnienie poufności Twoich innowacji i utrzymanie zaufania użytkowników w środowisku cyfrowym.

Zrozumieć Pyarmora

Pyarmor jest biblioteką wiersza poleceń. Pomaga chronić i zaciemniać skrypty i pakiety Pythona. Przekształca oryginalny kod Pythona w formę trudniejszą do zrozumienia przy zachowaniu jego funkcjonalności. Proces zaciemniania zmienia nazwy zmiennych, funkcji i klas na nazwy nieopisowe. Usuwa również komentarze i restrukturyzuje kod. To sprawia, że ​​kod jest trudny do inżynierii wstecznej, modyfikowania lub kopiowania.

instagram viewer

Pyarmor może zabezpieczyć pojedyncze skrypty Pythona i całe pakiety, a nawet dodać weryfikację licencji do twojego kodu.

Instalowanie biblioteki Pyarmor

Pyarmor jest wymieniony w Python Package Index (PyPI). Użyj pip, aby go zainstalować uruchamiając następujące polecenie:

pip install pyarmor

Nie musisz instalować Pyarmora w tym samym katalogu, w którym znajduje się twój projekt. Możesz zainstalować go w dowolnym miejscu na swoim komputerze i mieć możliwość zabezpieczenia dowolnych skryptów Pythona z dowolnego katalogu.

Jeśli jednak chcesz uruchamiać zabezpieczone skrypty bez konieczności instalowania Pyarmor na maszynie docelowej, musisz zainstalować go w tym samym katalogu, w którym znajduje się Twój projekt. Dzieje się tak, ponieważ zabezpieczone skrypty będą zawierały odniesienia do środowiska uruchomieniowego Pyarmor, które będzie musiało być obecne, aby skrypty mogły zostać uruchomione.

Zabezpieczanie poszczególnych skryptów Pythona

Zabezpieczanie poszczególnych skryptów za pomocą Pyarmor jest proste. Jako przykład posłuży poniższy skrypt dodający dwie liczby.

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

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

Użyj wiersza poleceń do nawigacji do katalogu, w którym zainstalowałeś Pyarmora. Następnie uruchom następujące polecenie, aby zaszyfrować i zaciemnić skrypt. Zastępować main.py z nazwą twojego skryptu.

pyarmor gen --output dist main.py

Po uruchomieniu polecenia Pyarmor tworzy nowy folder o nazwie dyst. Wewnątrz znajduje się twój zabezpieczony skrypt.

Otwórz zabezpieczony skrypt, aby zobaczyć jego zawartość.

Powyższy zrzut ekranu pokazuje dane wyjściowe po zaciemnieniu i zaszyfrowaniu przez Pyarmora prostego skryptu dodawania. Teraz nie można stwierdzić, co robi skrypt, po prostu na niego patrząc.

Aby uruchomić zabezpieczony skrypt, otwórz terminal lub wiersz polecenia i przejdź do lokalizacji zawierającej plik dyst informator. Następnie użyj następującego polecenia, aby uruchomić skrypt:

python dist/main.py

Zastępować main.py z nazwą twojego skryptu. Skrypt powinien działać tak, jak bez zaciemniania. Przetestuj go dokładnie, aby upewnić się, że wszystkie funkcje działają zgodnie z oczekiwaniami.

Ochrona całych pakietów Pythona

Pakiety mogą zawierać kilka modułów lub setki modułów w zależności od ich przeznaczenia. Zabezpieczanie każdego modułu z osobna może być męczące. Na szczęście Pyarmor ma możliwość zabezpieczenia całego pakietu bez konieczności określania każdego modułu z osobna.

Załóżmy, że masz prosty pakiet Pythona o nazwie pakiet_próbek o następującej strukturze:

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

Możesz utwórz tyle modułów, ile chcesz.

Aby zaszyfrować i zaciemnić pakiet, otwórz terminal lub wiersz poleceń i przejdź do katalogu, w którym znajduje się pakiet. Następnie uruchom następujące polecenie:

pyarmor gen -O dist -r -i sample_package

Zastępować pakiet_próbek z nazwą Twojej paczki. To polecenie zaszyfruje i zaciemni katalog pakietu i zapisze chronione dane wyjściowe w dyst informator. Użyj chronionego pakietu, tak jak w przypadku każdego innego pakietu Pythona.

Na przykład. Aby użyć powyższego przykładowego pakietu, utwórz nowy skrypt w pliku dyst informator:

from my_package import module1, module2

module1.say_hello()
module2.do_something()

Po uruchomieniu kodu pakiet powinien działać tak, jak przed zabezpieczeniem.

Kontrolowanie dostępu do Twojego skryptu

Możesz chcieć ograniczyć czas, w którym użytkownik uruchamia twój skrypt. Na przykład w okresie próbnym.

Aby ograniczyć czas działania skryptu, użyj następującego polecenia podczas zaciemniania skryptu.

pyarmor gen -O dist -e 30 main.py

Zastępować 30 z liczbą dni, przez które skrypt ma być aktywny. Możesz również zastąpić go dokładną datą. Po upływie tych dni skrypt wygaśnie.

Możesz przetestować tę funkcję, ustawiając datę przeszłą. To powinno spowodować, że uruchomienie skryptu zgłosi błąd. Użyj następującego polecenia, aby zaciemnić skrypt z datą wygaśnięcia:

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

Następnie uruchom zabezpieczony skrypt.

Błąd pokazuje, że klucz licencyjny wygasł, dlatego skrypt nie może zostać uruchomiony.

Równoważenie bezpieczeństwa i wydajności

Chociaż Pyarmor oferuje solidne mechanizmy zaciemniania w celu zwiększenia bezpieczeństwa Twojego kodu, tak właśnie jest ważne jest, aby zachować równowagę między środkami bezpieczeństwa a utrzymaniem wydajności i wydajności oprogramowanie. Możesz to osiągnąć poprzez:

  • Ocena potrzeby zaciemniania: Jeśli twoje oprogramowanie zawiera zastrzeżone algorytmy, wrażliwe dane lub unikalną logikę biznesową, zaciemnianie jest bardzo korzystne. Jednak w przypadku skryptów typu open source, które mają minimalne obawy dotyczące własności intelektualnej, kompromis między bezpieczeństwem a wydajnością skłania się bardziej ku wydajności.
  • Ocena wpływu na wydajność: Zaciemnianie wprowadza dodatkowe narzuty w czasie wykonywania ze względu na dodatkowe operacje i transformacje zastosowane do kodu. Wpływ ten jest nieistotny w przypadku małych skryptów, ale staje się bardziej zauważalny w przypadku większych projektów. Należy dokładnie ocenić wpływ zaciemniania na wydajność i przeprowadzić testy, aby upewnić się, że oprogramowanie pozostaje responsywne i wydajne.
  • Przeprowadzanie regularnych aktualizacji i konserwacji: Regularnie aktualizuj zaciemniony kod, licencje i mechanizmy bezpieczeństwa, aby wyprzedzać potencjalne luki w zabezpieczeniach. Zrównoważ to z potrzebą zminimalizowania zakłóceń dla użytkowników.

Czy ktoś może złamać zaciemniony kod?

Łamanie oprogramowania odnosi się do usuwania mechanizmów ochrony przed kopiowaniem lub licencjonowania aplikacji. W celu uzyskania nieautoryzowanego dostępu do jego pełnej funkcjonalności bez płacenia za to. Należy zauważyć, że zaciemnianie oprogramowania nie chroni go całkowicie przed hakerami.

Przy wystarczającej determinacji i zasobach zaciemniony kod można złamać. To jest powód, dla którego powinieneś dążyć do przeprowadzania regularnych aktualizacji i konserwacji w celu załatania wszelkich podejrzanych luk.