Python源码保护[通俗易懂]

Python源码保护[通俗易懂]1混淆改方法主要将函数、类名以及变量名等替换为其他符号,提高了阅读的难度,Python代码混淆网站。但该方法未改变程序的主体结构,实际效果并不是很好。具体如下图1所示:2pycpython是先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行。最简单的加密方法是将编译后的pyc二进制文件发布,详情可以参考blog。但与其他语言一样编译后的产生的pyc依然可以通过反编译得…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  由于Python开源的特性,在一些商业场景下,若不想将源码暴露,可通过混淆、编译为pycso(Windows下为pyd)文件等方法起到保护源码的效果。其中,将源码编译为so文件是常用且较好的一种保护方法。

1 混淆

  代码混淆是将函数、类名和变量名等替换为其他符号,提高了阅读的难度。Oxyry网站提供的在线代码混淆(或使用pyminifier),如下图所示:
在这里插入图片描述
  代码混淆简单且成本代价低,但由于未改变程序的主体结构,仅降低代码的可读性,实际对源码的保护并不是很好。

2 pyc

  pyc是Python脚本编译后形成的字节文件。生成后的pyc文件可以直接替换对应的py文件。但需注意Python编译版本与运行版本需要一致。pyc生成并使用流程如下:
  1)通过Python标准库中py_compile(或compileall)或被调用的脚本(如A.py被调用),都将在__pycache__文件夹中生成pyc文件,py_compile使用代码如下:

import py_compile  
py_compile.compile(file="xxx.py") # 需转换为pyc文件在——__pycache__中 

  2)将pyc文件直接替换对应py文件

  与其他语言相同,pyc也可以通过反编译获取源码。pyc反编译反编译通过uncompyle6,使用如下所示:

# 安装
pip install uncompyle6
# 使用
uncompyle6 xxx.pyc

在这里插入图片描述

3 so或pyd

  so(pyd是windows平台)文件是通过cython转换为c后,再进行编译形成的文件。生成so并使用流程如下:

  1)安装cython,Linux平台需安装gcc,Windows平台需安装对应版本的Visual Studio

pip install cython

  2)新建一个build.py文件,内容如下

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("xxx.py"))  # xxxe.py是需要转换pyd的py文件

  3)在终端下,输入如下命令:

python build.py build_ext

so文件在目录下的build->lib命名开头文件夹中,如下图so文件在build/lib.macosx-10.7-x86_64-3.6中:

在这里插入图片描述
  4)将so(或pyd)文件直接替换对应的py文件
  相对混淆和pyc,so(或pyd)对保护效果最好的一种方案。但在使用时,需注意Python版本gcc版本,不一致可能会发生错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172346.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS2008序列号[通俗易懂]

    VS2008序列号[通俗易懂]VS2008.NET简体中文版序列号1.VisualStudio2008ProfessionalEdition:XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT2.Visual

    2022年7月2日
    37
  • 验证码暴力破解测试[通俗易懂]

    验证码暴力破解测试测试原理和方法找回密码功能模块中通常会将用户凭证(一般为验证码)发送到用户自己才可以看到的手机号或者邮箱中,只要用户不泄露自己的验证码就不会被攻击者利用,但是有些应用程序在验证码发送功能模块中验证码位数及复杂性较弱,也没有对验证码做次数限制而导致验证码可被暴力枚举并修改任意用户密码。在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号,观察验…

    2022年4月11日
    231
  • 01-越狱环境搭建

    01-越狱环境搭建学习基础学习条件建议至少iOS8完美越狱版本也不能太高,要保证能够完美越狱检查手机是否可以越狱iOSJailbreak(iOS越狱)什么是iOSJailbreak?iOS系统的漏洞,获取iOS系统的最高权限(Root),解开之前的各种限制(合法行为)完美越狱和不完美越狱完美越狱越狱后的iPhone可以正常关机和重启不完美越狱iPhone一旦关机后再开机…

    2022年6月10日
    24
  • Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    2021年10月8日
    47
  • TypeScript高级类型-Partial

    TypeScript高级类型-PartialTypeScript高级类型-Partial预备知识:TypeScript类型系统接口泛型先来看一下Partial类型的定义/***MakeallpropertiesinToptional*/typePartial<T>={[PinkeyofT]?:T[P];};假设我们有一个定义user的接口,如下int…

    2025年7月10日
    3
  • sqlserver数据库置疑修复语句_sql2008数据库可疑解决方法

    sqlserver数据库置疑修复语句_sql2008数据库可疑解决方法SQL数据库修复的三大核心技术:1、磁盘阵列分析重组技术;2、数据库恢复与修复技术;3、SCSI盘物理故障开盘技术。至今已经成功恢复数百台服务器的SQL数据库,用户覆盖全国。导致SQL数据库丢失的原因:1、各种原因:误删除、误格式化、断电等造成的MSSQLSERVER数据库文件破坏。2、MSSQLSERVER数据库丢失了*.ldf文件,只有一个*.MDF文件,将是非

    2022年8月20日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号