因为业务需求,需要编写一个脚本实现对压缩文件加密的检测,调研了下,将自己的思路分享下
常见的压缩文件格式有 zip, gz, tar, rar
它们的压缩加密方式不同,分别处理这四种格式
对于zip格式
zip的加密主要是对加密标志位的检测,如果是奇数则为加密,如果是偶数则没有加密。可以通过python标准库的zipfile来实现
def check_zip(file: str) -> bool:
'''
name:
des: 检测zip格式压缩保是否加密
param {传入的文件名}
return {True:文件加密 False:文件没加密}
'''
zf = zipfile.ZipFile(file)
for zinfo in zf.infolist():
is_encrypted = zinfo.flag_bits & 0x1
if is_encrypted:
return True
else:
return False
对于rar格式
加密原理可以百度,python标准库里没有检测rar的库,需要pip install rarfile
def check_rar(file: str) -> bool:
'''
name:
des: 检测rar格式压缩包是否加密
param {传入的文件名}
return {True:文件加密 False:文件没加密}
'''
rf = rarfile.RarFile(file)
is_encrypted = rf.needs_password()
if is_encrypted:
return True
else:
r