Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # this is a conversion of http://blog.interrupt3h.com/?p=250
- import mmap, os
- from argparse import ArgumentParser
- MARKER=b'FWS'
- EXT='bin'
- FLASHEXT='swf'
- def vprint(*arg, **args):
- if options.verbose:
- print(*arg, **args)
- def newfilename(fn):
- base, ext = os.path.splitext(fn)
- return base+'.'+FLASHEXT
- def process(fn):
- with open(fn, 'rb', 0) as f, \
- mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as s:
- i = s.find(MARKER)
- if i == -1:
- print('unable to find marker')
- return
- nfn = newfilename(fn)
- with open(nfn, 'wb') as nf:
- nf.write(s[i:])
- print('wrote flash to', nfn)
- def filter_file(f):
- base, ext = os.path.splitext(f)
- ext = ext[1:]
- return ext == EXT
- def process_arg(arg):
- if os.path.isdir(arg):
- vprint('Filtering directory:', arg)
- for f in os.listdir(arg):
- process_arg(os.path.join(arg, f))
- else:
- vprint('Filtering file:', arg)
- if filter_file(arg):
- process(arg)
- def process_args():
- for arg in options.files:
- vprint('Processing argument: ', arg)
- process_arg(arg)
- if __name__ == '__main__':
- parser = ArgumentParser(usage='%(prog)s [options] filename')
- parser.add_argument('-v', '--verbose', action='store_true', dest='verbose')
- parser.add_argument('files', nargs='+', help='filenames to process')
- options = parser.parse_args()
- process_args()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement