def info_parameter(self, arg): if self.active_module is None: various.print_warning("First you need to activate module with use command!") return if arg is None: various.print_warning("Invalid syntax try help info!") return if arg not in self.modules[self.active_module].parameters and \ arg not in action_manager.device_map[self.active_device].parameters and \ (self.active_payload is None or arg not in self.payloads[self.active_payload].parameters) and \ (arg != "payload" or not self.modules[self.active_module].payload_custom or len(self.modules[self.active_module].payload_actions) == 0): various.print_warning("Unknown parameter! '%s'" % arg) return if arg != "payload": if arg in self.modules[self.active_module].parameters: p = self.modules[self.active_module].parameters[arg] elif not self.modules[self.active_module].payload_custom and arg in self.payloads[ self.active_payload].parameters: p = self.payloads[self.active_payload].parameters[arg] elif arg in action_manager.device_map[self.active_device].parameters: p = action_manager.device_map[self.active_device].parameters[arg] print("\n[ PARAMETER " + various.colorize("red", arg) + " ]\n") print("Required: " + various.colorize("blue", "True" if (arg == "payload" or p["required"]) else "False")) if arg != "payload": print("Default value: " + various.colorize("blue", p["default"])) print("Value: " + various.colorize("blue", self.payload if arg == "payload" else p["value"])) print("\n") print((self.modules[self.active_module].payload_description if arg == "payload" else p["description"]) + "\n")
def info_action(self, arg): if arg not in action_manager.actions: various.print_warning("%s - unknown action" % arg) return print("\n=[ ACTION " + various.colorize("red", arg) + " ]=\n") print("\n[ " + various.colorize("red", "INFO") + " ] \n") print(action_manager.actions[arg].short_description) print("\n") print("[ " + various.colorize("red", "DESCRIPTION") + " ] \n") print(action_manager.actions[arg].info)
def do_help(self, arg): """List available commands with "help" or detailed help with "help cmd".""" tmp = self.get_names self.get_names = self.get_names_hack # Ugly hack: I'm to lazy to reimplement whole do_help ;-) Cmd.do_help(self, arg) self.get_names = tmp if arg == "": self.print_topics( "\n[ " + various.colorize("red", "Important commands") + " ]\n", [x[3:] for x in self.important_commands], 15, 80 ) print("\n[ " + various.colorize("red", "Example usage") + " ]\n" + consts.example_usage)
def info_module(self, arg): if arg == None and self.active_module != None: arg = self.active_module if arg not in self.modules: various.print_warning("%s - unknown module" % arg) return print("\n=[ MODULE " + various.colorize("red", arg) + " ]=\n") print("Required actions:") for x in self.modules[arg].required_actions: print("- %s" % x) print("\n[ " + various.colorize("red", "INFO") + " ] \n") print(self.modules[arg].short_description) print("\n") print("[ " + various.colorize("red", "DESCRIPTION") + " ] \n") print(self.modules[arg].description) print("\n") print("[ " + various.colorize("red", "PARAMETERS") + " ] \n") for x in self.modules[arg].parameters: p = self.modules[arg].parameters[x] print("- %s = %s : (default value \"%s\") parameter is %srequired" % ( x, p["value"], p["default"], ("" if p["required"] else "not "))) print("\nFor detail info about parameter in activate module (with use command) and type: info parameter NAME\n") print("[ " + various.colorize("red", "PAYLOAD") + " ] \n") print("Payload type: " + various.colorize("green", "custom" if self.modules[ self.active_module].payload_custom else "loaded")) print("Payload actions:") for x in self.modules[arg].payload_actions: print("- %s" % x) if not self.modules[self.active_module].payload_custom: print("Payload name: %s" % various.colorize("blue", self.active_payload)) else: print("Payload value\n---------------------------\n%s\n---------------------------\n" % various.colorize( "blue", self.payload)) print("\n")
def info_payload(self,arg): if arg == None and self.active_payload != None: arg = self.active_payload if arg not in self.payloads: various.print_warning("%s - unknown payload" % arg) return print "\n=[ PAYLOAD "+various.colorize("red",arg)+" ]=\n" pay = self.payloads[arg] print "Satisfied actions:" for x in pay.satisfied_actions: print "- %s" % x print "\n[ "+various.colorize("red","DESCRIPTION")+" ] \n" print pay.short_description+"\n" print pay.info print "[ "+various.colorize("red","PARAMETERS")+" ] \n" for k,p in self.payloads[arg].parameters.iteritems(): print "- %s = %s : (default value \"%s\") parameter is %srequired" % (k,p["value"],p["default"], ("" if p["required"] else "not ")) print "\nFor detail info about parameter in activate module (with use command) and type: info parameter NAME\n"
def info_device(self,arg): if arg == None and self.active_device != None: arg = self.active_device if arg not in action_manager.device_map: various.print_warning("%s - unknown device" % arg) return print "\n=[ DEVICE "+various.colorize("red",arg)+" ]=\n" dev = action_manager.device_map[arg] print "Provided actions:" for x in dev.get_actions(): print "- %s" % x print "\n[ "+various.colorize("red","INFO")+" ] \n" print dev.info print "\n" print "[ "+various.colorize("red","PARAMETERS")+" ] \n" for k,p in action_manager.device_map[arg].parameters.iteritems(): print "- %s = %s : (default value \"%s\") parameter is %srequired" % (k,p["value"],p["default"], ("" if p["required"] else "not ")) print "\nFor detail info about parameter in activate module (with use command) and type: info parameter NAME\n"
def preloop(self): various.HID_singleton = self self.doc_header = "\n[ " + various.colorize("red", "General commands") + " ]\n" for module in os.listdir(os.path.dirname(os.path.abspath(__file__)) + "/" + consts.modules_dir): if module == '__init__.py' or module[-3:] != '.py': continue try: mod = __import__(consts.modules_dir + "." + module[:-3], locals(), globals(), module[:-3]) m = mod.init() self.modules[m.name] = m except: print(self.colorize("!)", "red") + " Error loading '%s' module ! " % module) print('-' * 60) traceback.print_exc(file=sys.stdout) print('-' * 60) time.sleep(1) for device in os.listdir(os.path.dirname(os.path.abspath(__file__)) + "/" + consts.devices_dir): if device == '__init__.py' or device[-3:] != '.py': continue try: dev = __import__(consts.devices_dir + "." + device[:-3], locals(), globals(), device[:-3]) dev = dev.init() mesg = dev.dependency_check() if mesg != "": raise Exception(mesg) mesg = action_manager.register_device(dev) if mesg != "": raise Exception(mesg) except Exception as e: print(self.colorize("!)", "red") + " Error loading '%s' device ! " % device) print('-' * 60) traceback.print_exc(file=sys.stdout) print('-' * 60) time.sleep(1) for payload in os.listdir(os.path.dirname(os.path.abspath(__file__)) + "/" + consts.payloads_dir): if payload == '__init__.py' or payload[-3:] != '.py': continue try: pay = __import__(consts.payloads_dir + "." + payload[:-3], locals(), globals(), payload[:-3]) p = pay.init() self.payloads[p.name] = p except: print(self.colorize("!)", "red") + " Error loading '%s' payload ! " % payload) print('-' * 60) traceback.print_exc(file=sys.stdout) print('-' * 60) time.sleep(1)
def do_show(self, arg, opts): """ Shows value of a parameter. Usage: show [options] arg Options: -h, --help show this help message and exit -l, --long describe function of parameter """ if USE_ARG_LIST: if arg: arg = arg[0] else: arg = '' param = arg.strip().lower() result = {} result_special = {"module": {}, "device": {}, "payload": {}} maxlen = 0 for p in self.settable: if (not param) or p.startswith(param): skip = False for param_type in self.current_parameters: if p in self.current_parameters[param_type]: if p == "payload": extra = " (" + various.colorize("green", ( "custom" if self.modules[self.active_module].payload_custom else "loaded")) + ")" if self.modules[self.active_module].payload_custom: result_special[param_type][ p] = ('%s%s\n--------------------------- \n' % (p, extra)) + \ '# Payload value\n' + \ '--------------------------- \n' + \ '%s\n---------------------------' % str(getattr(self, p)) else: extra = "" maxlen = max(maxlen, len(various.strip_escape('%s%s: %s' % (p, extra, str(getattr(self, p)))))) result_special[param_type][p] = '%s%s: %s' % (p, extra, str(getattr(self, p))) skip = True if skip: continue result[p] = '%s: %s' % (p, str(getattr(self, p))) maxlen = max(maxlen, len(various.strip_escape('%s: %s' % (p, str(getattr(self, p)))))) if result: print("\n[ " + various.colorize("red", "GLOBAL PARAMETERS") + " ]\n") for p in sorted(result): if opts.long: # ljust dont work properly with ansi escape :-( self.poutput('%s%s # %s' % ( result[p], " " * (maxlen - len(various.strip_escape(result[p]))), self.settable[p] ) ) else: self.poutput(result[p]) was_special = False for param_type in result_special: if result_special[param_type]: was_special = True print("\n[ " + various.colorize("red", param_type.upper() + " PARAMETERS") + " ]\n") for p in sorted(result_special[param_type]): if opts.long: if param_type == "module": doc = self.modules[self.active_module].parameters[p][ 'description'] if p != "payload" else "See \"info parameter payload\" " elif param_type == "device": doc = action_manager.device_map[self.active_device].parameters[p]['description'] elif param_type == "payload": doc = self.payloads[self.active_payload].parameters[p]['description'] # ljust dont work properly with ansi escape :-( self.poutput('%s%s # %s' % ( result_special[param_type][p], " " * (maxlen - len(various.strip_escape(result_special[param_type][p]))), doc ) ) else: self.poutput(result_special[param_type][p]) if not (result or was_special): raise LookupError("Parameter '%s' not supported (type 'show' for list of parameters)." % param) else: print("\n")