牛骨文教育服务平台(让学习变的简单)
博文笔记

zip 伪加密 Python处理脚本

创建时间:2017-03-01 投稿人: 浏览次数:1963
一个zip文件没有设置密码,但是你可以让它看起来有密码, 应该就是让判断是否加密的那一位更改一下

需要修改的地方跟压缩文件的个数有关
压缩源文件数据区: 
50 4B 03 04:这是头文件标记(0x04034b50)  14 00:解压文件所需 pkware 版本  00 00:全局方式位标记(有无加密)  08 00:压缩方式  这个地方的标志位叫 frFlags
压缩源文件目录区: 
50 4B 01 02:目录中文件文件头标记(0x02014b50) 
3F 00:压缩使用的 pkware 版本 
14 00:解压文件所需 pkware 版本 
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了) 

08 00:压缩方式 

这个地方的标志位叫deFlags


如果一个zip文件被伪加密处理,可以用用winhex等16进制编辑器来修改(010Editor可能比较方便),也可以通过脚本处理会没有伪加密的状态

python处理脚本如下:

#! python3
# coding:utf8
# author: neo
"""
zip伪加密去除脚本
"""

import sys

def removefade(para1):
	# 读取原zip文件
	zipfile = open(para1,"rb")
	zipfile_content = zipfile.read().encode("hex")
	zipfile.close()

	zf_len = len(zipfile_content)

	# 查找加密标志位并处理
	for i in xrange(zf_len):
		comp_con = zipfile_content[i:i+8]
		if comp_con == "504b0102":
			zipfile_content = zipfile_content[:i+17] + "0" + zipfile_content[i+18:]
		if comp_con == "504b0304":
			zipfile_content = zipfile_content[:i+13] + "0" + zipfile_content[i+14:]


	# 将处理后内容写入新文件
	newzip = open(para1[:-4] + "repair.zip","wb")
	newzip.write(zipfile_content.decode("hex"))
	newzip.close()
	print("Done")


if __name__ == "__main__":
	if(len(sys.argv) == 1):
		print("
usage example:")
		print(" python dzipfade.py a.zip
")
	else:
		para = sys.argv
		removefade(para[1])



参考网址: http://blog.csdn.net/ETF6996/article/details/51946250
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。