Chraňte své Python skripty před zpětným inženýrstvím pomocí Pyarmor

Python je vysoce čitelný a má široké použití. Tato čitelnost sice podporuje spolupráci, ale zvyšuje riziko neoprávněného přístupu a zneužití. Vaši konkurenti nebo zlomyslní aktéři mohou replikovat vaše algoritmy a proprietární logiku bez řádných záruk. To negativně ovlivní integritu vašeho softwaru a důvěru vašich uživatelů.

MUO VIDEO DNE

POKRAČOVÁNÍ V OBSAHU POKRAČUJTE PŘEJÍMÁNÍM

Implementace robustních bezpečnostních opatření, jako je mlžení a ověřování licencí, chrání váš software před potenciálními hrozbami. Zabezpečení skriptů Python není jen praxe; je to zásadní strategie pro zajištění důvěrnosti vašich inovací a udržení důvěry vašich uživatelů v digitální prostředí.

Pochopení Pyarmoru

Pyarmor je knihovna příkazového řádku. Pomáhá chránit a znejasňovat Python skripty a balíčky. Transformuje původní kód Pythonu do podoby, která je hůře srozumitelná, při zachování jeho funkčnosti. Proces zmatku přejmenovává proměnné, funkce a třídy na nepopisná jména. Také odstraňuje komentáře a restrukturalizuje kód. To ztěžuje zpětnou analýzu kódu, manipulaci s ním nebo jeho kopírování.

Pyarmor může zabezpečit jednotlivé Python skripty a celé balíčky a dokonce přidat ověření licence do vašeho kódu.

Instalace knihovny Pyarmor

Pyarmor je uveden na Python Package Index (PyPI). Použijte pip k instalaci spuštěním následujícího příkazu:

 pip install pyarmor

Není nutné, abyste instalovali Pyarmor do stejného adresáře, který hostí váš projekt. Můžete jej nainstalovat kdekoli na vašem počítači a být schopni zabezpečit jakékoli skripty Pythonu z libovolného adresáře.

Pokud však chcete spouštět zabezpečené skripty bez nutnosti instalovat Pyarmor na cílový počítač, musíte jej nainstalovat do stejného adresáře, který hostí váš projekt. Je to proto, že zabezpečené skripty budou obsahovat odkazy na běhové prostředí Pyarmor, které bude muset být přítomno, aby bylo možné skripty spustit.

Zabezpečení jednotlivých skriptů Python

Zabezpečení jednotlivých skriptů pomocí Pyarmoru je jednoduché. Jako příklad poslouží následující skript, který sčítá dvě čísla.

 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)

Pomocí příkazového řádku přejděte do adresáře, do kterého jste nainstalovali Pyarmor. Poté spusťte následující příkaz k zašifrování a zmatnění skriptu. Nahraďte main.py názvem vašeho skriptu.

 pyarmor gen --output dist main.py

Po spuštění příkazu Pyarmor vytvoří novou složku s názvem dist. Uvnitř se nachází váš zabezpečený skript.

Otevřete zabezpečený skript a zobrazte jeho obsah.

Výše uvedený snímek obrazovky ukazuje výstup poté, co Pyarmor zatemní a zašifruje jednoduchý skript přidávání. Nyní nemůžete říct, co skript dělá, pouhým pohledem na něj.

Chcete-li spustit zabezpečený skript, otevřete terminál nebo příkazový řádek a přejděte do umístění, které obsahuje adresář dist. Poté pomocí následujícího příkazu spusťte skript:

 python dist/main.py 

Nahraďte main.py názvem vašeho skriptu. Skript by měl běžet tak, jak by běžel bez zmatku. Důkladně jej otestujte, abyste se ujistili, že všechny funkce fungují tak, jak očekáváte.

Zabezpečení celých balíčků Pythonu

