mihari 5.2.1 → 5.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/lib/mihari/analyzers/base.rb +20 -115
  4. data/lib/mihari/analyzers/censys.rb +20 -2
  5. data/lib/mihari/analyzers/onyphe.rb +1 -1
  6. data/lib/mihari/analyzers/rule.rb +116 -60
  7. data/lib/mihari/analyzers/shodan.rb +1 -1
  8. data/lib/mihari/analyzers/urlscan.rb +6 -9
  9. data/lib/mihari/analyzers/virustotal_intelligence.rb +1 -5
  10. data/lib/mihari/cli/main.rb +2 -2
  11. data/lib/mihari/commands/search.rb +69 -0
  12. data/lib/mihari/mixins/error_notification.rb +0 -2
  13. data/lib/mihari/models/artifact.rb +1 -1
  14. data/lib/mihari/schemas/rule.rb +2 -17
  15. data/lib/mihari/structs/censys.rb +167 -11
  16. data/lib/mihari/structs/config.rb +28 -0
  17. data/lib/mihari/structs/google_public_dns.rb +39 -1
  18. data/lib/mihari/structs/greynoise.rb +93 -6
  19. data/lib/mihari/structs/ipinfo.rb +40 -0
  20. data/lib/mihari/structs/onyphe.rb +88 -6
  21. data/lib/mihari/structs/rule.rb +4 -2
  22. data/lib/mihari/structs/shodan.rb +138 -4
  23. data/lib/mihari/structs/urlscan.rb +98 -1
  24. data/lib/mihari/structs/virustotal_intelligence.rb +96 -1
  25. data/lib/mihari/version.rb +1 -1
  26. data/lib/mihari.rb +1 -0
  27. data/mihari.gemspec +8 -7
  28. metadata +29 -30
  29. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -43
  30. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -15
  31. data/.github/workflows/test.yml +0 -90
  32. data/config/pre_commit.yml +0 -3
  33. data/docker/Dockerfile +0 -14
  34. data/examples/ipinfo_hosted_domains.rb +0 -45
  35. data/images/Tines-Full_Logo-Tines_Black.png +0 -0
  36. data/images/alert.png +0 -0
  37. data/images/logo.png +0 -0
  38. data/images/misp.png +0 -0
  39. data/images/overview.jpg +0 -0
  40. data/images/slack.png +0 -0
  41. data/images/tines.png +0 -0
  42. data/images/web_alerts.png +0 -0
  43. data/images/web_config.png +0 -0
  44. data/lib/mihari/commands/searcher.rb +0 -61
@@ -7,6 +7,20 @@ module Mihari
7
7
  attribute :country_code, Types::String.optional
8
8
  attribute :country_name, Types::String.optional
9
9
 
10
+ #
11
+ # @return [String, nil]
12
+ #
13
+ def country_code
14
+ attributes[:country_code]
15
+ end
16
+
17
+ #
18
+ # @return [String, nil]
19
+ #
20
+ def country_name
21
+ attributes[:country_name]
22
+ end
23
+
10
24
  #
11
25
  # @return [Mihari::Geolocation, nil]
12
26
  #
@@ -19,6 +33,11 @@ module Mihari
19
33
  )
20
34
  end
21
35
 
36
+ #
37
+ # @param [Hash] d
38
+ #
39
+ # @return [Location]
40
+ #
22
41
  def self.from_dynamic!(d)
23
42
  d = Types::Hash[d]
