python代码的几种常见加密方式分享

作者:hqx 时间:2021-05-19 02:14:56 

Python的文件类型介绍:

  • .py python的源代码文件

  • .pyc Python源代码import后,编译生成的字节码

  • .pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言

  • .pyd Python的动态链接库(Windows平台)

  • .so

常见的源码保护手段有如下几种:

1.发行.pyc文件

pyc文件是py文件经过编译后生成的二进制文件,python提供py_compile内置模块把py文件编译为pyc文件,得到的.pyc文件可以直接运行python xxx.pyc

.pyc只能在特定版本的解释器上运行

1.1 编译加密

mian.py

def spread(arg):
   ret = []
   for i in arg:
       if isinstance(i, list):
           ret.extend(i)
   else:
       ret.append(i)
   return ret
def deep_flatten(lst):
   result = []
   result.extend(
       spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
   return result
print(deep_flatten([1, [2], [[3], 4], 5]))

编译指令:

  • python -m py_compile main.py

  • python -m compileall main.py 批量

python代码的几种常见加密方式分享

1.2 是否可逆

  • pyc加密现成的反编译工具,可以反编译得到源代码.

  • 使用uncompyle库进行反编译

可逆

测试:

pip install uncompyle
uncompyle6 main.cpython-38.pyc > main.py

python代码的几种常见加密方式分享

1.3是否影响模块调用

不影响使用

# coding=utf-8
# 调用模块main
from main import deep_flatten
print(deep_flatten([1, [2], [[3], 4], 5]))

python代码的几种常见加密方式分享

2.代码混淆

在线工具 

python代码的几种常见加密方式分享

  • 1.1 降低代码可读性

  • 1.2 不影响模块之间调用

3.生成exe可执行文件

使用py2exe

py2exe是将Python代码转换为 Windows 平台上的可执行文件的工具,只能在windos上使用,原理是译为 .pyc 文件,加上一些动态连接依赖文件,一起打包成一个可执行文件。

pip install py2exe

需要编写setup.py文件:

#!/usr/bin/env python
from distutils.core import setup
import py2exe
setup(console=[f'E:\_Py_Project\leanPy\work\代码加密\main1.py'])

然后执行 python setup.py py2exe

python代码的几种常见加密方式分享

python代码的几种常见加密方式分享

  • 1.1 是否可逆

不可逆

  • 1.2 是否影响模块调用

不影响

4…py文件转化为.so文件

生成使用 Cython

它的原理:将 .py/.pyx 编译为 .c文件,再将 .c文件编译为 .so(Unix) 或 .pyd(Windows)

pip install Cython

setup.py

from distutils.core import setup
from Cython.Build import cythonize
setup(name='main1',
    ext_modules=cythonize(f'E:\_Py_Project\leanPy\work\代码加密\main1.py'))

python setup.py build_ext

python代码的几种常见加密方式分享

在windos下生成.pyd文件

python代码的几种常见加密方式分享

测试 .pyd文件,把mian1.py删除,把.pyd文件移动到.py原来目录下

python代码的几种常见加密方式分享

在linux下生成.so文件

python代码的几种常见加密方式分享

测试:

python代码的几种常见加密方式分享

  • 1.1 是否可逆:

不可逆

  • 1.2 是否影响模块调用

不影响

5.附加运行辅助包文件

PyArmor

pip install pyarmor==6.8.1

pyarmor obfuscate main.py同目录下所有的 *.py文件都会被加密

方式一:高级加密模式,需要引导代码

python代码的几种常见加密方式分享

方式二:超级加密模式

超级模式只需要一个运行辅助文件,没有了所谓的引导代码

pyarmor obfuscate --advanced 2 .\main1.py

python代码的几种常见加密方式分享

方式三: 虚拟加密模式

高级 + 虚拟

pyarmor obfuscate --advanced 3 .\main1.py

python代码的几种常见加密方式分享

超级 + 虚拟

pyarmor obfuscate --advanced 4 .\main1.py

python代码的几种常见加密方式分享

辅助文件和编译文件

python代码的几种常见加密方式分享

几种加密方式对比:

python代码的几种常见加密方式分享

来源:https://blog.csdn.net/weixin_45454773/article/details/125871862

标签:python,加密,方式
0
投稿

猜你喜欢

  • python实现随机漫步方法和原理

    2023-06-26 19:32:02
  • 分享css处理浏览器兼容问题上的小技巧

    2008-02-03 14:41:00
  • 利用go-zero在Go中快速实现JWT认证的步骤详解

    2024-05-28 15:22:20
  • vue中view-model双向绑定基础原理解析

    2024-05-28 15:53:17
  • Python实现Tab自动补全和历史命令管理的方法

    2022-06-16 10:12:46
  • 仿谷歌主页js动画效果实现代码

    2024-04-17 10:07:36
  • 使用python自动追踪你的快递(物流推送邮箱)

    2022-06-14 11:42:04
  • PL/SQL实现Oracle数据库任务调度

    2024-01-26 11:37:37
  • Python partial函数原理及用法解析

    2021-01-22 02:48:50
  • 探索webpack模块及webpack3新特性

    2024-05-21 10:13:48
  • 在Python的Django框架中simple-todo工具的简单使用

    2023-02-28 07:54:50
  • Golang设计模式之适配器模式详细讲解

    2024-05-28 15:22:53
  • SQL根据指定分隔符分解字符串实现步骤

    2023-07-13 03:09:14
  • 10个提高网站可用性的实用技巧[译]

    2009-06-12 12:37:00
  • Mysql自动备份与还原方法

    2024-01-15 03:19:32
  • 详解Python字典的操作

    2023-07-10 11:20:50
  • JavaScript中的Math.atan2()方法使用详解

    2024-05-03 15:57:13
  • js取得html iframe中的元素和变量值

    2024-06-07 15:26:17
  • 详解Python中的__new__()方法的使用

    2022-09-26 09:03:56
  • python中json格式处理和字典的关系

    2021-04-10 04:35:12
  • asp之家 网络编程 m.aspxhome.com