Balíčky mohou obsahovat několik modulů nebo stovky modulů v závislosti na jejich účelu. Zabezpečení každého modulu samostatně může být únavné. Naštěstí má Pyarmor schopnost zabezpečit celý balíček, aniž byste museli specifikovat každý modul zvlášť.

Předpokládejme, že máte jednoduchý balíček Python s názvem sample_package s následující strukturou:

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

Můžete vytvořit tolik modulů, kolik chcete.

Chcete-li balíček zašifrovat a zatemnit, otevřete terminál nebo příkazový řádek a přejděte do adresáře, ve kterém je váš balíček umístěn. Poté spusťte následující příkaz:

 pyarmor gen -O dist -r -i sample_package 

Nahraďte sample_package názvem vašeho balíčku. Tento příkaz zašifruje a znepřehlední váš adresář balíčku a uloží chráněný výstup do adresáře dist. Používejte chráněný balíček jako u jakéhokoli jiného balíčku Pythonu.

Například. Chcete-li použít výše uvedený ukázkový balíček, vytvořte nový skript v adresáři dist:

 from my_package import module1, module2

module1.say_hello()
module2.do_something()

Když kód spustíte, balíček by měl fungovat stejně jako před jeho zabezpečením.

Řízení přístupu k vašemu skriptu

Možná budete chtít omezit dobu, po kterou uživatel spouští váš skript. Například ve zkušební době.

Chcete-li omezit dobu, po kterou se skript spouští, použijte při obfuskaci skriptu následující příkaz.

 pyarmor gen -O dist -e 30 main.py 

Nahraďte 30 počtem dní, po které chcete, aby byl skript aktivní. Můžete jej také nahradit přesným datem. Po uplynutí dnů skript vyprší.

Tuto funkci můžete otestovat nastavením minulého data. To by mělo způsobit, že spuštění skriptu vyvolá chybu. Pomocí následujícího příkazu zakryjte skript datem vypršení platnosti:

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

Poté spusťte zabezpečený skript.

Chyba ukazuje, že platnost licenčního klíče vypršela, takže skript nelze spustit.

Vyvážení bezpečnosti a efektivity

Přestože Pyarmor nabízí robustní mechanismy zmatku pro zvýšení bezpečnosti vašeho kódu, je důležité najít rovnováhu mezi bezpečnostními opatřeními a zachováním efektivity a výkonu vašeho softwaru. Můžete toho dosáhnout:

  • Vyhodnocení potřeby zatemnění: Pokud váš software zahrnuje proprietární algoritmy, citlivá data nebo jedinečnou obchodní logiku, je zatemnění velmi přínosné. U skriptů s otevřeným zdrojovým kódem s minimálními obavami o duševní vlastnictví se však kompromis mezi bezpečností a výkonem přiklání spíše k efektivitě.
  • Posouzení dopadu na výkon: Obfuscation zavádí další režii za běhu kvůli dalším operacím a transformacím aplikovaným na kód. Tento dopad je u malých skriptů zanedbatelný, ale u větších projektů je patrnější. Měli byste pečlivě zhodnotit dopady zatemňování na výkon a provést testování, abyste zajistili, že váš software zůstane citlivý a účinný.
  • Provádění pravidelných aktualizací a údržby: Pravidelně aktualizujte svůj zmatený kód, licence a bezpečnostní mechanismy, abyste si udrželi náskok před potenciálními zranitelnostmi. Vyvažte to potřebou minimalizovat rušení vašich uživatelů.

Může někdo rozluštit zahalený kód?

Prolomení softwaru označuje akt odstranění ochrany proti kopírování nebo licenčních mechanismů softwarové aplikace. Za účelem získání neoprávněného přístupu k jeho plné funkčnosti bez placení za to. Je důležité si uvědomit, že znejasnění vašeho softwaru ho zcela nechrání před crackery.

S dostatečným odhodláním a zdroji lze zatemněný kód prolomit. To je důvod, proč byste se měli zaměřit na provádění pravidelných aktualizací a údržby, abyste opravili jakékoli podezřelé mezery.