#!/usr/bin/env python import getopt import json import os import struct import sys OP_OPEN, OP_CLOSE, OP_WRITE, OP_EXEC = 1, 2, 3, 4 TYPE_INPUT, TYPE_OUTPUT, TYPE_INTERACT = 1, 2, 3 COLOR_INTERACT = "\033[36m" COLOR_INPUT = "\033[33m" COLOR_RESET = "\033[0m" def playlog(fd, settings): thelog = {} thelog["version"] = 1 thelog["width"] = 80 thelog["height"] = 24 thelog["duration"] = 0.0 thelog["command"] = "/bin/bash" thelog["title"] = "Cowrie Recording" theenv = {} theenv["TERM"] = "xterm256-color" theenv["SHELL"] = "/bin/bash" thelog["env"] = theenv stdout = [] thelog["stdout"] = stdout ssize = struct.calcsize(" ..." % os.path.basename(sys.argv[0]) ) if verbose: print( " -c colorify the output based on what streams are being received" ) print(" -h display this help") print(" -o write to the specified output file") if __name__ == "__main__": settings = {"colorify": 0, "output": ""} try: optlist, args = getopt.getopt(sys.argv[1:], "hco:") except getopt.GetoptError as error: sys.stderr.write(f"{sys.argv[0]}: {error}\n") help() sys.exit(1) for o, a in optlist: if o == "-h": help() if o == "-c": settings["colorify"] = True if o == "-o": settings["output"] = a if len(args) < 1: help() sys.exit(2) for logfile in args: try: logfd = open(logfile, "rb") playlog(logfd, settings) except OSError as e: sys.stderr.write(f"{sys.argv[0]}: {e}\n")