Python zip伪加密

23 篇文章 5 订阅
10 篇文章 0 订阅

原理

zip伪加密是在文件头的加密标志位做修改,从而实现在打开文件时识被别为加密压缩包。
所以把相应标志为改回来即可!

脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: moddemod
# datetime: 2019/12/25 下午5:47 
# ide: PyCharm

import zipfile


def modified(filename):
    with open(filename, 'rb') as f:
        r_all = f.read()
        # print(r_all)
        r_all = bytearray(r_all)
        #  504B0304后的第3、4个byte改成0000
        index = r_all.find(b'PK\x03\x04')
        if not index:
            i = index + 4
            r_all[i + 2:i + 4] = b'\x00\x00'
         #  504B0102后的第5、6个byte改成0000
        index1 = r_all.find(b'PK\x01\x02')
        if index1:
            print()
            i = index1 + 4
            r_all[i + 4:i + 6] = b'\x00\x00'
    with open('test.zip', 'wb') as f1:
        f1.write(r_all)


def show_b2h(filename):
    with open(filename, 'rb') as f:
        r = f.read(1)
        cnt = 0
        while r:
            b = ord(r)
            print('%02x ' % (b), end='')
            cnt = cnt + 1
            if cnt % 16 == 0:
                print()
            r = f.read(1)


def unzip_file(zip_src):

    r = zipfile.is_zipfile(zip_src)
    if r:
        fz = zipfile.ZipFile(zip_src, 'r')
        for file in fz.namelist():
            fz.extract(file, 'result')
    else:
        print('error')


if __name__ == '__main__':
    filename = 'flag.zip'
    show_b2h(filename)
    modified(filename)
    print('修改后为:')
    show_b2h('test.zip')

# 50 4b 03 04 文件头标记
# 14 00 解压文件所需要的pkware的版本
# 09 00 全局方式标志有无加密
# 08 00 50 a3 最后修改文件时间 日期
# 21 38 76 65 crc32
# 19 00 00 00 压缩后尺寸
# 17 00 00 00 未压缩尺寸
# 08 00 文件长度
# 00 00 扩展记录长度

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值