Class: Nmap::OS

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

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.



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

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.



63
64
65
# File 'lib/nmap/os.rb', line 63

def classes
  each_class.to_a
end

#each(&block) ⇒ Object

Parses the OS match information.

See Also:



132
133
134
# File 'lib/nmap/os.rb', line 132

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.



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

def each_class
  return enum_for(:each_class) 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.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/nmap/os.rb', line 80

def each_match
  return enum_for(:each_match) 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.



123
124
125
# File 'lib/nmap/os.rb', line 123

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

#matchesArray<OSMatch>

Parses the OS match information.

Returns:

  • (Array<OSMatch>)

    The OS match information.



101
102
103
# File 'lib/nmap/os.rb', line 101

def matches
  each_match.to_a
end

#ports_usedArray<Integer>

Parses the ports used for guessing the OS.

Returns:

  • (Array<Integer>)

    The ports used.



111
112
113
114
115
# File 'lib/nmap/os.rb', line 111

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