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