Du kanske inte vill att dina avgörande Python-skript ska vara omvända av illvilliga aktörer. Så här kan du skydda det.

Python är mycket läsbar och har utbredd användning. Även om denna läsbarhet uppmuntrar till samarbete, ökar den risken för obehörig åtkomst och missbruk. Dina konkurrenter eller illvilliga aktörer kan replikera dina algoritmer och proprietära logik utan ordentliga skyddsåtgärder. Detta kommer att påverka din programvaras integritet och dina användares förtroende negativt.

Genom att implementera robusta säkerhetsåtgärder, såsom förvirring och licensverifiering, stärks din programvara mot potentiella hot. Att skydda Python-skript är inte bara en praxis; det är en viktig strategi för att säkerställa sekretessen för dina innovationer och upprätthålla förtroendet hos dina användare i det digitala landskapet.

Förstå Pyarmor

Pyarmor är ett kommandoradsbibliotek. Det hjälper till att skydda och fördunkla Python-skript och paket. Den omvandlar den ursprungliga Python-koden till en form som är svårare att förstå samtidigt som dess funktionalitet bibehålls. Obfuskationsprocessen byter namn på variabler, funktioner och klasser till icke-beskrivande namn. Det tar också bort kommentarer och strukturerar om koden. Detta gör koden svår att bakåtkonstruera, manipulera med eller kopiera.

instagram viewer

Pyarmor kan säkra enskilda Python-skript och hela paket och till och med lägga till licensverifiering till din kod.

Installera Pyarmor-biblioteket

Pyarmor är listat på Python Package Index (PyPI). Använd pip för att installera den genom att köra följande kommando:

pip install pyarmor

Det är inte ett måste för dig att installera Pyarmor i samma katalog som är värd för ditt projekt. Du kan installera det var som helst på din dator och kunna säkra alla Python-skript från vilken katalog som helst.

Men om du vill köra de säkra skripten utan att behöva installera Pyarmor på måldatorn, måste du installera det i samma katalog som är värd för ditt projekt. Detta beror på att de säkra skripten kommer att innehålla referenser till Pyarmor-körtiden, som måste finnas för att köra skripten.

Säkra individuella Python-skript

Att säkra enskilda skript med Pyarmor är enkelt. Följande skript som lägger till två siffror kommer att fungera som ett exempel.

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)

Använd kommandoraden för att navigera till katalogen där du har installerat Pyarmor. Kör sedan följande kommando för att kryptera och fördunkla ditt skript. Byta ut main.py med namnet på ditt manus.

pyarmor gen --output dist main.py

Efter att ha kört kommandot skapar Pyarmor en ny mapp med namnet dist. Inuti den finns ditt säkra skript.

Öppna det säkra skriptet för att se innehållet.

Ovanstående skärmdump visar utdata efter Pyarmor fördunklar och krypterar det enkla tilläggsskriptet. Du kan nu inte säga vad manuset gör genom att bara titta på det.

För att köra det säkra skriptet, öppna din terminal eller kommandotolk och navigera till platsen som innehåller dist katalog. Använd sedan följande kommando för att köra skriptet:

python dist/main.py

Byta ut main.py med ditt manus namn. Skriptet bör köras som det skulle utan förvirring. Testa det noggrant för att se till att alla funktioner fungerar som du förväntar dig.

Skydda hela Python-paket

Paket kan innehålla ett fåtal moduler eller hundratals moduler beroende på deras syfte. Att skydda varje modul separat kan vara tröttsamt. Som tur är har Pyarmor möjligheten att säkra ett helt paket utan att du behöver specificera varje modul separat.

Anta att du har ett enkelt Python-paket som heter sample_package med följande struktur:

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

Du kan skapa så många moduler du vill.

För att kryptera och fördunkla paketet, öppna terminalen eller kommandotolken och navigera till katalogen där ditt paket finns. Kör sedan följande kommando:

pyarmor gen -O dist -r -i sample_package

Byta ut sample_package med namnet på ditt paket. Detta kommando kommer att kryptera och fördunkla din paketkatalog och spara den skyddade utdata till dist katalog. Använd det skyddade paketet som du skulle för alla andra Python-paket.

Till exempel. För att använda ovanstående exempelpaket, skapa ett nytt skript inuti dist katalog:

from my_package import module1, module2

module1.say_hello()
module2.do_something()

När du kör koden ska paketet fungera som det skulle innan det säkras.

Styr åtkomst till ditt skript

Du kanske vill begränsa den tid en användare kör ditt skript. Till exempel under provperioden.

För att begränsa hur lång tid skriptet körs, använd följande kommando när du fördunklar ditt skript.

pyarmor gen -O dist -e 30 main.py

Byta ut 30 med antalet dagar du vill att skriptet ska vara aktivt. Du kan också ersätta den med ett exakt datum. När dagarna är över kommer skriptet att upphöra.

Du kan testa den här funktionen genom att ange ett tidigare datum. Detta bör göra att körning av skriptet ger ett fel. Använd följande kommando för att fördunkla skriptet med ett utgångsdatum:

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

Kör sedan det säkra skriptet.

Felet visar att licensnyckeln har upphört att gälla, varför skriptet inte kan köras.

Balansera säkerhet och effektivitet

Även om Pyarmor erbjuder robusta fördunklingsmekanismer för att förbättra säkerheten för din kod, är det det viktigt att balansera mellan säkerhetsåtgärder och upprätthålla effektiviteten och prestanda för din programvara. Du kan uppnå detta genom att:

  • Utvärdera behovet av förvirring: Om din programvara involverar proprietära algoritmer, känslig data eller unik affärslogik, är fördunkling mycket fördelaktigt. Men för skript med öppen källkod med minimala immateriella rättigheter, lutar avvägningen mellan säkerhet och prestanda mer mot effektivitet.
  • Bedöma prestationspåverkan: Obfuscation introducerar ytterligare runtime overhead på grund av de extra operationer och transformationer som tillämpas på koden. Denna påverkan är försumbar för små skript men blir mer märkbar för större projekt. Du bör noggrant utvärdera prestandakonsekvenserna av förvirring och utföra tester för att säkerställa att din programvara förblir lyhörd och effektiv.
  • Genomför regelbundna uppdateringar och underhåll: Uppdatera regelbundet din obfuskerade kod, licenser och säkerhetsmekanismer för att ligga steget före potentiella sårbarheter. Balansera detta med behovet av att minimera störningar för dina användare.

Kan någon knäcka den obfuskerade koden?

Programkrackning hänvisar till handlingen att ta bort kopieringsskyddet eller licensmekanismerna för en programvara. För att få obehörig tillgång till dess fulla funktionalitet utan att betala för det. Det är viktigt att notera att fördunkling av din programvara inte helt skyddar den från kex.

Med tillräckligt med beslutsamhet och resurser kan den fördunklade koden knäckas. Detta är anledningen till att du bör sträva efter att genomföra regelbundna uppdateringar och underhåll för att korrigera eventuella misstänkta kryphål.