Misschien wilt u niet dat uw cruciale Python-scripts worden nagebootst door kwaadwillende actoren. Hier leest u hoe u het kunt beschermen.
Python is zeer leesbaar en wordt op grote schaal gebruikt. Hoewel deze leesbaarheid samenwerking aanmoedigt, vergroot het het risico op ongeautoriseerde toegang en misbruik. Uw concurrenten of kwaadwillende actoren kunnen uw algoritmen en eigen logica repliceren zonder de juiste beveiligingen. Dit heeft een negatieve invloed op de integriteit van uw software en het vertrouwen van uw gebruikers.
Het implementeren van robuuste beveiligingsmaatregelen, zoals verduistering en licentieverificatie, versterkt uw software tegen mogelijke bedreigingen. Het beschermen van Python-scripts is niet zomaar een oefening; het is een cruciale strategie om de vertrouwelijkheid van uw innovaties te waarborgen en het vertrouwen van uw gebruikers in het digitale landschap te behouden.
Pyarmor begrijpen
Pyarmor is een opdrachtregelbibliotheek. Het helpt Python-scripts en -pakketten te beschermen en te verdoezelen. Het transformeert de originele Python-code in een vorm die moeilijker te begrijpen is, terwijl de functionaliteit behouden blijft. Het verduisteringsproces hernoemt variabelen, functies en klassen naar niet-beschrijvende namen. Het verwijdert ook opmerkingen en herstructureert de code. Dit maakt het moeilijk om de code te reverse-engineeren, ermee te knoeien of te kopiëren.
Pyarmor kan individuele Python-scripts en volledige pakketten beveiligen en zelfs licentieverificatie aan uw code toevoegen.
De Pyarmor-bibliotheek installeren
Pyarmor staat vermeld op de Python Package Index (PyPI). Gebruik pip om het te installeren door het volgende commando uit te voeren:
pip install pyarmor
Het is geen must voor u om Pyarmor te installeren in dezelfde map waarin uw project wordt gehost. Je kunt het overal op je computer installeren en alle Python-scripts vanuit elke map beveiligen.
Als u echter de beveiligde scripts wilt uitvoeren zonder Pyarmor op de doelcomputer te hoeven installeren, moet u het in dezelfde map installeren waarin uw project wordt gehost. Dit komt omdat de beveiligde scripts verwijzingen zullen bevatten naar de Pyarmor-runtime, die aanwezig moet zijn om de scripts uit te voeren.
Beveiliging van individuele Python-scripts
Het beveiligen van individuele scripts met Pyarmor is eenvoudig. Het volgende script dat twee getallen optelt, dient als voorbeeld.
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)
Gebruik de opdrachtregel om te navigeren naar de map waarin u Pyarmor hebt geïnstalleerd. Voer vervolgens de volgende opdracht uit om uw script te coderen en te verdoezelen. Vervangen hoofd.py met de naam van je script.
pyarmor gen --output dist main.py
Na het uitvoeren van de opdracht maakt Pyarmor een nieuwe map met de naam afstand. Daarin bevindt zich uw beveiligde script.
Open het beveiligde script om de inhoud ervan te bekijken.
De bovenstaande schermafbeelding toont de uitvoer nadat Pyarmor het eenvoudige optelscript verdoezelt en versleutelt. Je kunt nu niet zien wat het script doet door er gewoon naar te kijken.
Om het beveiligde script uit te voeren, opent u uw terminal of opdrachtprompt en navigeert u naar de locatie die het afstand map. Gebruik vervolgens de volgende opdracht om het script uit te voeren:
python dist/main.py
Vervangen hoofd.py met de naam van je script. Het script zou moeten werken zoals het zou doen, zonder vertroebeling. Test het grondig om er zeker van te zijn dat alle functies werken zoals u verwacht.
Volledige Python-pakketten beschermen
Pakketten kunnen enkele modules of honderden modules bevatten, afhankelijk van hun doel. Elke module afzonderlijk beveiligen kan vermoeiend zijn. Gelukkig heeft Pyarmor de mogelijkheid om een heel pakket te beveiligen zonder dat je elke module afzonderlijk hoeft te specificeren.
Stel dat u een eenvoudig Python-pakket hebt met de naam voorbeeld_pakket met de volgende opbouw:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Jij kan maak zoveel modules als je wilt.
Om het pakket te versleutelen en te verdoezelen, opent u de terminal of opdrachtprompt en navigeert u naar de map waarin uw pakket zich bevindt. Voer vervolgens de volgende opdracht uit:
pyarmor gen -O dist -r -i sample_package
Vervangen voorbeeld_pakket met de naam van uw pakket. Deze opdracht versleutelt en versluiert uw pakketmap en slaat de beveiligde uitvoer op in het afstand map. Gebruik het beveiligde pakket zoals u zou doen voor elk ander Python-pakket.
Bijvoorbeeld. Om het bovenstaande voorbeeldpakket te gebruiken, maakt u een nieuw script in het afstand map:
from my_package import module1, module2
module1.say_hello()
module2.do_something()
Wanneer u de code uitvoert, zou het pakket moeten werken zoals het zou doen voordat het werd beveiligd.
Toegang tot uw script regelen
Misschien wilt u de tijd beperken dat een gebruiker uw script uitvoert. Bijvoorbeeld tijdens de proefperiode.
Gebruik de volgende opdracht om uw script te verdoezelen om de hoeveelheid tijd dat het script wordt uitgevoerd te beperken.
pyarmor gen -O dist -e 30 main.py
Vervangen 30 met het aantal dagen dat u wilt dat het script actief is. U kunt het ook vervangen door een exacte datum. Nadat de dagen voorbij zijn, verloopt het script.
U kunt deze functionaliteit testen door een datum in het verleden in te stellen. Hierdoor zou het uitvoeren van het script een fout moeten opleveren. Gebruik de volgende opdracht om het script te verdoezelen met een verlopen datum:
pyarmor gen -O dist -e 2022-01-01 main.py
Voer vervolgens het beveiligde script uit.
De fout geeft aan dat de licentiesleutel is verlopen en dat het script dus niet kan worden uitgevoerd.
Evenwichtige beveiliging en efficiëntie
Hoewel Pyarmor robuuste verduisteringsmechanismen biedt om de beveiliging van uw code te verbeteren, is het dat wel belangrijk om een balans te vinden tussen beveiligingsmaatregelen en het behouden van de efficiëntie en prestaties van uw software. U kunt dit bereiken door:
- Evalueren van de behoefte aan vertroebeling: Als uw software bedrijfseigen algoritmen, gevoelige gegevens of unieke bedrijfslogica bevat, is verduistering zeer nuttig. Voor open-sourcescripts met minimale zorgen over intellectueel eigendom neigt de wisselwerking tussen beveiliging en prestaties echter meer naar efficiëntie.
- Prestatie-impact beoordelen: Obfuscation introduceert extra runtime-overhead vanwege de extra bewerkingen en transformaties die op de code worden toegepast. Deze impact is verwaarloosbaar voor kleine scripts, maar wordt meer merkbaar voor grotere projecten. U moet de prestatie-implicaties van verduistering zorgvuldig beoordelen en testen uitvoeren om ervoor te zorgen dat uw software responsief en efficiënt blijft.
- Uitvoeren van regelmatige updates en onderhoud: werk uw verborgen code, licenties en beveiligingsmechanismen regelmatig bij om potentiële kwetsbaarheden voor te blijven. Breng dit in evenwicht met de noodzaak om verstoringen voor uw gebruikers tot een minimum te beperken.
Kan iemand de verborgen code kraken?
Software kraken verwijst naar het verwijderen van de kopieerbeveiliging of licentiemechanismen van een softwaretoepassing. Om ongeoorloofde toegang te krijgen tot de volledige functionaliteit zonder ervoor te betalen. Het is belangrijk op te merken dat het verbergen van uw software deze niet volledig beschermt tegen crackers.
Met voldoende vastberadenheid en middelen kan de versluierde code worden gekraakt. Dit is de reden waarom u zou moeten streven naar het uitvoeren van regelmatige updates en onderhoud om vermoedelijke mazen in de wet te dichten.