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访问sqlserver示例
Feb 10 Python
python中bisect模块用法实例
Sep 25 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
Python Django Cookie 简单用法解析
Aug 13 Python
Python函数中的可变长参数详解
Sep 12 Python
Django搭建项目实战与避坑细节详解
Dec 06 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
详解python的异常捕获
Mar 03 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
PHP安全防范技巧分享
2011/11/03 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
改进Django中的表单的简单方法
2015/07/17 Python
Python 装饰器深入理解
2017/03/16 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
Python定义一个函数的方法
2020/06/15 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
应届毕业生个人自我评价
2013/09/20 职场文书
店长助理岗位职责
2013/12/13 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
GO中sync包自由控制并发示例详解
2022/08/05 Golang