#! /usr/bin/env python3 # encoding: utf-8 # -------------------------------------------------- # Library imports import over # -------------------------------------------------- # Local imports import version # -------------------------------------------------- # Exceptions class ConfigurationError(Exception): pass # -------------------------------------------------- # Functions # -------------------------------------------------- # Classes # -------------------------------------------------- if __name__ == "__main__": main = over.app.Main("over-hex", version.str, "AO-JSL", features={"config_file": True}) main.add_option("color", "Use colors.", bool, [True], abbr="C") main.add_option("header", "Show a header (byte numbers).", bool, [True], abbr="H") main.add_option("offsets", "Show a column of offsets (line numbers).", bool, [True], abbr="O") main.add_option("ascii", "Show an ASCII translation (text).", bool, [True], abbr="A") main.add_option("width", "How many bytes per line of output to show.", int, [32], count=1, abbr="o") main.add_option("seek", "Byte number at which output starts.", int, [0], count=1, abbr="s") main.add_option("to", "Byte number where output ends. Use 0<.> to read the whole file but keep in mind that it has to fit in memory.", int, [10240], count=1, abbr="t") main.add_option("skip", "Skip lines of output that are identical.", bool, [True], abbr="S") main.add_doc("Description", ["A much less painful alternative to hexdump(1)."]) main.setup() for target in main.targets: with open(target, "rb") as f: f.seek(main.cfg.seek) data = f.read(main.cfg.to - main.cfg.seek) over.misc.hexdump(data, width=main.cfg.width, show_header=main.cfg.header, show_offsets=main.cfg.offsets, show_ascii=main.cfg.ascii, use_colors=main.cfg.color, initial_offset=main.cfg.seek, skip_same=main.cfg.skip)