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 解析XML文件
Apr 15 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
python3.6数独问题的解决
Jan 21 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
Python 画出来六维图
Jul 26 Python
python for循环remove同一个list过程解析
Aug 14 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
Python 如何解决稀疏矩阵运算
May 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时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
Python如何快速实现分布式任务
2017/07/06 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
基于pip install django失败时的解决方法
2018/06/12 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
研发工程师的岗位职责
2013/11/18 职场文书
教师实习自我鉴定
2013/12/13 职场文书
英文自荐信
2013/12/19 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
批评与自我批评范文
2014/10/15 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python