Python基础:加密你的Python源码顺便再打个包如何?
off999 2024-09-26 16:09 32 浏览 0 评论
成为一个智慧、快乐和富有的人。
——王宇航
导语
熟悉Python的小伙伴,有没有考虑过:如何让其他小伙伴(包括没有Python基础的小伙伴)更方便更快捷地使用你的Python程序,且不用担心自己的核心程序泄漏出去呢?
首先想到的便是将程序源码编译成一个exe文件,这样所有小伙伴直接双击exe文件便可以运行程序。但这便涉及到一个问题,这个操作只是对源码进行一个打包,类似于添加到压缩文件,用户也可以轻易地将压缩文件解压,到时候程序中的所有源码便会暴露出来。
考虑到在C和C++这种编译型语言中是将所写的语言编译成机器代码,即二进制代码,无法通过二进制代码反编译出源码。Python是一门解释型语言,但我们可以通过Cython库将我们程序中的核心源码编程成pyd格式的文件,即Python环境中的DLL文件,其是二进制编码,同样无法被反编译。
由此,对于我们的Python源码,我们可以先将其核心部分编译成pyd格式进行加密,然后再将程序打包成一个exe文件,方便用户使用,让你的Python程序更安全、更便捷。文章主要分为三个部分,希望这篇文章可以为有这方面需求的小伙伴提供一些帮助:
1.首先是新建一个Python小项目,简单实现对文件夹内图片进行批量重命名的操作,以此为示例,便于理解和后续操作的描述;
2.其次是对Python源码加密操作的详细讲解;
3.最后讲解了Python程序的打包操作,并展示最终实验效果。
新建Python项目
初始化虚拟环境
在项目目录下新建一个干净的Python虚拟环境,可以直接在PyCharm中操作,或者使用virtualenv venv命令创建环境,从下图可以看到环境中只包含pip和setuptools两个库。
完成Python项目
项目文件夹下存放着5张待命名的图片和两个python文件,内容如下图所示,rename.py中定义了重命名图片的函数my_rename,run_rename.py是项目的启动文件,通过调用my_rename函数完成图片的重命名。
rename.py
run_rename.py
Python源码加密
安装Cython
Cython全称是C-Extensions for Python,可以看作是python的一个第三方库,关于Cython的介绍,官网(https://cython.org/)上是这样的,有兴趣的小伙伴可以多去了解一下。安装命令:pip install Cython
设置setup.py文件
在项目文件夹下新建一个setup.py文件,文件内容如下,setup中的name变量可以自己起一个名字,关键是修改ext_modules变量,将需要加密的python文件名填入其中即可。
setup.py
运行setup.py文件
在项目文件夹的目录下,打开命令终端,输入命令python setup.py,运行setup.py文件,也可在PyCharm中直接运行。运行结果如下图所示,提示代码已生成,同时也给出了生成文件的路径,通常情况下文件生在虚拟环境的Lib\site-packages目录下。
查看生成文件的目录,新生成如下两个文件,pyd格式文件便为对核心源码进行加密后的文件,其无法被反编译。然后在项目文件夹下生成rename.c和build文件夹,可以直接删除,此时rename.py和setup.py也可以从项目目录下移除,故目录下只剩run_rename.py和5张待重命名的图片。
Python程序打包
安装Pyinstaller
Pyinstaller也是Python的第一个第三方库,使用起来很方便,更多信息详见官网(https://pyinstaller.org/),安装命令:pip install pyinstaller
生成spec文件
运行如下命令便可在项目目录下生成spec文件,其中-F参数是指将程序打包为一个exe文件,可以用文本编辑器打开并编辑spec文件,根据不同的程序打包需求,对spec文件中的参数进行对应的调整,后续我们会再推出一篇文章来详细讲述打包相关的操作。
pyi-makespec -F run_rename.py
生成exe文件
运行命令:pyinstaller run_rename.spec,在当前目录的生成build和dist文件夹,在dist文件夹下找到打包好的exe文件,将其复制出来,刚刚生成的的文件及目录可以直接删除。
运行exe文件
将生成的exe文件放到图片的文件夹中,双击运行exe文件,弹出黑窗口后消失(也可在命令终端中输入对应的exe文件名运行,此时在终端上可以看到程序运行过程打印出来的信息),发现图片的文件名已经修改完成,OK,Python源码的加密和打包功能实现。
编辑:庄桢
相关推荐
- 大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍
-
“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...
- 电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器
-
在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...
- 设置了加密密码zip文件要如何打开?这几个方法可以试试~
-
Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...
- 大文件想要传输成功,怎么把ZIP文件分卷压缩
-
不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...
- 高效处理 RAR 分卷压缩包:合并解压操作全攻略
-
在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...
- 2个方法教你如何删除ZIP压缩包密码
-
zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...
- 速转!漏洞预警丨压缩软件Winrar目录穿越漏洞
-
WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...
- 文件解压方法和工具分享_文件解压工具下载
-
压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记3
-
1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...
- Python内置tarfile模块:读写 tar 归档文件详解
-
一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...
- 使用python展开tar包_python拓展
-
类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...
- 银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留
-
近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...
- ZIP文件怎么打开?2个简单方法教你轻松搞定!
-
在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...
- Ubuntu—解压多个zip压缩文件.zip .z01 .z02
-
方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...
- 如何使用7-Zip对文件进行加密压缩
-
7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)