混淆 Python 程序

17 Mar 2025 | 4 分钟阅读

在接下来的教程中,我们将了解如何混淆 Python 程序。我们将使用一个名为 **pyarmor** 的 Python 包来进行混淆。

出于某些原因,我们有时可能需要将代码直接交付给客户。但是,通过执行此类操作,我们将失去对代码的控制。在这种情况下,我们可以加密脚本来保护它,保留控制权,并包含一些用于控制依赖项的回退条件,就像我们将代码交付给只使用一定时间的用户一样。

在接下来的教程中,我们将使用具有上述功能的一个函数来解决上述问题。我们将使用 **pyarmor** Python 库来混淆任何 Python 代码。

那么,我们开始吧。

创建一个基本函数

我们将从创建一个新的 Python 程序文件开始,以便对 Python 代码实现混淆。在该文件内,我们将定义一个推理函数,稍后对其进行加密。

让我们考虑以下代码片段作为推理函数。

文件:func.py

输出

Hello Peter Parker, the inference function has been initiated successfully
Your license has been expired, please contact us.

说明

在上面的代码片段中,我们导入了一些必需的模块。然后,我们将一个推理函数定义为 **infer()**,它接受两个参数 - **person_name** 和 **tag = True**。然后,我们为正在调用推理函数的用户打印了一条语句。稍后,我们定义了一个名为 **atr** 的变量来存储当前日期,以及一个名为 **resp** 的字符串变量。我们还将一个名为 **expiration_year** 的变量赋值为 **2023**。然后,我们使用 **try-exception** 方法来处理可能引发的任何异常。最后,我们使用 **if-else** 条件语句根据情况打印一条语句。最后,我们将 **__name__** 赋值为 "**__main__**" 来执行推理函数。

现在,让我们将此 python 文件保存在一个文件夹中。

Obfuscating a Python program

使用 pyarmor 加密文件

使用 **pyarmor** 加密文件的过程分为两步。

步骤 1:安装 pyarmor 包

我们可以使用 pip 安装程序安装 **pyarmor** 包,如下所示。

语法


Obfuscating a Python program

步骤 2:加密 Python 文件

我们可以通过在命令提示符中键入以下命令来加密文件。

语法

现在,让我们在 func.py 文件上实现上述命令。

语法


Obfuscating a Python program

现在,如果我们打开包含原始 **func.py** 文件的文件夹,我们将看到一个名为 **dist** 的新子文件夹。

在 **dist** 文件夹中,我们将找到另一个名为 **pytransform** 的文件夹和一个加密的 **func.py** 文件。

现在,让我们看看这个文件中的内容。

文件:func.py (已加密)


Obfuscating a Python program

导入推理函数

完成后,直到本节,现在让我们尝试将此加密的 func.py 导入到一个新的 python 文件中,名为 **new.py**,该文件位于 **dist** 文件夹内。

**pyarmor** 会处理允许我们在运行时解密 func.py 的必需密钥。它的存在位于 **pytransform** 文件夹中;因此,使代码无法被他人阅读。

但是,如果我们想对实际的 **func.py** 脚本进行一些修改,我们必须从第 1 步开始,并继续遵循相同的步骤。

Obfuscating a Python program

让我们考虑以下代码片段,我们必须将其键入 new.py 文件中。

文件:new.py

输出

Hello Tony Stark, the inference function has been initiated successfully
Your license has been expired, please contact us.

说明

在上面的代码片段中,我们将 **func.py** 的推理函数导入到我们创建的新 python 文件 **new.py** 中。然后,我们使用与 **func.py** 相同的配置执行了该函数。