#!/usr/bin/env python
#
# Dummy Python bytecode fuzzer
#
# 04/17/2007 - sebastien.martini@gmail.com
#
# usage: ./dummy.py amodule.py
#
import random, os, sys

nb = 100  # generate 'nb' fuzzed bytecode files
module = sys.argv[1].split('.')[0]
prefix = 'fuzzed-%s-' % module

__import__(module)
fo = file(sys.argv[1] + 'c', 'rb')
co = fo.read()

# generate fuzzed .pyc
for i in range(nb):
    do = file('%s%d.pyc' % (prefix, i), 'wb')
    cpy = co[:]
    r = random.randint(0,len(cpy))
    do.write(cpy[:r]+chr(random.randint(0,255))+cpy[r+1:])
    do.close()

# run .pyc
for i in range(nb):
    cmd = 'python %s%d.pyc' % (prefix, i)
    print cmd
    os.system(cmd)
