readblock.py 858 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env python3
  2. import subprocess as sp
  3. def main(args):
  4. with open(args.disk, 'rb') as f:
  5. f.seek(args.block * args.block_size)
  6. block = (f.read(args.block_size)
  7. .ljust(args.block_size, b'\xff'))
  8. # what did you expect?
  9. print("%-8s %-s" % ('off', 'data'))
  10. return sp.run(['xxd', '-g1', '-'], input=block).returncode
  11. if __name__ == "__main__":
  12. import argparse
  13. import sys
  14. parser = argparse.ArgumentParser(
  15. description="Hex dump a specific block in a disk.")
  16. parser.add_argument('disk',
  17. help="File representing the block device.")
  18. parser.add_argument('block_size', type=lambda x: int(x, 0),
  19. help="Size of a block in bytes.")
  20. parser.add_argument('block', type=lambda x: int(x, 0),
  21. help="Address of block to dump.")
  22. sys.exit(main(parser.parse_args()))