Class: Nmap::OS

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

Overview

Wraps the os XML element.

Instance Method Summary collapse

Constructor Details

#initialize(node) {|os| ... } ⇒ OS

Creates a new OS object.

Parameters:

  • node (Nokogiri::XML::Node)

    The node that contains the OS guessing information.

Yields:

  • (os)

    If a block is given, it will passed the newly created OS object.

Yield Parameters:

  • os (OS)

    The newly created OS object.



24
25
26
27
28
# File 'lib/nmap/os.rb', line 24

def initialize(node)
  @node = node

  yield self if block_given?
end

Instance Method Details

#classesArray<OSClass>

Parses the OS class information.

Returns:

  • (Array<OSClass>)

    The OS class information.



66
67
68
# File 'lib/nmap/os.rb', line 66

def classes
  each_class.to_a
end

#each(&block) ⇒ Object

Parses the OS match information.

See Also:



135
136
137
# File 'lib/nmap/os.rb', line 135

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.



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/nmap/os.rb', line 43

def each_class
  return enum_for(__method__) unless block_given?

  @node.xpath("osclass").map do |osclass|
    os_class = OSClass.new(
      osclass['type'].to_sym,
      osclass['vendor'],
      osclass['osfamily'].to_sym,
      osclass['accuracy'].to_i
    )

    yield os_class
  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.



83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/nmap/os.rb', line 83

def each_match
  return enum_for(__method__) unless block_given?

  @node.xpath("osmatch").map 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.



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

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

#matchesArray<OSMatch>

Parses the OS match information.

Returns:

  • (Array<OSMatch>)

    The OS match information.



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

def matches
  each_match.to_a
end

#ports_usedArray<Integer>

Parses the ports used for guessing the OS.

Returns:

  • (Array<Integer>)

    The ports used.



114
115
116
117
118
# File 'lib/nmap/os.rb', line 114

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