| #!/usr/bin/env python | |
| import mmap | |
| import os | |
| from random import randint | |
| import sys | |
| RANGE_START = 0x1b30 | |
| RANGE_END = 0x1b50 | |
| MIN_BYTES_TO_FLIP = 1 | |
| MAX_BYTES_TO_FLIP = 5 | |
| with open(sys.argv[1], "r+b") as f: | |
| mapped = mmap.mmap(f.fileno(), 0) | |
| bytes_to_flip = randint(MIN_BYTES_TO_FLIP, MAX_BYTES_TO_FLIP) | |
| bytes_flipped = 0 | |
| while bytes_flipped < bytes_to_flip: | |
| byte_pos = randint(RANGE_START, RANGE_END) | |
| byte_new = chr(randint(0, 255)) | |
| mapped[byte_pos] = byte_new | |
| bytes_flipped += 1 | |
| mapped.close() |