5种方法,加密你的Python代码 !

Python越来越热门了,2019年3月TIOBE编程语言排行榜上,Python更是罕见的击败了“霸榜三巨头”之一的C++,挤进前三。

1240


Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。

其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。

当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。

1

Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。

.pyc文件是一个二进制的文件,是不具备可读性的。

假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码?

想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。

1240

执行如下命令,即可将目录下的所有.py文件编译成.pyc文件:

python -m compileall 然后删除 目录下所有 .py 文件就可以了。

$ find -name '*.py' -type f -print -exec rm {} ;

这一方法,可以加密我们的Python代码,胜过代码裸在外面。尴尬的是,因为Python解释器的兼容较差,有些版本并不能运行.pyc文件。而且已经有现成的反编译工具,可以直接破解。

比如python-uncompyle6(「链接」),只要执行以下命令,就可以搞定。

$ uncompyle6 *compiled-python-file-pyc-or-pyo*


1240


关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货

每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实


2

代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。

内容不可读,代码就受到了保护。

代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub - astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。

这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。

一般而言,使用这一方式较为简单,实用。


1240

3

如果有一款工具,可以将Python脚本打包成在某一平台的可执行文件,最终我们发行的,是一份打包完成的二进制文件,那么程序就更难被破解了?

py2exe(FrontPage - py2exe.orgFrontPage - py2exe.org)就是一款很好的打包工具,可以将Python脚本打包成可在Windows上运行的文件。

这一方式的优点是进一步提高了破解门槛。遗憾的是,你只能在windows上运行它。


1240

4

Python运行速度慢何解?用Cython就可以带来性能的提升。实际上,Cython也可以用来加密Python代码。

Cython的原理是,将.py编译为.c文件,再将.c文件编译为.so或者.pyd,这样一来,文件就变得难以破解了。

这样做的好处是,Python代码很难被破解,缺点是有时候,Cython可能不支持一小部分代码,完善起来就比较麻烦了。


1240

5

最后一种方法,做得比较绝。

由于Python是解释型语言,因此在发行Python程序的时候,就必须包含一个Python解释器,如果我们修改这个解释器,代码不就被保护起来了吗?

如果我们能对最原始的Python代码进行加密,加密后的代码被发行后。哪怕被别人看到了,但因为不晓得算法是怎样的,就破解不了了。

这是因为Python解释器本身是一个二进制文件,自然也就无法获得关键性的数据,进而保护了源码。

1240

虽然这一方法最为安全,可操作难度较高。你必须掌握基本的加解密算法,还要探究Python执行代码的方式,从而了解到从什么地方进行加解密。最后禁用字节码,以防通过.pyc反编译即可。

以上五种加密方式,有利有弊,有难有易,根据需求选择就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143031.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python加密与解密(一文搞定)

前言 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话 保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机, 密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展&…

Python 常见加密方式和实现

一、前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。 将字符串和Bytes互相转换可以…

Python读取excel表格中的网址并批量打开网页

import webbrowser import xlrdwb xlrd.open_workbook("demo.xlsx") sht wb.sheet_by_name("Sheet1") for x in range(sht.nrows):webbrowser.open(sht.cell(x, 1).value)# 用系统默认浏览器打开指定网页

如何批量打开一组网页?

有时要批量打开一组网页,研究出三种方法 1.使用在线的网页工具打开,如:http://www.a-site.cn/tool/kai/ 2.使用标签,新建一个标签文件夹,把要打开的网页放到这个文件夹下,在文件夹下右击选择“打开所有标签…

html 批量依次打开网页,傲游浏览器批量一键打开网页的几种方法

在傲游浏览器中,我们可以批量一键打开网页,你相信吗?这是真的。只要在傲游浏览器中创建一个空白文件夹,然后将需要打开的网页放入该文件夹中。一键登录的技巧下面来演示下。 软件名称:Maxthon傲游浏览器 v6.0.0.1700 Alpha 中文官…

简易小工具实现批量打开多个网页

最近有个需求,希望一次性可以打开多个网页,网址自由指定,这个需求的实现非常简单,使用基本的c代码调用system函数即可,都不需要MFC相关的东西。 但是我实测一些工具后发现一个问题,当打开超过大约3个网址的…

如何批量保存html,如何批量保存网页信息

