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中利用原始套接字进行网络编程的示例
May 04 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python tornado微信开发入门代码
Aug 24 Python
python爬虫超时的处理的实例
Dec 19 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
python set内置函数的具体使用
Jul 02 Python
python列表,字典,元组简单用法示例
Jul 11 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
Python with语句用法原理详解
Jul 03 Python
python 使用建议与技巧分享(四)
Aug 18 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 什么是PEAR?(第二篇)
2009/03/19 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
再谈JavaScript线程
2015/07/10 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python中global与nonlocal比较
2014/11/21 Python
浅谈Python的异常处理
2016/06/19 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
业务经理岗位职责
2013/11/11 职场文书
如何写求职信
2014/05/24 职场文书
考试没考好检讨书
2015/05/06 职场文书
开业典礼致辞
2015/07/29 职场文书
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB