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程序与系统shell交互的方式
Apr 09 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
微信跳一跳python代码实现
Jan 05 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
如何更优雅地写python代码
Jul 02 Python
python matplotlib库直方图绘制详解
Aug 10 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
python实现智能语音天气预报
Dec 02 Python
python自动点赞功能的实现思路
Feb 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读取远程gzip压缩网页的方法
2014/12/29 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
详细介绍Python的鸭子类型
2016/09/12 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
七夕情人节促销方案
2014/06/07 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
教师聘用意向书
2015/05/11 职场文书
关于五一放假的通知
2015/08/18 职场文书