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实现遍历数据库并获取key的值
May 17 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
python正则实现提取电话功能
Feb 24 Python
对pandas中apply函数的用法详解
Apr 10 Python
Python中property函数用法实例分析
Jun 04 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
python中的json总结
Oct 11 Python
python的等深分箱实例
Nov 22 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
python如何快速生成时间戳
Jul 21 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
如何用Django处理gzip数据流
Jan 29 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
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
Python线程创建和终止实例代码
2018/01/20 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
六一儿童节活动策划方案
2014/01/27 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
啤酒节策划方案
2014/05/28 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
十佳少年事迹材料
2014/12/25 职场文书
团员个人总结
2015/02/26 职场文书
校车安全管理责任书
2015/05/11 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Python快速实现一键抠图功能的全过程
2021/06/29 Python
分享Python获取本机IP地址的几种方法
2022/03/17 Python
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers