Pyinstaller加密打包应用的示例代码


Posted in Python onJune 11, 2020

pyinstaller是一个非常简单的打包python的py文件的库。用起来就几条命令就够了,

官方文档:pyinstaller

代码混淆

使用https://pyob.oxyry.com/ 进行代码的混淆(找不到什么可用的离线混淆库)

Pyinstaller加密打包应用的示例代码

抓取真实api后

def obfuscation(py_file, save_path):
 print("读取文件:", py_file)
 with open(py_file, "r", encoding="utf-8") as f:
  py_content = f.read()

 print("进行混淆中...")
 url = "https://pyob.oxyry.com/obfuscate"
 headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
  "Referer": "http://pyob.oxyry.com/",
  "content-type": "application/json",
  "cookie": "_ga=GA1.2.1306886713.1588752647; _gid=GA1.2.46944674.1588899118"
 }
 data = json.dumps({
  "append_source": "false",
  "preserve": "",
  "remove_docstrings": "true",
  "rename_default_parameters": "false",
  "rename_nondefault_parameters": "true",
  "source": py_content
 })
 result = json.loads(requests.post(url, data=data, headers=headers).text)["dest"]
 result = "# cython: language_level=3\n" + result
 print("混淆成功...")

 with open(save_path, "w", encoding="utf-8") as f:
  f.write(result)
 print("混淆文件已写入{}\n".format(save_path))
 
if __name__ == '__main__':
 obfuscation("my.py", "../混淆/my.py")
 obfuscation("approach.py", "../混淆/approach.py")

编译pyd

build_pyd.py

from distutils.core import setup
from Cython.Build import cythonize

setup(
 name='any words.....',
 ext_modules=cythonize(["my.py","approach.py" ])
)

执行打包

import json
import os
# 清理旧pyd文件
import uuid
import requests
def clearPyd():
 for file in os.listdir():
  if ".pyd" in file:
   print("删除.pyd:", file)
   os.remove(file)
 print("***********************************************************************")
# 构建pyd文件
def buildPyd():
 os.system("python build_pyd.py build_ext --inplace")
# 重命名pyd文件
def renamePyd():
 print("***********************************************************************")
 for file in os.listdir():
  if ".pyd" in file:
   print("重新命名pyd:", file)
   os.rename(file, file[:file.find(".")] + ".pyd")
 for file in os.listdir():
  if ".c" in file:
   print("删除.c文件:", file)
   os.remove(file)
 print("***********************************************************************")
# 执行打包
def pyinstaller(key, ico):
 os.system("pyinstaller -F --key {} -i {} main.py".format(key, ico))
# 删除bulid和spec文件
def clearBuildAndSpec():
 import shutil
 shutil.rmtree('build')
 print("删除bulid文件夹")
 os.remove("main.spec")
 print("删除spec文件")
if __name__ == '__main__':
 clearPyd() # 清理旧pyd文件
 buildPyd() # 构建pyd文件
 renamePyd() # 重命名pyd文件
 pyinstaller(uuid.uuid4()[0:16], "1.ico") # 执行打包
 clearPyd() # 清理pyd文件
 clearBuildAndSpec() # 删除bulid和spec文件

总结

到此这篇关于Pyinstaller加密打包应用的文章就介绍到这了,更多相关Pyinstaller加密打包内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
Python实现矩阵转置的方法分析
Nov 24 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
创建pycharm的自定义python模板方法
May 23 Python
django表单的Widgets使用详解
Jul 22 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Django接收自定义http header过程详解
Aug 23 Python
python zip,lambda,map函数代码实例
Apr 04 Python
在keras下实现多个模型的融合方式
May 23 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 Python
解决keras加入lambda层时shape的问题
Jun 11 #Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 #Python
keras slice layer 层实现方式
Jun 11 #Python
Spring http服务远程调用实现过程解析
Jun 11 #Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 #Python
python怎么提高计算速度
Jun 11 #Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 #Python
You might like
php检测图片木马多进制编程实践
2013/04/11 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php post换行的方法
2020/02/03 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
安装Python的教程-Windows
2017/07/22 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python实现屏保计时器的示例代码
2018/08/08 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
python config文件的读写操作示例
2019/09/27 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
如何解决python多种版本冲突问题
2020/10/13 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
补充协议书范本
2014/04/23 职场文书
销售目标责任书
2014/07/23 职场文书
教师节领导致辞
2015/07/29 职场文书