Class: CMSScanner::Finders::Finder

Inherits:
Object
  • Object
show all
Defined in:
lib/cms_scanner/finders/finder.rb,
lib/cms_scanner/finders/finder/enumerator.rb,
lib/cms_scanner/finders/finder/fingerprinter.rb,
lib/cms_scanner/finders/finder/smart_url_checker.rb,
lib/cms_scanner/finders/finder/smart_url_checker/findings.rb,
lib/cms_scanner/finders/finder/breadth_first_dictionary_attack.rb

Overview

Finder

Defined Under Namespace

Modules: BreadthFirstDictionaryAttack, Enumerator, Fingerprinter, SmartURLChecker

Constant Summary collapse

DIRECT_ACCESS =

Constants for common found_by

'Direct Access (Aggressive Detection)'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target) ⇒ Finder

Returns a new instance of Finder.



15
16
17
# File 'lib/cms_scanner/finders/finder.rb', line 15

def initialize(target)
  @target = target
end

Instance Attribute Details

#progress_barObject

Returns the value of attribute progress_bar.



13
14
15
# File 'lib/cms_scanner/finders/finder.rb', line 13

def progress_bar
  @progress_bar
end

#targetObject

Returns the value of attribute target.



13
14
15
# File 'lib/cms_scanner/finders/finder.rb', line 13

def target
  @target
end

Instance Method Details

#aggressive(_opts = {}) ⇒ Object

Parameters:

  • _opts (Hash) (defaults to: {})


28
# File 'lib/cms_scanner/finders/finder.rb', line 28

def aggressive(_opts = {}); end

#browserBrowser

Returns:



42
43
44
# File 'lib/cms_scanner/finders/finder.rb', line 42

def browser
  @browser ||= NS::Browser.instance
end

#create_progress_bar(opts = {}) ⇒ ProgressBar::Base

Parameters:

Options Hash (opts):

  • :show_progression (Boolean)

Returns:

  • (ProgressBar::Base)


34
35
36
37
38
39
# File 'lib/cms_scanner/finders/finder.rb', line 34

def create_progress_bar(opts = {})
  bar_opts          = { format: '%t %a <%B> (%c / %C) %P%% %e' }
  bar_opts[:output] = ProgressBarNullOutput unless opts[:show_progression]

  @progress_bar = ::ProgressBar.create(bar_opts.merge(opts))
end

#found_by(klass = self) ⇒ String

Parameters:

  • klass (String, Symbol) (defaults to: self)

Returns:

  • (String)


53
54
55
56
57
58
59
60
61
62
# File 'lib/cms_scanner/finders/finder.rb', line 53

def found_by(klass = self)
  caller_locations.each do |call|
    label = call.label

    next unless %w[aggressive passive].include? label

    return "#{klass.titleize} (#{label.capitalize} Detection)"
  end
  nil
end

#hydraTyphoeus::Hydra

Returns:



47
48
49
# File 'lib/cms_scanner/finders/finder.rb', line 47

def hydra
  @hydra ||= browser.hydra
end

#passive(_opts = {}) ⇒ Object

Parameters:

  • _opts (Hash) (defaults to: {})


25
# File 'lib/cms_scanner/finders/finder.rb', line 25

def passive(_opts = {}); end

#titleizeString

Returns The titleized name of the finder.

Returns:

  • (String)

    The titleized name of the finder



20
21
22
# File 'lib/cms_scanner/finders/finder.rb', line 20

def titleize
  self.class.to_s.demodulize.underscore.titleize
end