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 PyQt5标准对话框用法示例
Aug 23 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
python顺序执行多个py文件的方法
Jun 29 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
Django自关联实现多级联动查询实例
May 19 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
keras分类模型中的输入数据与标签的维度实例
Jul 03 Python
Python爬虫之Spider类用法简单介绍
Aug 04 Python
Golang Web 框架Iris安装部署
Aug 14 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生成Gif图片验证码
2013/10/27 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
python实现udp数据报传输的方法
2014/09/26 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python实现学员管理系统
2019/02/26 Python
python实现弹跳小球
2019/05/13 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
Java中实现多态的机制
2015/08/09 面试题
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
小学生成长感言
2014/01/30 职场文书
党性心得体会
2014/09/03 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
详解Javascript实践中的命令模式
2021/05/05 Javascript
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL