write random sectors on a drive
text · created 2026-09-01 18:43:13 · views 48
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