Class: Mihari::Analyzers::Shodan

Inherits:
Base
  • Object
show all
Defined in:
lib/mihari/analyzers/shodan.rb

Constant Summary

Constants included from Mixins::Retriable

Mixins::Retriable::DEFAULT_ON

Instance Attribute Summary collapse

Attributes inherited from Base

#rule

Instance Method Summary collapse

Methods inherited from Base

inherited, #normalized_artifacts, #run, #run_emitter, #source

Methods included from Mixins::Retriable

#retry_on_error

Methods included from Mixins::Configurable

#configuration_values, #configured?

Methods included from Mixins::AutonomousSystem

#normalize_asn

Constructor Details

#initialize(*args, **kwargs) ⇒ Shodan



15
16
17
18
19
# File 'lib/mihari/analyzers/shodan.rb', line 15

def initialize(*args, **kwargs)
  super(*args, **kwargs)

  @api_key = kwargs[:api_key] || Mihari.config.shodan_api_key
end

Instance Attribute Details

#api_keyString? (readonly)



13
14
15
# File 'lib/mihari/analyzers/shodan.rb', line 13

def api_key
  @api_key
end

Instance Method Details

#artifactsObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/mihari/analyzers/shodan.rb', line 21

def artifacts
  results = search
  return [] unless results || results.empty?

  results = results.map { |result| Structs::Shodan::Result.from_dynamic!(result) }
  matches = results.map { |result| result.matches || [] }.flatten

  uniq_matches = matches.uniq(&:ip_str)
  uniq_matches.map { |match| build_artifact(match, matches) }
end