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列表删除的三种方法代码分享
Oct 31 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
Python线性回归实战分析
Feb 01 Python
python实现简单的单变量线性回归方法
Nov 08 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
python pandas移动窗口函数rolling的用法
Feb 29 Python
python-xpath获取html文档的部分内容
Mar 06 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
Python3.9新特性详解
Oct 10 Python
python输出国际象棋棋盘的实例分享
Nov 26 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实现的随机广告显示代码
2007/06/14 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[03:48]大碗DOTA
2019/07/25 DOTA
使用python 3实现发送邮件功能
2018/06/15 Python
查看python下OpenCV版本的方法
2018/08/03 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
python实现图片九宫格分割
2021/03/07 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
法学毕业生自我鉴定
2013/11/08 职场文书
跳蚤市场口号
2014/06/13 职场文书
大学生活动总结模板
2014/07/02 职场文书
2015年调度员工作总结
2015/04/30 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
退货证明模板
2015/06/23 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
python如何做代码性能分析
2021/04/26 Python