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 相关文章推荐
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
python统计文本文件内单词数量的方法
May 30 Python
python中的代码编码格式转换问题
Jun 10 Python
python3抓取中文网页的方法
Jul 28 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
使用Python更换外网IP的方法
Jul 09 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
使用django自带的user做外键的方法
Nov 30 Python
Python编解码问题及文本文件处理方法详解
Jun 20 Python
Python音乐爬虫完美绕过反爬
Aug 30 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
php中json_encode中文编码问题分析
2011/09/13 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
python的turtle库使用详解
2019/05/10 Python
keras 多任务多loss实例
2020/06/22 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
模范家庭事迹材料
2014/02/10 职场文书
中学生打架检讨书
2014/02/10 职场文书
军训考核自我鉴定
2014/02/13 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
2015年商场工作总结
2015/04/27 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
500字作文之周记
2019/12/13 职场文书