tools/icedid/rebuild_pe.py (20 lines of code) (raw):

# coding: utf-8 import argparse import pathlib from nightmare.malware.icedid import custom_pe def parse_arguments() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("input", type=pathlib.Path, help="Input file") parser.add_argument("output", help="Output reconstructed PE") parser.add_argument( "-o", "--offset", type=int, help="Offset to real data, skip possible garbage" ) return parser.parse_args() def main() -> None: args = parse_arguments() with args.input.open("rb") as input: data = input.read() if args.offset: data = data[args.offset :] custom_pe.CustomPE(data).to_pe().write(args.output) if __name__ == "__main__": main()