如何批量保存网页信息 现在我们利用网络数据库探索者来批量保存这些联系地址,就能大大减少重复劳动的工作量。 下载地址:http://www2.skycn.com/soft/14620.html 一、查找页面规律 在使用网络数据库探索者前我们要摸清页面的规律,一般可以从两…

批处理批量打开网页

我们的Windows系统里有种文件拓展名是bat,或是cmd。 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为bat 。目前比较常见 的批处理包含两类:DOS批处理和PS批处理。PS批处理是基…

DOS BAT脚本批量打开Edge网页

Bat脚本配置说明 前言打开效果详细命令测试环境 前言 测试业务时,需要批量打开网页,由于IE停止更新,本文以Edge为例。 关键点:页面打开需增加延迟,不要批量同时打开,否则容易漏掉,5个网址只能…

eyeurl—一款网页批量截图工具

eyeurl使用说明 开发说明 eyeurl由作者:云小书 开发,源于日常渗透测试中,信息收集到的url过多,挨个打开查看比较繁琐,且效率极低,网上有大佬开发的eyewitness,且ui布局各方面都比较完善&#…

批量保存网页

文章目录 背景工具SeleniumgeckodriverPyUserInput工具下载和安装 代码测试总结 背景 之前已经写了 2 篇文章: 备份 CSDN 博客(上) 备份 CSDN 博客(下) 但是效果都不怎么好,其实还有一种简单粗暴的方法…

批量获取/打开链接 - 实践

1.应用场景 批量操作, 打开链接. 2.学习/操作 思路 获取超链接标签, 然后使用批量打开每个超链接, 从而不需要手动一个个打开链接 完善 建议用脚本实现, 然后写一个定时脚本[服务器上],每天定时执行. 环境 Chrome浏览器/其他浏览器也可以 PHP 7.3 nginx 1.15/1.16 方式一 2.1…

批量保存网页为单个网页文件

有时候,总有会遇到一些奇怪的需求,各种搜索都找不到答案,本次记录批量保存网页到单个网页文件。 使用背景: 只想简单的解决问题,不涉及编程 网页带格式,将网页存为PDF格式会变 量太大,一个个的处理太累 涉及…

【数据安全-02】AI打假利器数字水印,及java+opencv实现

AIGC 的火爆引燃了数字水印,说实话数字水印并不是一项新的技术,但是这时候某些公司拿出来宣传一下特别应景,相应股票蹭蹭地涨。数字水印是什么呢,顾名思义,和我们在pdf中打的水印作用差不多,起到明确版权、…

python自动打开网页_python 自动批量打开网页的示例

python 自动批量打开网页的示例 如下所示: import webbrowser import codecs import time with open("test.txt") as fp: for ebayno in fp: url http://ebay.com/itm/ebayno.strip() time.sleep(1) #打开间隔时间 webbrowser.open(url) #打开网…

【bat批处理】手把手教你批量打开软件、文件、网页等

【bat批处理】打开软件、文件等 0- 前言1- start 命令用法1.0 注释1.1 start 命令说明1.2 启动软件1.3 打开文件1.4 打开文件夹1.5 打开网页 2-实战2.0 怎么创建bat批处理文件2.1 打开软件、文件、网页2.2 微信多开2.3 定时关机2.4 取消定时关机2.5 显示桌面图标 3 小结 0- 前言…

认识Vue中组件利器-插槽Slot-案例介绍

一. 插槽的使用 1.1. 认识插槽slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示; 但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定…

IDEA汉化后转回英文,只要三步

如果你觉得本文对你有帮助,麻烦动动手指顶一下

IntelliJ IDEA全界面汉化(官方插件)

现在很多人用IntelliJ IDEA写java代码,但小白很苦恼,看不懂,今天来分享一下怎么汉化 因为现在IDEA官方是支持汉化了,所以我们直接使用IDEA的插件 4. 下载Chinese汉化包(第二个) 重启IDEA就可以看到页面都变…

IDEA汉化及如何改回英文界面版本

相信很多小伙伴们刚接触IDEA时,看到一堆英文界面不知道如何下手,今天教大家一个插件直接将界面中文版本,以及改回英文版本。建议点赞收藏哈! 一:汉化 1.打开左侧file,按箭头所示2.搜索Chinese,安装内存大的…