Parent

Class/Module Index [+]

Quicksearch

Rex::Parser::RetinaXMLStreamParser

XXX - Retina XML does not include ANY service/port information export

Attributes

on_found_host[RW]

Public Class Methods

new(on_found_host = nil) click to toggle source
# File lib/rex/parser/retina_xml.rb, line 9
def initialize(on_found_host = nil)
        reset_state
        self.on_found_host = on_found_host if on_found_host
end

Public Instance Methods

attlist() click to toggle source
# File lib/rex/parser/retina_xml.rb, line 80
def attlist; end
cdata() click to toggle source
# File lib/rex/parser/retina_xml.rb, line 77
def cdata; end
comment(str) click to toggle source
# File lib/rex/parser/retina_xml.rb, line 78
def comment(str); end
instruction(name, instruction) click to toggle source
# File lib/rex/parser/retina_xml.rb, line 79
def instruction(name, instruction); end
reset_audit_state() click to toggle source
# File lib/rex/parser/retina_xml.rb, line 20
def reset_audit_state
        @audit = { 'refs' => [] }
end
reset_state() click to toggle source
# File lib/rex/parser/retina_xml.rb, line 14
def reset_state
        @state = :generic_state
        @host  = { 'vulns' => [] }
        reset_audit_state
end
tag_end(name) click to toggle source
# File lib/rex/parser/retina_xml.rb, line 64
def tag_end(name)
        case name
        when "host"
                on_found_host.call(@host) if on_found_host
                reset_state
        when "audit"
                @host['vulns'].push @audit
                reset_audit_state
        end
end
tag_start(name, attributes) click to toggle source
# File lib/rex/parser/retina_xml.rb, line 24
def tag_start(name, attributes)
        @state = "in_#{name.downcase}".intern
end
text(str) click to toggle source
# File lib/rex/parser/retina_xml.rb, line 28
def text(str)
        case @state
        when :in_ip
                @host["address"] = str
        when :in_dnsname
                @host["hostname"] = str.split(/\s+/).first
        when :in_netbiosname
                @host["netbios"] = str
        when :in_mac
                @host["mac"] = str
        when :in_os
                @host["os"] = str
        when :in_rthid
                @audit['refs'].push(['RETINA', str])
        when :in_cve
                str.split(",").each do |cve|
                        cve = cve.to_s.strip
                        next if cve.empty?
                        pre,val = cve.split('-', 2)
                        next if not val
                        next if pre != "CVE"
                        @audit['refs'].push( ['CVE', val] )
                end
        when :in_name
                @audit['name'] = str
        when :in_description
                @audit['description'] = str
        when :in_risk
                @audit['risk'] = str
        when :in_cce
                @audit['cce'] = str
        when :in_date
                @audit['data'] = str
        end
end
xmldecl(version, encoding, standalone) click to toggle source

We don't need these methods, but they're necessary to keep REXML happy

# File lib/rex/parser/retina_xml.rb, line 76
def xmldecl(version, encoding, standalone); end

[Validate]

Generated with the Darkfish Rdoc Generator 2.