Example #1
0
    def get_refs_vt_as_xml_str(vt_id, vt_refs):
        """ Return an xml element with references formatted as string."""
        vt_refs_xml = Element('vt_refs')
        for ref_type, ref_values in vt_refs.items():
            for value in ref_values:
                vt_ref = Element('ref')
                if ref_type == "xref" and value:
                    for xref in value.split(', '):
                        try:
                            _type, _id = xref.split(':', 1)
                        except ValueError:
                            logger.error(
                                'Not possible to parse xref %s for vt %s' %
                                (xref, vt_id))
                            continue
                        vt_ref.set('type', _type.lower())
                        vt_ref.set('id', _id)
                elif value:
                    vt_ref.set('type', ref_type.lower())
                    vt_ref.set('id', value)
                else:
                    continue
                vt_refs_xml.append(vt_ref)

        refs_list = vt_refs_xml.findall("ref")
        refs = ''
        for ref in refs_list:
            refs += (tostring(ref).decode('utf-8'))
        return refs
Example #2
0
    def __init__(self, certfile, keyfile, cafile):
        """ Initializes the ospd-openvas daemon's internal data. """

        super(OSPDopenvas, self).__init__(certfile=certfile,
                                          keyfile=keyfile,
                                          cafile=cafile)
        self.server_version = __version__
        self.scanner_info['name'] = 'openvassd'
        self.scanner_info['version'] = ''  # achieved during self.check()
        self.scanner_info['description'] = OSPD_DESC
        for name, param in OSPD_PARAMS.items():
            self.add_scanner_param(name, param)

        if openvas_db.db_init() is False:
            logger.error('OpenVAS Redis Error: Not possible '
                         'to find db_connection.')
            raise Exception

        self.pending_feed = None
        ctx = openvas_db.db_find(nvti.NVTICACHE_STR)
        if not ctx:
            self.redis_nvticache_init()
            ctx = openvas_db.db_find(nvti.NVTICACHE_STR)
        openvas_db.set_global_redisctx(ctx)
        self.load_vts()
Example #3
0
    def get_refs_vt_as_xml_str(vt_id, vt_refs):
        """ Return an xml element with references formatted as string.
        Arguments:
            vt_id (str): VT OID. Only used for logging in error case.
            vt_refs (dict): Dictionary with the VT references.
        Return:
            string: xml element as string.
        """
        vt_refs_xml = Element('vt_refs')
        for ref_type, ref_values in vt_refs.items():
            for value in ref_values:
                vt_ref = Element('ref')
                if ref_type == "xref" and value:
                    for xref in value.split(', '):
                        try:
                            _type, _id = xref.split(':', 1)
                        except ValueError:
                            logger.error(
                                'Not possible to parse xref %s for vt %s' %
                                (xref, vt_id))
                            continue
                        vt_ref.set('type', _type.lower())
                        vt_ref.set('id', _id)
                elif value:
                    vt_ref.set('type', ref_type.lower())
                    vt_ref.set('id', value)
                else:
                    continue
                vt_refs_xml.append(vt_ref)

        return tostring(vt_refs_xml).decode('utf-8')
Example #4
0
 def redis_nvticache_init(self):
     """ Loads NVT's metadata into Redis DB. """
     try:
         logger.debug('Loading NVTs in Redis DB')
         subprocess.check_call(['openvassd', '-C'])
     except subprocess.CalledProcessError as err:
         logger.error('OpenVAS Scanner failed to load NVTs.')
         raise err
Example #5
0
    def get_dependencies_vt_as_xml_str(vt_id, dep_list):
        """ Return  an xml element with dependencies as string."""
        vt_deps_xml = Element('vt_deps')
        for dep in dep_list:
            _vt_dep = Element('dependency')
            try:
                _vt_dep.set('vt_id', dep)
            except TypeError:
                logger.error('Not possible to add dependency %s for vt %s' %
                             (dep, vt_id))
                continue
            vt_deps_xml.append(_vt_dep)

        _deps_list = vt_deps_xml.findall("dependency")
        deps = ''
        for _dep in _deps_list:
            deps += (tostring(_dep).decode('utf-8'))
        return deps
Example #6
0
    def get_dependencies_vt_as_xml_str(vt_id, dep_list):
        """ Return  an xml element with dependencies as string.
        Arguments:
            vt_id (str): VT OID. Only used for logging in error case.
            dep_list (List): List with the VT dependencies.
        Return:
            string: xml element as string.
        """
        vt_deps_xml = Element('dependencies')
        for dep in dep_list:
            _vt_dep = Element('dependency')
            try:
                _vt_dep.set('vt_id', dep)
            except TypeError:
                logger.error('Not possible to add dependency %s for vt %s' %
                             (dep, vt_id))
                continue
            vt_deps_xml.append(_vt_dep)

        return tostring(vt_deps_xml).decode('utf-8')