python文件加密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python文件加密相关的知识,希望对你有一定的参考价值。

参考技术A 编译单个文件
python -m py_compile code.py
编译整个目录
python -m compileall ./
缺点:可以被反编译

编写setup.py文件

执行命令
pip install cython
python setup.py build_ext --inplace

怎么样给python文件加密

简单模式:
from hashlib import md5
def md5_file(name):
m = md5()
a_file = open(name, \'rb\') #需要使用二进制格式读取文件内容
m.update(a_file.read())
a_file.close()
return m.hexdigest()
if __main__ == \'__init__\':
print md5_file(\'d:/test.txt\')
大文件速度更快一点的方式
#!/usr/bin/python
#encoding=utf-8
import io
import sys
import hashlib
import string
def printUsage():
print (\'\'\'\'\'Usage: [python] pymd5sum.py \'\'\')
def main():
if(sys.argv.__len__()==2):
#print(sys.argv[1])
m = hashlib.md5()
file = io.FileIO(sys.argv[1],\'r\')
bytes = file.read(1024)
while(bytes != b\'\'):
m.update(bytes)
bytes = file.read(1024)
file.close()
#md5value = ""
md5value = m.hexdigest()
print(md5value+"\\t"+sys.argv[1])
#dest = io.FileIO(sys.argv[1]+".CHECKSUM.md5",\'w\')
#dest.write(md5value)
#dest.close()
else:
printUsage()
main()
参考技术A

对 Python 加密时可能会有两种形式,一种是对Python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。

1、 对 python转exe加壳

下载最新版Virbox Protector加壳工具,使用加壳工具直接对demo.exe进行加壳操作

2、对.py/.pyc加密

第一步,使用加壳工具对 python 安装目录下的 python.exe 进行加壳,将 python.exe 拖入到加壳工具 VirboxProtector 中,配置后直接点击加壳。

第二步,对.py/.pyc 进行加密,使用 DSProtector 对.py/.pyc 进行保护。

安全技术:

l 虚拟机外壳:精锐5的外壳保护工具,创新性的引入了预分析和自动优化引擎,有效的解决了虚拟化保护代码时的安全性和性能平衡问题。

l 碎片代码执行:利用自身成熟的外壳中的代码提取技术,抽取大量、大段代码,加密混淆后在安全环境中执行,最大程度上减少加密锁底层技术和功能的依赖,同时大量大段地移植又保证了更高的安全性。

l Virbox加密编译引擎:集编译、混淆等安全功能于一身,由于在编译阶段介入,可优化空间是普遍虚拟化技术无法比拟的,对代码、变量的混淆程度也有了根本的提升。

l 反黑引擎:内置R0级核心态反黑引擎,基于黑客行为特征 的(反黑数据库)反制手段。精准打击调试、注入、内存修改等黑客行为,由被动挨打到主动防护。

加密效果:

加密之前

以pyinstall 的打包方式为例,使用pyinstxtractor.py文件对log_322.exe进行反编译,执行后会生成log_322.exe_extracted文件夹,文件夹内会生成pyc文件。

成功之后会在同目录下生成一个文件夹

使用010 Editor添加几个字节,重命名为pyc文件

注【此处和python的版本有关,Python27的可以直接解压为pyc文件,Python34还需要添加几个字节】

然后使用EasyPython Decompiler 工具反编译pyc

成功之后通目录下会生成dis文件,生成出的dis文件可以用文本编辑器打开,看到源码

反编译后的log_322.exe的源码

加密之后:

【注:不同的打包方式原理不同,源码存放的位置也不同,所以需要保护的具体模块也是不同的】

加密之后再尝试解压log322.exe失败,已经无法进行反编译,使用常规反编译工具也是无法进行分析的。

以上是关于python文件加密的主要内容,如果未能解决你的问题,请参考以下文章

Python-加密-压缩-文件

python 通过crc32得到加密文件内容

python [使用PyPDF2加密PDF文件]使用Python加密PDF文件。 #蟒蛇

Python程序加密打包

python加密大文件

python:如何加密文件?