【python】在线代码混淆方案及注意事项

▒ 目录 ▒

    • 🛫 导读
      • 开发环境
    • 1️⃣ 在线网站pyob混淆操作步骤
      • 编写测试代码
      • 混淆
      • 转pyc
      • 缺点
      • 中文路径问题:`python: Can't reopen .pyc file`
    • 2️⃣ 反编译
      • python文件格式对比
      • uncompyle6
    • 3️⃣ 其它方案
      • cpython
      • python-obfuscator
      • PyInstaller
      • 【不推荐】pyminifier
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

开发环境

版本号描述
文章日期2023-12-20
python3.8.6
pyobhttps://pyob.oxyry.com/

1️⃣ 在线网站pyob混淆操作步骤

目前试了几种方式,发现在线方式即可满足小编的要求(代码混淆,强度一般即可),操作相对简单,记录如下:

编写测试代码

main.py

def add(a, b):ret = a+breturn retprint('hello...')
sum = add(33,66)
print(sum)
sum = add(1, 99)
print(sum)

混淆

打开在线网站: https://pyob.oxyry.com/,按照下面步骤操作:
在这里插入图片描述

该网站有混淆选项,但是功能大差不差,可以忽略
在这里插入图片描述

转pyc

命令格式
python -m compileall 文件或路径 可选项
小编使用python3.8.6,运行命令D:\Python\Python386\python.exe -m compileall .,生成两个混淆文件:
在这里插入图片描述> python执行上面四个文件,均正常运行:
在这里插入图片描述

使用python -m compileall -h可以看到帮助文档和可选项的含义:

-l:不递归编译子文件夹;-r level:指定编译文件夹的层数,优先级高于-l;level=0表示不进入下一层,levle=1表示进入第一层,level=2表示进入第二层,以此类推。-f:强制重新编译一次,即使文件的时间戳没有更新,当没有使用-f选项时,如果py文件的时间戳更早于pyc文件,不会触发编译过程;-x REG:根据REG表示的正则式选择文件编译。-o OPT_LEVELS: 指定优化级别( Default is -1 which uses the optimization level of the Python interpreter itself (see -O).)

ps: 命令行模式下,如果不指明文件或路径默认会将sys.path下的所有文件进行编译!sys.path包括了当前工作目录、Python安装目录、Python包目录等。

ps2: compileall 提供了api接口,可以用于python代码编写,实现复杂的逻辑。

缺点

  • 只能单文件混淆,多文件不方便。
  • 混淆强度一般,只是改了函数名和变量名。
  • 非函数内的变量不会改名字

中文路径问题:python: Can't reopen .pyc file

一直以为是编码问题,试了之后依然有问题,改成英文路径就好了!!!特此声明:
调用.py文件路径给的存在中文没问题,但是.pyc文件路径有中文就会报错。

2️⃣ 反编译

python文件格式对比

python文件使用过程中涉及大量的文件格式,简单梳理如下:

  • .py python的源代码文件
  • .pyc Python源代码import后,编译生成的字节码
  • .pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言
  • .pyd Python的动态链接库(Windows平台)
  • .so文件

uncompyle6

uncompyle6使用很简单,可以参考文章《python py文件与pyc文件相互转换 https://blog.csdn.net/juzicode00/article/details/124580320》。

安装:
pip install uncompyle6

使用:
uncompyle6.exe 待反编译文件名
在这里插入图片描述

3️⃣ 其它方案

cpython

强度很高,不过操作相对麻烦点。
可以参考这篇不错的文章《Python 防止反编译: https://blog.csdn.net/weixin_44422493/article/details/122124046 》

python-obfuscator

开源项目,github地址: https://github.com/davidteather/python-obfuscator
21年2月最后更新,应该不错吧。

PyInstaller

不多说了,直接上个链接吧

  • 《将pyinstaller打包后的exe还原成py / 防止还原: https://www.jianshu.com/p/036cbcd20776》
  • Pyinstaller打包的exe之一键反编译py脚本与防反编译https://blog.csdn.net/as604049322/article/details/119834495

【不推荐】pyminifier

该库太老了,对新版本的python会报各种错,无法安装使用。
在这里插入图片描述

github地址: https://github.com/liftoff/pyminifier
最开始搜索资料,找到的就是这个库,参考文章《使用pyminifier对代码进行混淆加密实例 https://blog.csdn.net/weixin_43178103/article/details/110177599》。
效果跟如下:
在这里插入图片描述

🛬 文章小结

python的编译和反编译涉及到很多的工具,需要针对不同的方案,使用不同的工具。

📖 参考资料

  • pyob https://pyob.oxyry.com/
  • python py文件与pyc文件相互转换 https://blog.csdn.net/juzicode00/article/details/124580320
  • Python 防止反编译: https://blog.csdn.net/weixin_44422493/article/details/122124046
  • Pyinstaller打包的exe之一键反编译py脚本与防反编译https://blog.csdn.net/as604049322/article/details/119834495
  • 将pyinstaller打包后的exe还原成py / 防止还原: https://www.jianshu.com/p/036cbcd20776
  • 【Python】python代码的5种常见加密方式 https://developer.aliyun.com/article/1060547
  • 使用pyminifier对代码进行混淆加密实例 https://blog.csdn.net/weixin_43178103/article/details/110177599

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字人解决方案——ER-NeRF实时对话数字人模型推理部署带UI交互界面

简介 这个是一个使用ER-NeRF来实现实时对话数字人、口播数字人的整体架构,其中包括了大语言回答模型、语音合成、成生视频流、背景替换等功能,项目对显存的要求很高,想要达到实时推理的效果,建议显存在24G以上。 实时对话数字人 …

众和策略:大盘涨手中的股票却大跌,到底怎么回事?