24
43
  new(
@@ -39,6 +58,48 @@ module Mihari
39
58
  attribute :port, Types::Integer
40
59
  attribute :metadata, Types::Hash
41
60
 
61
+ #
62
+ # @return [String, nil]
63
+ #
64
+ def asn
65
+ attributes[:asn]
66
+ end
67
+
68
+ #
69
+ # @return [Array<String>]
70
+ #
71
+ def hostnames
72
+ attributes[:hostnames]
73
+ end
74
+
75
+ #
76
+ # @return [Location]
77
+ #
78
+ def location
79
+ attributes[:location]
80
+ end
81
+
82
+ #
83
+ # @return [String]
84
+ #
85
+ def ip_str
86
+ attributes[:ip_str]
87
+ end
88
+
89
+ #
90
+ # @return [Integer]
91
+ #
92
+ def port
93
+ attributes[:port]
94
+ end
95
+
96
+ #
97
+ # @return [Hash]
98
+ #
99
+ def metadata
100
+ attributes[:metadata]
101
+ end
102
+
42
103
  #
43
104
  # @return [Mihari::AutonomousSystem, nil]
44
105
  #
@@ -48,6 +109,11 @@ module Mihari
48
109
  Mihari::AutonomousSystem.new(asn: normalize_asn(asn))
49
110
  end
50
111
 
112
+ #
113
+ # @param [Hash] d
114
+ #
115
+ # @return [Match]
116
+ #
51
117
  def self.from_dynamic!(d)
52
118
  d = Types::Hash[d]
53
119
 
@@ -74,6 +140,20 @@ module Mihari
74
140
  attribute :matches, Types.Array(Match)
75
141
  attribute :total, Types::Int
76
142
 
143
+ #
144
+ # @return [Array<Match>]
145
+ #
146
+ def matches
147
+ attributes[:matches]
148
+ end
149
+
150
+ #
151
+ # @return [Integer]
152
+ #
153
+ def total
154
+ attributes[:total]
155
+ end
156
+
77
157
  #
78
158
  # Collect metadata from matches
79
159
  #
@@ -107,12 +187,10 @@ module Mihari
107
187
  matches.select { |match| match.ip_str == ip }.map(&:hostnames).flatten.uniq
108
188
  end
109
189
 
110
- #
111
- # @param [Source] source
112
190
  #
113
191
  # @return [Array<Mihari::Artifact>]
114
192
  #
115
- def to_artifacts(source = "Shodan")
193
+ def to_artifacts
116
194
  matches.map do |match|
117
195
  metadata = collect_metadata_by_ip(match.ip_str)
118
196
  ports = collect_ports_by_ip(match.ip_str).map do |port|
@@ -124,7 +202,6 @@ module Mihari
124
202
 
125
203
  Mihari::Artifact.new(
126
204
  data: match.ip_str,
127
- source: source,
128
205
  metadata: metadata,
129
206
  autonomous_system: match.to_asn,
130
207
  geolocation: match.location.to_geolocation,
@@ -134,6 +211,11 @@ module Mihari
134
211
  end
135
212
  end
136
213
 
214
+ #
215
+ # @param [Hash] d
216
+ #
217
+ # @return [Result]
218
+ #
137
219
  def self.from_dynamic!(d)
138
220
  d = Types::Hash[d]
139
221
  new(
@@ -151,6 +233,53 @@ module Mihari
151
233
  attribute :tags, Types.Array(Types::String)
152
234
  attribute :vulns, Types.Array(Types::String)
153
235
 
236
+ #
237
+ # @return [String]
238
+ #
239
+ def ip
240
+ attributes[:ip]
241
+ end
242
+
243
+ #
244
+ # @return [Array<Integer>]
245
+ #
246
+ def ports
247
+ attributes[:ports]
248
+ end
249
+
250
+ #
251
+ # @return [Array<String>]
252
+ #
253
+ def cpes
254
+ attributes[:cpes]
255
+ end
256
+
257
+ #
258
+ # @return [Array<String>]
259
+ #
260
+ def hostnames
261
+ attributes[:hostnames]
262
+ end
263
+
264
+ #
265
+ # @return [Array<String>]
266
+ #
267
+ def tags
268
+ attributes[:tags]
269
+ end
270
+
271
+ #
272
+ # @return [Array<String>]
273
+ #
274
+ def vulns
275
+ attributes[:vulns]
276
+ end
277
+
278
+ #
279
+ # @param [Hash] d
280
+ #
281
+ # @return [InternetDBResponse]
282
+ #
154
283
  def self.from_dynamic!(d)
155
284
  d = Types::Hash[d]
156
285
  new(
@@ -163,6 +292,11 @@ module Mihari
163
292
  )
164
293
  end
165
294
 
295
+ #
296
+ # @param [String] json
297
+ #
298
+ # @return [InternetDBResponse]
299
+ #
166
300
  def self.from_json!(json)
167
301
  from_dynamic!(JSON.parse(json))
168
302
  end
@@ -8,6 +8,32 @@ module Mihari
8
8
  attribute :ip, Types::String.optional
9
9
  attribute :url, Types::String
10
10
 
11
+ #
12
+ # @return [String, nil]
13
+ #
14
+ def domain
15
+ attributes[:domain]
16
+ end
17
+
18
+ #
19
+ # @return [String, nil]
20
+ #
21
+ def ip
22
+ attributes[:ip]
23
+ end
24
+
25
+ #
26
+ # @return [String]
27
+ #
28
+ def url
29
+ attributes[:url]
30
+ end
31
+
32
+ #
33
+ # @param [Hash] d
34
+ #
35
+ # @return [Page]
36
+ #
11
37
  def self.from_dynamic!(d)
12
38
  d = Types::Hash[d]
13
39
  new(
@@ -22,13 +48,58 @@ module Mihari
22
48
  attribute :page, Page
23
49
  attribute :id, Types::String
24
50
  attribute :sort, Types.Array(Types::String | Types::Integer)
51
+ attribute :metadata, Types::Hash
52
+
53
+ #
54
+ # @return [Page]
55
+ #
56
+ def page
57
+ attributes[:page]
58
+ end
59
+
60
+ #
61
+ # @return [String]
62
+ #
63
+ def id
64
+ attributes[:id]
65
+ end
66
+
67
+ #
68
+ # @return [Array<String, Integer>]
69
+ #
70
+ def sort
71
+ attributes[:sort]
72
+ end
73
+
74
+ #
75
+ # @return [Array<String, Integer>]
76
+ #
77
+ def metadata
78
+ attributes[:metadata]
79
+ end
25
80
 
81
+ #
82
+ # @return [Array<Mihari::Artifact>]
83
+ #
84
+ def to_artifacts
85
+ values = [page.url, page.domain, page.ip].compact
86
+ values.map do |value|
87
+ Mihari::Artifact.new(data: value, metadata: metadata)
88
+ end
89
+ end
90
+
91
+ #
92
+ # @param [Hash] d
93
+ #
94
+ # @return [Result]
95
+ #
26
96
  def self.from_dynamic!(d)
27
97
  d = Types::Hash[d]
28
98
  new(
29
99
  page: Page.from_dynamic!(d.fetch("page")),
30
100
  id: d.fetch("_id"),
31
- sort: d.fetch("sort")
101
+ sort: d.fetch("sort"),
102
+ metadata: d
32
103
  )
33
104
  end
34
105
  end
@@ -37,6 +108,32 @@ module Mihari
37
108
  attribute :results, Types.Array(Result)
38
109
  attribute :has_more, Types::Bool
39
110
 
111
+ #
112
+ # @return [Array<Result>]
113
+ #
114
+ def results
115
+ attributes[:results]
116
+ end
117
+
118
+ #
119
+ # @return [Boolean]
120
+ #
121
+ def has_more
122
+ attributes[:has_more]
123
+ end
124
+
125
+ #
126
+ # @return [Array<Mihari::Artifact>]
127
+ #
128
+ def to_artifacts
129
+ results.map(&:to_artifacts).flatten
130
+ end
131
+
132
+ #
133
+ # @param [Hash] d
134
+ #
135
+ # @return [Response]
136
+ #
40
137
  def self.from_dynamic!(d)
41
138
  d = Types::Hash[d]
42
139
  new(
@@ -6,6 +6,18 @@ module Mihari
6
6
  class ContextAttributes < Dry::Struct
7
7
  attribute :url, Types::String.optional
8
8
 
9
+ #
10
+ # @return [String, nil]
11
+ #
12
+ def url
13
+ attributes[:url]
14
+ end
15
+
16
+ #
17
+ # @param [Hash] d
18
+ #
19
+ # @return [ContextAttributes]
20
+ #
9
21
  def self.from_dynamic!(d)
10
22
  d = Types::Hash[d]
11
23
  new(
@@ -20,6 +32,37 @@ module Mihari
20
32
  attribute :context_attributes, ContextAttributes.optional
21
33
  attribute :metadata, Types::Hash
22
34
 
35
+ #
36
+ # @return [String]
37
+ #
38
+ def type
39
+ attributes[:type]
40
+ end
41
+
42
+ #
43
+ # @return [String]
44
+ #
45
+ def id
46
+ attributes[:id]
47
+ end
48
+
49
+ #
50
+ # @return [ContextAttributes, nil]
51
+ #
52
+ def context_attributes
53
+ attributes[:context_attributes]
54
+ end
55
+
56
+ #
57
+ # @return [Hash, nil]
58
+ #
59
+ def metadata
60
+ attributes[:metadata]
61
+ end
62
+
63
+ #
64
+ # @return [String, nil]
65
+ #
23
66
  def value
24
67
  case type
25
68
  when "file"
@@ -33,11 +76,25 @@ module Mihari
33
76
  end
34
77
  end
35
78
 
79
+ #
80
+ # @return [Mihari::Artifact]
81
+ #
82
+ def to_artifact
83
+ Artifact.new(data: value, metadata: metadata)
84
+ end
85
+
86
+ #
87
+ # @param [Hash] d
88
+ #
89
+ # @return [Datum]
90
+ #
36
91
  def self.from_dynamic!(d)
37
92
  d = Types::Hash[d]
38
93
 
39
94
  context_attributes = nil
40
- context_attributes = ContextAttributes.from_dynamic!(d.fetch("context_attributes")) if d.key?("context_attributes")
95
+ if d.key?("context_attributes")
96
+ context_attributes = ContextAttributes.from_dynamic!(d.fetch("context_attributes"))
97
+ end
41
98
 
42
99
  new(
43
100
  type: d.fetch("type"),
@@ -51,6 +108,18 @@ module Mihari
51
108
  class Meta < Dry::Struct
52
109
  attribute :cursor, Types::String.optional
53
110
 
111
+ #
112
+ # @return [String, nil]
113
+ #
114
+ def cursor
115
+ attributes[:cursor]
116
+ end
117
+
118
+ #
119
+ # @param [Hash] d
120
+ #
121
+ # @return [Meta]
122
+ #
54
123
  def self.from_dynamic!(d)
55
124
  d = Types::Hash[d]
56
125
  new(
@@ -63,6 +132,32 @@ module Mihari
63
132
  attribute :meta, Meta
64
133
  attribute :data, Types.Array(Datum)
65
134
 
135
+ #
136
+ # @return [Meta]
137
+ #
138
+ def meta
139
+ attributes[:meta]
140
+ end
141
+
142
+ #
143
+ # @return [Array<Datum>]
144
+ #
145
+ def data
146
+ attributes[:data]
147
+ end
148
+
149
+ #
150
+ # @return [Array<Mihari::Artifact>]
151
+ #
152
+ def to_artifacts
153
+ data.map(&:to_artifact)
154
+ end
155
+
156
+ #
157
+ # @param [Hash] d
158
+ #
159
+ # @return [Response]
160
+ #
66
161
  def self.from_dynamic!(d)
67
162
  d = Types::Hash[d]
68
163
  new(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mihari
4
- VERSION = "5.2.1"
4
+ VERSION = "5.2.2"
5
5
  end
data/lib/mihari.rb CHANGED
@@ -254,6 +254,7 @@ require "mihari/analyzers/urlscan"
254
254
  require "mihari/analyzers/virustotal_intelligence"
255
255
  require "mihari/analyzers/virustotal"
256
256
  require "mihari/analyzers/zoomeye"
257
+
257
258
  require "mihari/analyzers/rule"
258
259
 
259
260
  # Entities
data/mihari.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  # Specify which files should be added to the gem when it is released.
27
27
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
28
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
29
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
29
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|images|docker|.github)/}) }
30
30
  end
31
31
  spec.bindir = "exe"
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -37,22 +37,23 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "fakefs", "~> 2.4"
38
38
  spec.add_development_dependency "fuubar", "~> 2.5"
39
39
  spec.add_development_dependency "mysql2", "~> 0.5"
40
- spec.add_development_dependency "pg", "~> 1.4"
40
+ spec.add_development_dependency "pg", "~> 1.5"
41
41
  spec.add_development_dependency "rack-test", "~> 2.1"
42
42
  spec.add_development_dependency "rake", "~> 13.0"
43
43
  spec.add_development_dependency "rb-fsevent", "~> 0.11"
44
44
  spec.add_development_dependency "rerun", "~> 0.14"
45
45
  spec.add_development_dependency "rspec", "~> 3.12"
46
46
  spec.add_development_dependency "simplecov-lcov", "~> 0.8.0"
47
- spec.add_development_dependency "standard", "~> 1.27"
47
+ spec.add_development_dependency "standard", "~> 1.28"
48
48
  spec.add_development_dependency "timecop", "~> 0.9"
49
49
  spec.add_development_dependency "vcr", "~> 6.1"
50
50
  spec.add_development_dependency "webmock", "~> 3.18"
51
51
 
52
52
  unless ci_env?
53
53
  spec.add_development_dependency "overcommit", "~> 0.60"
54
- spec.add_development_dependency "ruby-lsp", "~> 0.4"
55
- spec.add_development_dependency "steep", "~> 1.3"
54
+ spec.add_development_dependency "ruby-lsp", "~> 0.5"
55
+ spec.add_development_dependency "solargraph", "~> 0.49"
56
+ spec.add_development_dependency "steep", "~> 1.4"
56
57
  end
57
58
 
58
59
  spec.add_dependency "activerecord", "7.0.4.3"
@@ -87,8 +88,8 @@ Gem::Specification.new do |spec|
87
88
  spec.add_dependency "semantic_logger", "4.13.0"
88
89
  spec.add_dependency "sentry-ruby", "5.9.0"
89
90
  spec.add_dependency "slack-notifier", "2.4.0"
90
- spec.add_dependency "sqlite3", "1.6.2"
91
- spec.add_dependency "thor", "1.2.1"
91
+ spec.add_dependency "sqlite3", "1.6.3"
92
+ spec.add_dependency "thor", "1.2.2"
92
93
  spec.add_dependency "uuidtools", "2.2.0"
93
94
  spec.add_dependency "whois", "5.1.0"
94
95
  spec.add_dependency "whois-parser", "2.0.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mihari
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.1
4
+ version: 5.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-23 00:00:00.000000000 Z
11
+ date: 2023-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.4'
89
+ version: '1.5'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '1.4'
96
+ version: '1.5'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rack-test
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '1.27'
187
+ version: '1.28'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '1.27'
194
+ version: '1.28'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: timecop
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -254,28 +254,42 @@ dependencies:
254
254
  requirements:
255
255
  - - "~>"
256
256
  - !ruby/object:Gem::Version
257
- version: '0.4'
257
+ version: '0.5'
258
258
  type: :development
259
259
  prerelease: false
260
260
  version_requirements: !ruby/object:Gem::Requirement
261
261
  requirements:
262
262
  - - "~>"
263
263
  - !ruby/object:Gem::Version
264
- version: '0.4'
264
+ version: '0.5'
265
+ - !ruby/object:Gem::Dependency
266
+ name: solargraph
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '0.49'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '0.49'
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: steep
267
281
  requirement: !ruby/object:Gem::Requirement
268
282
  requirements:
269
283
  - - "~>"
270
284
  - !ruby/object:Gem::Version
271
- version: '1.3'
285
+ version: '1.4'
272
286
  type: :development
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - "~>"
277
291
  - !ruby/object:Gem::Version
278
- version: '1.3'
292
+ version: '1.4'
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: activerecord
281
295
  requirement: !ruby/object:Gem::Requirement
@@ -730,28 +744,28 @@ dependencies:
730
744
  requirements:
731
745
  - - '='
732
746
  - !ruby/object:Gem::Version
733
- version: 1.6.2
747
+ version: 1.6.3
734
748
  type: :runtime
735
749
  prerelease: false
736
750
  version_requirements: !ruby/object:Gem::Requirement
737
751
  requirements:
738
752
  - - '='
739
753
  - !ruby/object:Gem::Version
740
- version: 1.6.2
754
+ version: 1.6.3
741
755
  - !ruby/object:Gem::Dependency
742
756
  name: thor
743
757
  requirement: !ruby/object:Gem::Requirement
744
758
  requirements:
745
759
  - - '='
746
760
  - !ruby/object:Gem::Version
747
- version: 1.2.1
761
+ version: 1.2.2
748
762
  type: :runtime
749
763
  prerelease: false
750
764
  version_requirements: !ruby/object:Gem::Requirement
751
765
  requirements:
752
766
  - - '='
753
767
  - !ruby/object:Gem::Version
754
- version: 1.2.1
768
+ version: 1.2.2
755
769
  - !ruby/object:Gem::Dependency
756
770
  name: uuidtools
757
771
  requirement: !ruby/object:Gem::Requirement
@@ -802,9 +816,6 @@ executables:
802
816
  extensions: []
803
817
  extra_rdoc_files: []
804
818
  files:
805
- - ".github/ISSUE_TEMPLATE/bug_report.md"
806
- - ".github/ISSUE_TEMPLATE/feature_request.md"
807
- - ".github/workflows/test.yml"
808
819
  - ".gitignore"
809
820
  - ".gitmodules"
810
821
  - ".overcommit.yml"
@@ -820,19 +831,7 @@ files:
820
831
  - bin/setup
821
832
  - build_frontend.sh
822
833
  - config.ru
823
- - config/pre_commit.yml
824
- - docker/Dockerfile
825
- - examples/ipinfo_hosted_domains.rb
826
834
  - exe/mihari
827
- - images/Tines-Full_Logo-Tines_Black.png
828
- - images/alert.png
829
- - images/logo.png
830
- - images/misp.png
831
- - images/overview.jpg
832
- - images/slack.png
833
- - images/tines.png
834
- - images/web_alerts.png
835
- - images/web_config.png
836
835
  - lib/mihari.rb
837
836
  - lib/mihari/analyzers/base.rb
838
837
  - lib/mihari/analyzers/binaryedge.rb
@@ -877,7 +876,7 @@ files:
877
876
  - lib/mihari/clients/zoomeye.rb
878
877
  - lib/mihari/commands/database.rb
879
878
  - lib/mihari/commands/rule.rb
880
- - lib/mihari/commands/searcher.rb
879
+ - lib/mihari/commands/search.rb
881
880
  - lib/mihari/commands/version.rb
882
881
  - lib/mihari/commands/web.rb
883
882
  - lib/mihari/constants.rb