示例#1
0
 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")
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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")
示例#5
0
 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"
示例#6
0
 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"
示例#7
0
    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)
示例#8
0
    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")