Class: Nmap::XML::OS

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/nmap/xml/os.rb

Overview

Wraps the os XML element.

Since:

  • 1.0.0

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ OS

Creates a new OS object.

Parameters:

  • node (Nokogiri::XML::Node)

    The node that contains the OS guessing information.

Since:

  • 1.0.0



23
24
25
# File 'lib/nmap/xml/os.rb', line 23

def initialize(node)
  @node = node
end

Instance Method Details

#classesArray<OSClass>

Parses the OS class information.

Returns:

  • (Array<OSClass>)

    The OS class information.

Since:

  • 1.0.0



56
57
58
# File 'lib/nmap/xml/os.rb', line 56

def classes
  each_class.to_a
end

#each(&block) ⇒ Object

Parses the OS match information.

See Also:

Since:

  • 1.0.0



127
128
129
# File 'lib/nmap/xml/os.rb', line 127

def each(&block)
  each_match(&block)
end

#each_class {|class| ... } ⇒ OS, Enumerator

Parses the OS class information.

Yields:

  • (class)

    Passes each OS class to the given block.

Yield Parameters:

  • class (OSClass)

    The OS class information.

Returns:

  • (OS, Enumerator)

    The OS information. If no block was given, an enumerator object will be returned.

Since:

  • 1.0.0



40
41
42
43
44
45
46
47
48
# File 'lib/nmap/xml/os.rb', line 40

def each_class
  return enum_for(__method__) unless block_given?

  @node.xpath("osmatch/osclass").each do |osclass|
    yield OSClass.new(osclass)
  end

  return self
end

#each_match {|match| ... } ⇒ OS, Enumerator

Parses the OS match information.

Yields:

  • (match)

    Passes each OS match to the given block.

Yield Parameters:

  • class (OSMatch)

    The OS match information.

Returns:

  • (OS, Enumerator)

    The OS information. If no block was given, an enumerator object will be returned.

Since:

  • 1.0.0



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/nmap/xml/os.rb', line 73

def each_match
  return enum_for(__method__) unless block_given?

  @node.xpath("osmatch").each do |osclass|
    os_match = OSMatch.new(
      osclass['name'],
      osclass['accuracy'].to_i
    )

    yield os_match
  end

  return self
end

#fingerprintString

Parses the OS fingerprint used by Nmap.

Returns:

  • (String)

    The OS fingerprint.

Since:

  • 1.0.0



116
117
118
119
120
# File 'lib/nmap/xml/os.rb', line 116

def fingerprint
  @fingerprint ||= if (fingerprint = @node.at_xpath("osfingerprint/@fingerprint"))
                     fingerprint.inner_text
                   end
end

#matchesArray<OSMatch>

Parses the OS match information.

Returns:

  • (Array<OSMatch>)

    The OS match information.

Since:

  • 1.0.0



94
95
96
# File 'lib/nmap/xml/os.rb', line 94

def matches
  each_match.to_a
end

#ports_usedArray<Integer>

Parses the ports used for guessing the OS.

Returns:

  • (Array<Integer>)

    The ports used.

Since:

  • 1.0.0



104
105
106
107
108
# File 'lib/nmap/xml/os.rb', line 104

def ports_used
  @ports_used ||= @node.xpath("portused/@portid").map do |port|
    port.inner_text.to_i
  end
end