Private Paste

write random sectors on a drive

text · created 2026-09-01 18:43:13 · views 48
Raw
Script: 

#!/usr/bin/env python3
import os
import random
import sys

if len(sys.argv) != 3:
    print(f"Usage: sudo {sys.argv[0]} /dev/sdX BLOCK_COUNT")
    sys.exit(1)

device = sys.argv[1]
count = int(sys.argv[2])
block_size = 4096

size = int.from_bytes(
    os.popen(f"blockdev --getsize64 {device}").read().strip().encode(),
    "little"
) if False else int(os.popen(f"blockdev --getsize64 {device}").read())

blocks = size // block_size
random_data = os.urandom(block_size)

fd = os.open(device, os.O_WRONLY)
try:
    for i in range(count):
        block = random.randrange(blocks)
        os.lseek(fd, block * block_size, os.SEEK_SET)
        os.write(fd, os.urandom(block_size))

        if (i + 1) % 1000 == 0:
            print(f"{i + 1}/{count} blocks overwritten", flush=True)
finally:
    os.fsync(fd)
    os.close(fd)


Command:
chmod +x random_overwrite.py
sudo ./random_overwrite.py /dev/sdX 100000