ホームページ  >  記事  >  バックエンド開発  >  暗号化された Python ソース コード ソリューション PyArmor

暗号化された Python ソース コード ソリューション PyArmor

WBOY
WBOY転載
2023-05-05 15:01:062392ブラウズ

加密Python源码方案 PyArmor

#Python ソース コードには多くの暗号化スキームがありますが、ここでは PyArmor がどのように Python を暗号化するかを見てみましょう。

1. PyArmor の概要

  • PyArmor は、Python スクリプトを難読化するために使用されるコマンド ライン ツールです。難読化されたスクリプトを固定マシンにバインドするか、または一定の時間が経過すると、難読化されたスクリプトの有効期限が切れて使用できなくなります。
  • pyarmor -h で使用方法を確認できますが、一部のみを抜粋して以下に説明します:
(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

(1) 主な機能pyarmor の

  1. コマンド obfuscate を使用してスクリプトを暗号化します。
  2. コマンドライセンスを使用して、暗号化されたスクリプトの新しいライセンスファイルlicense.licを生成します。暗号化されたスクリプトの使用期間を設定したり、スクリプトの使用を制限したりする必要がある場合は、特定のマシンの場合は、新しいライセンス ファイルを生成し、新しいライセンス ファイルを使用してスクリプトを暗号化する必要があります。
  3. Python パッケージ全体を暗号化できます。
  4. pyinstaller と連携して、Python プロジェクトを独立して実行可能なインストール パッケージにパッケージ化できます。
  5. 提供されるソリューションの一部を使用して、暗号化されたスクリプトのセキュリティをさらに向上させることもできます。実際のプロジェクトで必要な場合は、公式 Web サイトを確認してください。

2. 使用例

(1) インストール

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

(2) 一般的な暗号化

# module1.py内容如下
def module1_func1():
print("I'm module1.py")
return 
# main.py内容如下
import module1
print("I'm main.py")
module1.module1_func1()。

コマンドの実行暗号化:pyarmor main.py。

PyArmor は、同じディレクトリ内の main.py とすべての *.py ファイルを暗号化し、暗号化スクリプトの実行に必要なすべてのファイルを含む dist フォルダーを生成します。プロセス:

  1. 出力サブディレクトリ dist を作成します。
  2. 暗号化されたメイン スクリプト main.py を生成し、出力ディレクトリ dist に保存します。
  3. 同じディレクトリ内の他のすべての *.py ファイルを暗号化し、出力ディレクトリ dist に保存します。
  4. 暗号化スクリプトの実行に必要なすべての補助ファイルを生成し、出力ディレクトリ dist に保存します。

検証: dist ディレクトリの python main.py に移動します。

暗号化されたファイルは次のようになります:

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

(3) ライセンスによる暗号化

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

(4) バインドすることもできます固定マシンに設定

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

その他の利用方法については公式サイト
https://pyarmor.readthedocs.io/ja/latest/をご覧ください。

以上が暗号化された Python ソース コード ソリューション PyArmorの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。