zip 伪加密 Python处理脚本
一个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打开就会提示有密码了)
参考网址: http://blog.csdn.net/ETF6996/article/details/51946250
需要修改的地方跟压缩文件的个数有关
压缩源文件数据区:
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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: CTF 伪加密
- 下一篇: [CTF]RAR加密原理