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函数参数*args**kwargs用法实例
Dec 04 Python
编程语言Python的发展史
Sep 26 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
使用Python pip怎么升级pip
Aug 11 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 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
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
php简单的留言板与回复功能具体实现
2014/02/19 PHP
php树型类实例
2014/12/05 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
轻松掌握python设计模式之策略模式
2016/11/18 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Python中一些深不见底的“坑”
2019/06/12 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
运动会100米解说词
2014/01/23 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
温馨提示标语
2014/06/26 职场文书
大四学生个人总结
2015/02/15 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
以下牛机,你有几个
2022/04/05 无线电