mihari 5.2.1 → 5.2.2

Sign up to get free protection for your applications and to get access to all the features.
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