Vous ne voudrez peut-être pas que vos scripts Python cruciaux soient rétro-conçus par des acteurs malveillants. Voici comment vous pouvez le protéger.

Python est très lisible et largement utilisé. Bien que cette lisibilité encourage la collaboration, elle augmente le risque d'accès non autorisé et d'utilisation abusive. Vos concurrents ou acteurs malveillants peuvent reproduire vos algorithmes et votre logique propriétaire sans protections appropriées. Cela affectera négativement l'intégrité de votre logiciel et la confiance de vos utilisateurs.

La mise en œuvre de mesures de sécurité robustes, telles que l'obscurcissement et la vérification des licences, renforce votre logiciel contre les menaces potentielles. La sauvegarde des scripts Python n'est pas qu'une pratique; c'est une stratégie essentielle pour assurer la confidentialité de vos innovations et maintenir la confiance de vos utilisateurs dans le paysage numérique.

Comprendre Pyarmor

Pyarmor est une bibliothèque en ligne de commande. Il aide à protéger et à masquer les scripts et packages Python. Il transforme le code Python original en une forme plus difficile à comprendre tout en conservant sa fonctionnalité. Le processus d'obscurcissement renomme les variables, les fonctions et les classes en noms non descriptifs. Il supprime également les commentaires et restructure le code. Cela rend le code difficile à désosser, à falsifier ou à copier.

instagram viewer

Pyarmor peut sécuriser des scripts Python individuels et des packages entiers et même ajouter une vérification de licence à votre code.

Installation de la bibliothèque Pyarmor

Pyarmor est répertorié dans le Python Package Index (PyPI). Utilisez pip pour l'installer en exécutant la commande suivante :

pip install pyarmor

Il n'est pas indispensable que vous installiez Pyarmor dans le même répertoire qui héberge votre projet. Vous pouvez l'installer n'importe où sur votre ordinateur et être en mesure de sécuriser n'importe quel script Python à partir de n'importe quel répertoire.

Cependant, si vous souhaitez exécuter les scripts sécurisés sans avoir à installer Pyarmor sur la machine cible, vous devez l'installer dans le même répertoire qui héberge votre projet. En effet, les scripts sécurisés contiendront des références au runtime Pyarmor, qui devra être présent pour exécuter les scripts.

Sécurisation des scripts Python individuels

La sécurisation de scripts individuels à l'aide de Pyarmor est simple. Le script suivant qui additionne deux nombres servira d'exemple.

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)

Utilisez la ligne de commande pour naviguer dans le répertoire dans lequel vous avez installé Pyarmor. Exécutez ensuite la commande suivante pour chiffrer et obscurcir votre script. Remplacer main.py avec le nom de votre script.

pyarmor gen --output dist main.py

Après avoir exécuté la commande, Pyarmor crée un nouveau dossier nommé distance. A l'intérieur se trouve votre script sécurisé.

Ouvrez le script sécurisé pour voir son contenu.

La capture d'écran ci-dessus montre la sortie après que Pyarmor obscurcit et chiffre le script d'ajout simple. Vous ne pouvez plus savoir ce que fait le script rien qu'en le regardant.

Pour exécuter le script sécurisé, ouvrez votre terminal ou invite de commande et accédez à l'emplacement qui contient le distance annuaire. Utilisez ensuite la commande suivante pour exécuter le script :

python dist/main.py

Remplacer main.py avec le nom de votre script. Le script doit s'exécuter comme il le ferait sans obscurcissement. Testez-le soigneusement pour vous assurer que toutes les fonctions fonctionnent comme prévu.

Sauvegarder des packages Python entiers

Les packages peuvent contenir quelques modules ou des centaines de modules selon leur objectif. Sauvegarder chaque module séparément peut être fastidieux. Heureusement, Pyarmor a la capacité de sécuriser un package entier sans que vous ayez à spécifier chaque module séparément.

Supposons que vous ayez un package Python simple nommé sample_package avec la structure suivante :

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

Tu peux créez autant de modules que vous le souhaitez.

Pour chiffrer et masquer le package, ouvrez le terminal ou l'invite de commande et accédez au répertoire dans lequel réside votre package. Exécutez ensuite la commande suivante :

pyarmor gen -O dist -r -i sample_package

Remplacer sample_package avec le nom de votre colis. Cette commande chiffrera et masquera votre répertoire de packages et enregistrera la sortie protégée dans le distance annuaire. Utilisez le package protégé comme vous le feriez pour tout autre package Python.

Par exemple. Pour utiliser l'exemple de package ci-dessus, créez un nouveau script dans le distance annuaire:

from my_package import module1, module2

module1.say_hello()
module2.do_something()

Lorsque vous exécutez le code, le package doit fonctionner comme il le ferait avant de le sécuriser.

Contrôler l'accès à votre script

Vous souhaiterez peut-être limiter la durée pendant laquelle un utilisateur exécute votre script. Par exemple pendant la période d'essai.

Pour limiter la durée d'exécution du script, utilisez la commande suivante lors de l'obscurcissement de votre script.

pyarmor gen -O dist -e 30 main.py

Remplacer 30 avec le nombre de jours pendant lesquels vous souhaitez que le script soit actif. Vous pouvez également le remplacer par une date exacte. Une fois les jours écoulés, le script expirera.

Vous pouvez tester cette fonctionnalité en définissant une date passée. Cela devrait faire en sorte que l'exécution du script génère une erreur. Utilisez la commande suivante pour masquer le script avec une date d'expiration :

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

Exécutez ensuite le script sécurisé.

L'erreur indique que la clé de licence a expiré et que le script ne peut donc pas s'exécuter.

Équilibrer sécurité et efficacité

Bien que Pyarmor offre des mécanismes d'obscurcissement robustes pour améliorer la sécurité de votre code, il est important de trouver un équilibre entre les mesures de sécurité et le maintien de l'efficacité et des performances de votre logiciel. Vous pouvez y parvenir en :

  • Évaluer le besoin d'obfuscation: Si votre logiciel implique des algorithmes propriétaires, des données sensibles ou une logique métier unique, l'obscurcissement est très bénéfique. Cependant, pour les scripts open source avec des problèmes de propriété intellectuelle minimes, le compromis entre sécurité et performances penche davantage vers l'efficacité.
  • Évaluation de l'impact sur les performances: L'obscurcissement introduit une surcharge d'exécution supplémentaire en raison des opérations et des transformations supplémentaires appliquées au code. Cet impact est négligeable pour les petits scripts mais devient plus perceptible pour les projets plus importants. Vous devez évaluer soigneusement les implications de l'obfuscation sur les performances et effectuer des tests pour vous assurer que votre logiciel reste réactif et efficace.
  • Effectuer des mises à jour et une maintenance régulières: Mettez régulièrement à jour votre code, vos licences et vos mécanismes de sécurité obfusqués pour garder une longueur d'avance sur les vulnérabilités potentielles. Équilibrez cela avec la nécessité de minimiser les perturbations pour vos utilisateurs.

Quelqu'un peut-il déchiffrer le code obscurci?

Le craquage de logiciels fait référence à l'acte de supprimer les mécanismes de protection contre la copie ou de licence d'une application logicielle. Afin d'obtenir un accès non autorisé à toutes ses fonctionnalités sans payer pour cela. Il est important de noter que l'obscurcissement de votre logiciel ne le protège pas complètement des pirates.

Avec suffisamment de détermination et de ressources, le code obscurci peut être déchiffré. C'est la raison pour laquelle vous devriez viser à effectuer des mises à jour et une maintenance régulières pour corriger toute faille suspectée.