Table des matières
1. Introduction à PyArmor
(1) Principales fonctions de parmor
2. Exemples d'utilisation
(1) Installation
(2) Chiffrement général
(3) Cryptage avec licences
(4) Il peut également être lié à une machine fixe
Maison développement back-end Tutoriel Python Solution de code source Python crypté PyArmor

Solution de code source Python crypté PyArmor

May 05, 2023 pm 03:01 PM
python pyarmor

加密Python源码方案 PyArmor

Il existe de nombreux schémas de cryptage pour le code source de Python. Voyons maintenant comment PyArmor crypte Python.

1. Introduction à PyArmor

  • PyArmor est un outil de ligne de commande utilisé pour obscurcir les scripts python. Il lie le script obscurci à une machine fixe, ou fait expirer le script obscurci et ne peut plus être utilisé après une certaine période de temps. .
  • Vous pouvez vérifier son utilisation via parmor -h, et seule une partie est interceptée pour l'explication ci-dessous :
(tt) PS C:test> pyarmor -h
usage: pyarmor [-h] [-v] [-q] [-d] [--home HOME] [--boot BOOT]...
optional arguments:
-h, --help show this help message and exit
-v, --versionshow program's version number and exit
-q, --silent Suppress all normal output
-d, --debugPrint exception traceback and debugging message
--home HOMEChange pyarmor home path
--boot BOOTChange boot platform
The most commonly used pyarmor commands are:
obfuscate (o) Obfuscate python scripts
licenses (l) Generate new licenses for obfuscated scripts
pack (p) Pack obfuscated scripts to one bundle
init (i) Create a project to manage obfuscated scripts
config (c) Update project settings
build (b)Obfuscate all the scripts in the project
info Show project information
checkCheck consistency of project
hdinfo Show all available hardware information
benchmarkRun benchmark test in current machine
register Make registration keyfile work
download Download platform-dependent dynamic libraries
runtimeGenerate runtime package separately
help Display online documentation
See "pyarmor <command> -h" for more information on a specific command.
More usage refer to https://pyarmor.readthedocs.io
Copier après la connexion

(1) Principales fonctions de parmor

  1. Utilisez la commande obfuscate pour crypter le script.
  2. Utilisez la commande licenses pour générer un nouveau fichier de licence licence.lic pour le script chiffré Si vous devez définir la période d'utilisation du script chiffré ou restreindre l'utilisation du script sur une machine spécifique, vous devez générer. un nouveau fichier de licence et chiffrez-le avec le nouveau fichier de licence.
  3. Peut crypter l'intégralité du package python.
  4. peut être utilisé avec pyinstaller pour empaqueter le projet python dans un package d'installation exécutable indépendamment.
  5. Vous pouvez également utiliser certaines des solutions qu'il propose pour améliorer encore la sécurité des scripts cryptés. Lorsque cela est nécessaire pour des projets réels, consultez simplement son site officiel.

2. Exemples d'utilisation

(1) Installation

pip install pyarmor -i https://pypi.douban.com/simple/
-i https://pypi.douban.com/simple/ 是使用国内的豆瓣源,提升安装速度,具体可参见我的其他文章。
Copier après la connexion

(2) Chiffrement général

# module1.py内容如下
def module1_func1():
print("I'm module1.py")
return 
# main.py内容如下
import module1
print("I'm main.py")
module1.module1_func1()。
Copier après la connexion

Exécutez la commande pour chiffrer : parmor o main.py.

PyArmor chiffrera main.py et tous les fichiers *.py dans le même répertoire, et générera un dossier dist, qui contient tous les fichiers nécessaires à l'exécution du script de chiffrement :

  1. Créer. un sous-répertoire de sortie dist.
  2. Générez le script principal chiffré main.py et enregistrez-le dans le répertoire de sortie dist.
  3. Cryptez tous les autres fichiers *.py dans le même répertoire et enregistrez-les dans le répertoire de sortie dist.
  4. Générez tous les fichiers auxiliaires nécessaires à l'exécution du script de cryptage et enregistrez-les dans le répertoire de sortie dist.

Vérification : Allez dans le répertoire dist, python main.py.

Le fichier crypté ressemble à ceci :

