Sha256: 20529abec14ba10a8108c48dc5188fede77b1b67901f4373fbf8072fe8c395ee

Contents?: true

Size: 1.53 KB

Versions: 5

Compression:

Stored size: 1.53 KB

Contents

module Nmap
  module Scripts
    #
    # The output from the NSE scripts ran against the open port.
    #
    # @return [Hash{String => String}]
    #   The NSE script names and output.
    #
    # @since 0.3.0
    #
    def scripts
      unless @scripts
        @scripts = {}

        @node.xpath('script').each do |script|
          @scripts[script['id']] = script['output']
        end
      end

      return @scripts
    end

    #
    # The structured output of the NSE scripts.
    #
    # @return [Hash{String => Hash{String => Array<String>}}]
    #   The NSE script names and their structured output.
    #
    # @since 0.9.0
    #
    def script_data
      unless @script_data
        @script_data = {}

        traverse = lambda do |node|
          case node.name
          when 'script', 'table'
            unless node.xpath('*[@key]').empty?
              hash = {}

              node.elements.each do |element|
                hash[element['key']] = traverse.call(element)
              end

              hash
            else
              array = []

              node.elements.each do |element|
                array << traverse.call(element)
              end

              array
            end
          when 'elem'
            node.inner_text
          else
            raise(NotImplementedError,"unrecognized XML NSE element: #{node}")
          end
        end

        @node.xpath('script').each do |script|
          @script_data[script['id']] = traverse.call(script)
        end
      end

      return @script_data
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ruby-nmap-0.10.0 lib/nmap/scripts.rb
ruby-nmap-0.9.3 lib/nmap/scripts.rb
ruby-nmap-0.9.2 lib/nmap/scripts.rb
ruby-nmap-0.9.1 lib/nmap/scripts.rb
ruby-nmap-0.9.0 lib/nmap/scripts.rb