大盘涨手中的股票却大跌,究竟怎么回事: 1、大盘上涨是权重股所造成的 大盘上涨可能是受一些权重比较大的工作所影响,比如证券工作、钢铁工作、银行工作等等,这些工作的大涨,可以拉升大盘的上涨,可是其它工…

本地配置Java支付宝沙箱环境模拟支付并内网穿透远程调试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

Dynamic Coarse-to-Fine Learning for Oriented Tiny Object Detection(CVPR2023待补)

文章目录 BeginningAbstract挑战方法成果 Introduction引出问题早期的work及存在的问题近期的work及存在的问题our workContribution Related Work(paper for me)Oriented Object DetectionPrior for Oriented ObjectsLabel Assignment Tiny Object Dete…

Opencv 入门三(视频滑动条窗口)

视频滑动条窗口源码如下&#xff1a; #include "opencv2\highgui\highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <fstream> using namespace std; int g_slider_position 0; // 滑动条的位置 …

uniapp uview1.0 页面多个upload上传、回显之后处理数据

<view class"img-title w-s-color-3 f-28 row">商品图片</view><u-upload ref"images" :header"header" :file-list"fileListImages" :action"action" name"iFile" icon-name"camera"u…

论文学习——泰森多边形法在小流域面雨量计算中的应用

文章目录 0 摘要00 引言1 研究区域概况2 泰森多边形的建立3 流域多年面降雨量分析4 典型降雨场次面雨量分析5 典型降雨日面雨量分析6 结论7 个人总结0 摘要 研究泰森多边形算法,在小流域面雨量计算中的适用性。选取3种不同降雨量实例,流域多年面降雨量、典型场次、典型日面雨…

108基于matlab的使用模拟退火 (SA) 求解并行机器调度的程序

基于matlab的使用模拟退火 &#xff08;SA&#xff09; 求解并行机器调度的程序&#xff0c;程序已调通&#xff0c;可直接运行。 108 matlab模拟退火 &#xff08;SA) (xiaohongshu.com)

如何使用支付宝的沙箱环境在本地配置模拟支付并发布至公网测试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…

Redis一些常用的技术

文章目录 第1关&#xff1a;Redis 事务与锁机制第2关&#xff1a;流水线第3关&#xff1a;发布订阅第4关&#xff1a;超时命令第5关&#xff1a;使用Lua语言 第1关&#xff1a;Redis 事务与锁机制 编程要求 根据提示&#xff0c;在右侧编辑器Begin-End补充代码&#xff0c;根据…

MySQL是如何保证数据不丢失的?

文章目录 前言Buffer Pool 和 DML 的关系DML操作流程加载数据页更新记录 数据持久化方案合适的时机刷盘双写机制日志先行机制日志刷盘机制Redo Log 恢复数据 总结 前言 上篇文章《InnoDB在SQL查询中的关键功能和优化策略》对InnoDB的查询操作和优化事项进行了说明。但是&#…

【MyBatis学习笔记】MyBatis基础学习

MyBatis基础 MyBatis简介MyBatis特性MyBatis下载和其他持久化层技术对比 核心配置文件详解默认的类型别名 搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能 MyBatis获取参数值的两种方式&am…

【无人机学习篇】构建mavros机载电脑连接,从机载电脑获取pixhawk数据

&#xff08;本文基于的pixhawk版本&#xff1a;6X minibase V2.2 &#xff0c;固件&#xff1a;apm&#xff09; 整个的步骤&#xff08;baseline&#xff09;&#xff1a; 具体的每一步都可以在网上查到教程&#xff0c;这里只是梳理出一个流程。并且ubantu与ros的版本也不是…

Java开发框架和中间件面试题(2)

8.说说自己对Spring MVC的了解&#xff1f; MVC是一种设计模式&#xff0c;Spring MVC是一款很优秀的MVC框架。Spring MVC可以帮助我们进行更简洁的Web层开发&#xff0c;并且它天生与Spring框架集成。SpringMVC下我们一般把后端项目分为Service&#xff08;处理业务&#xff0…

网上商城怎么做:五大关键步骤

在数字化浪潮中&#xff0c;开设网上商城已经成为商业发展的必然趋势。然而如何搭建一个功能齐全、用户体验优良的网上商城并非易事。以下为您介绍网上商城怎么做的五大关键步骤。 第一步&#xff0c;明确商业模式和定位 在开始搭建网上商城之前&#xff0c;需要清晰地定义你…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现

一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端&#xff08;用户&#xff09;&#xff1a; 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票&#xff08;需选择影院座位&#xff09;、看过&#xff08;评论…

java使用面向对象实现图书管理系统

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

基本shell功能实现(exec系列程序替换函数练习)

shell 功能描述思路介绍1.实现常驻进程功能2.实现命令读取功能3. 实现命令解析功能4.实现子进程执行命令功能5.完善功能 补充内容让父进程运行内置命令实现子进程能够获得父进程的环境变量功能&#xff08;export命令&#xff09;shell实现重定向功能 全部代码如下&#xff1a;…

『 C++ 』二叉树进阶OJ题

文章目录 根据二叉树创建字符串 &#x1f996;&#x1f969; 题目描述&#x1f969; 解题思路&#x1f969; 代码 二叉树的层序遍历(分层遍历) &#x1f996;&#x1f969; 题目描述&#x1f969; 解题思路&#x1f969; 代码 二叉树的层序遍历(分层遍历)Ⅱ &#x1f996;&…

一篇文章带你了解SpringBoot目录结构

前言 SpringBoot是整合Spring技术栈的一站式框架&#xff0c;是简化Spring技术栈的快速开发脚手架&#xff0c;是一个能够快速构建生产级别的Spring应用的工具。SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;简化Spring项目搭建及开发过程。…