from pytransform import pyarmor_runtime
pyarmor_runtime()
__pyarmor__(__name__, __file__, b'x50x59x41x52x4dx4fx52x00x00x03x08x00x55x0dx0dx0ax09x33xe0x02x00x00x00x00x01x00x00x00x40x00x00x00x63x01x00x00x00x00x00x18x26xa4x75x12x0cx32x8fxd9xa6xf8x0ax0bx17x1exc7xfex00x00x00x00x00x00xx22x0cxa0x75x0cx1ax13x8ax26xb4x02x46x1bx8cx5dxafxd0x81xc2x22x59xc0x1dxd2x83x99x01x09xb1x78x4cxdcx58x9bxdfx17xd9xe9x07xa4xa7xc6x51xdexaax20xbfx7cx43xbbx83x87xafx82x9ex65x2dxaexb9x5bx14xfcxf8x1dxc7x09xe5x65xa7x8dx5ax62x9dx78xa3x82x4cx53x17xc9x3ax15xa4xe7x66xdax3fxf2x9d', 2)
还会根据不同平台生成相关依赖:在pytransform文件夹下,例如windows生成相关.dll,linux生成.so等。
Copier après la connexion

(3) Cryptage avec licences

1.生成新的许可文件
pyarmor l -e 2022-09-09 test01
执行这条命令会生成一个带有效期的认证文件: 创建license.lic与license.lic.txt,保存在licenses/test01目录下
2.使用新生成的许可文件加密脚本
pyarmor o --with-license .licensestest01license.lic main.py
3.同样可以在dist目录下找到相关,此时如果过期了,则会提示:License is expired
Copier après la connexion

(4) Il peut également être lié à une machine fixe

1.在该机器上运行命令获取硬件信息
pyarmor hdinfo
2.然后生成绑定的固定机器的许可文件
pyarmor l --bind-disk "100304PBN2081SF3NJ5T" --bind-mac "20:c1:d2:2f:a0:96" code-002
3.使用这个许可文件加密脚本,加密脚本就只能在指定机器上运行
pyarmor o --with-license licenses/code-002/license.lic main.py
Copier après la connexion

Pour plus de méthodes d'utilisation, veuillez vous référer à son site officiel site Web :
https://pyarmor.readthedocs.io/en/latest/.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Apr 01, 2025 pm 02:48 PM

De nombreux développeurs de sites Web sont confrontés au problème de l'intégration de Node.js ou des services Python sous l'architecture de lampe: la lampe existante (Linux Apache MySQL PHP) a besoin d'un site Web ...

Quelle est la raison pour laquelle les fichiers de stockage persistants de pipeline ne peuvent pas être écrits lors de l'utilisation du robot Scapy? Quelle est la raison pour laquelle les fichiers de stockage persistants de pipeline ne peuvent pas être écrits lors de l'utilisation du robot Scapy? Apr 01, 2025 pm 04:03 PM

Lorsque vous utilisez Scapy Crawler, la raison pour laquelle les fichiers de stockage persistants ne peuvent pas être écrits? Discussion Lorsque vous apprenez à utiliser Scapy Crawler pour les robots de données, vous rencontrez souvent un ...

Quelle est la raison pour laquelle le pool de processus Python gère les demandes TCP simultanées et fait coincé le client? Quelle est la raison pour laquelle le pool de processus Python gère les demandes TCP simultanées et fait coincé le client? Apr 01, 2025 pm 04:09 PM

Python Process Pool gère les demandes TCP simultanées qui font coincé le client. Lorsque vous utilisez Python pour la programmation réseau, il est crucial de gérer efficacement les demandes TCP simultanées. ...

Comment afficher les fonctions originales encapsulées en interne par Python Functools.Partial Objet? Comment afficher les fonctions originales encapsulées en interne par Python Functools.Partial Objet? Apr 01, 2025 pm 04:15 PM

Explorez profondément la méthode de visualisation de Python Functools.Partial Objet dans Functools.Partial en utilisant Python ...

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Python multiplateform de bureau de bureau de bureau: quelle bibliothèque GUI est la meilleure pour vous? Python multiplateform de bureau de bureau de bureau: quelle bibliothèque GUI est la meilleure pour vous? Apr 01, 2025 pm 05:24 PM

Choix de la bibliothèque de développement d'applications de bureau multiplateforme Python De nombreux développeurs Python souhaitent développer des applications de bureau pouvant s'exécuter sur Windows et Linux Systems ...

Dessin graphique de sablier Python: comment éviter les erreurs variables non définies? Dessin graphique de sablier Python: comment éviter les erreurs variables non définies? Apr 01, 2025 pm 06:27 PM

Précision avec Python: Source de sablier Dessin graphique et vérification d'entrée Cet article résoudra le problème de définition variable rencontré par un novice Python dans le programme de dessin graphique de sablier. Code...

Comment compter et trier efficacement de grands ensembles de données de produit dans Python? Comment compter et trier efficacement de grands ensembles de données de produit dans Python? Apr 01, 2025 pm 08:03 PM

Conversion et statistiques de données: traitement efficace des grands ensembles de données Cet article introduira en détail comment convertir une liste de données contenant des informations sur le produit en une autre contenant ...

See all articles