惊爆:当Python代码遇到zip解压炸弹,未做防护的你后悔莫及!

本文介绍了zip解压炸弹的概念,它能导致解压程序崩溃或资源耗尽。通过Python示例展示了如何制作简单的zip炸弹,并警示开发者在日常开发中,如网易云课堂的作业提交,存在此类安全风险。建议通过限制文件数量和动态解析文件大小来预防zip解压炸弹,以确保软件安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zip解压炸弹

在文章的开头,让我们先来介绍一下zip解压炸弹是个 什么妖怪!

解压炸弹是指解压缩后能够产生巨大的数据量的可疑压缩文件!默认设置是文件扫描中产生500MB以上解压数据的是“解压炸弹”,实时监控中是100MB,邮件监控是30MB。这样的压缩文件解压缩可能对解压程序造成严重负担或崩溃(可能用来攻击压缩软件以及占用大量电脑资源,或者杀毒软件的解压缩功能)。解压炸弹内,还可能存在病毒,解压中会自启动窃取用户信息

如何制作解压炸弹

 42.zip 是很有名的zip炸弹。一个42KB的文件,解压完其实是个4.5PB的“炸弹”。zip炸弹文件中有大量刻意重复的数据,这种重复数据在压缩的时候是可以被丢弃的,这也就是压缩后的文件其实并不大的原因。这一百多万个最终文件,每个大小为 4.3 GB 。因此整个解压过程结束以后,会得到 1048576 * 4.6 GB = 4508876.8 GB 也就是 4508876.8 ÷ 1024 ÷ 1024 = 4.5 PB 这需要特殊的压缩算法和工具,但我们可以通过Python做一个简单的zip解压炸弹:

# -*- coding: utf-8 -*-
import os

def make_boom(file_path, file_num, string_len):
    if not os.path.exists(file_path):
        os.mkdir(file_path)
    os.chdir(file_path)
    for i in range(file_num):
        with open('boom%d.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值