#!/usr/bin/env python3 import subprocess as sp def main(args): with open(args.disk, 'rb') as f: f.seek(args.block * args.block_size) block = (f.read(args.block_size) .ljust(args.block_size, b'\xff')) # what did you expect? print("%-8s %-s" % ('off', 'data')) return sp.run(['xxd', '-g1', '-'], input=block).returncode if __name__ == "__main__": import argparse import sys parser = argparse.ArgumentParser( description="Hex dump a specific block in a disk.") parser.add_argument('disk', help="File representing the block device.") parser.add_argument('block_size', type=lambda x: int(x, 0), help="Size of a block in bytes.") parser.add_argument('block', type=lambda x: int(x, 0), help="Address of block to dump.") sys.exit(main(parser.parse_args()))