Advertisement
Guest User

unstripe.py

a guest
Mar 24th, 2024
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | Source Code | 0 0
  1. import argparse
  2.  
  3. def parse_arguments():
  4.     parser = argparse.ArgumentParser(description="De-strip drive images")
  5.  
  6.     parser.add_argument("-b", "--block-size", choices=["16K", "32K", "64K", "128K", "256K", "512K"], help="Block size of the array", required=True)
  7.     parser.add_argument("-o", "--output-image", help="Path to the output image", required=True)
  8.     parser.add_argument("-d", "--disk", help="Path to the disk image", action='append', required=True)
  9.     parser.add_argument("-v", "--verbose", help="Verbose output", action='store_true')
  10.  
  11.     return parser.parse_args()
  12.  
  13. def main():
  14.     args = parse_arguments()
  15.  
  16.     file_handlers = []
  17.     done_files = 0
  18.     block_offset = int(args.block_size.replace("K", "")) * 1024
  19.     output_file = open(args.output_image, "wb")
  20.  
  21.     if args.verbose:
  22.         print(f"Reading the {args.block_size} blocks from the following disks/disk-images in order:\n\t", "\n\t".join(args.disk))
  23.  
  24.     for i in args.disk:
  25.         file_handlers.append(open(i, "rb"))
  26.  
  27.     while done_files != len(file_handlers):
  28.         for fp in file_handlers:
  29.             data_block = fp.read(block_offset)
  30.             if len(data_block) == 0:
  31.                 done_files += 1
  32.  
  33.             output_file.write(data_block)
  34.             output_file.flush()
  35.             del data_block
  36.  
  37. main()
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement