mihari 5.2.1 → 5.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/lib/mihari/analyzers/base.rb +20 -115
- data/lib/mihari/analyzers/censys.rb +20 -2
- data/lib/mihari/analyzers/onyphe.rb +1 -1
- data/lib/mihari/analyzers/rule.rb +116 -60
- data/lib/mihari/analyzers/shodan.rb +1 -1
- data/lib/mihari/analyzers/urlscan.rb +6 -9
- data/lib/mihari/analyzers/virustotal_intelligence.rb +1 -5
- data/lib/mihari/cli/main.rb +2 -2
- data/lib/mihari/commands/search.rb +69 -0
- data/lib/mihari/mixins/error_notification.rb +0 -2
- data/lib/mihari/models/artifact.rb +1 -1
- data/lib/mihari/schemas/rule.rb +2 -17
- data/lib/mihari/structs/censys.rb +167 -11
- data/lib/mihari/structs/config.rb +28 -0
- data/lib/mihari/structs/google_public_dns.rb +39 -1
- data/lib/mihari/structs/greynoise.rb +93 -6
- data/lib/mihari/structs/ipinfo.rb +40 -0
- data/lib/mihari/structs/onyphe.rb +88 -6
- data/lib/mihari/structs/rule.rb +4 -2
- data/lib/mihari/structs/shodan.rb +138 -4
- data/lib/mihari/structs/urlscan.rb +98 -1
- data/lib/mihari/structs/virustotal_intelligence.rb +96 -1
- data/lib/mihari/version.rb +1 -1
- data/lib/mihari.rb +1 -0
- data/mihari.gemspec +8 -7
- metadata +29 -30
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -43
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -15
- data/.github/workflows/test.yml +0 -90
- data/config/pre_commit.yml +0 -3
- data/docker/Dockerfile +0 -14
- data/examples/ipinfo_hosted_domains.rb +0 -45
- data/images/Tines-Full_Logo-Tines_Black.png +0 -0
- data/images/alert.png +0 -0
- data/images/logo.png +0 -0
- data/images/misp.png +0 -0
- data/images/overview.jpg +0 -0
- data/images/slack.png +0 -0
- data/images/tines.png +0 -0
- data/images/web_alerts.png +0 -0
- data/images/web_config.png +0 -0
- 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
|
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
|
-
|
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(
|
data/lib/mihari/version.rb
CHANGED
data/lib/mihari.rb
CHANGED
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.
|
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.
|
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.
|
55
|
-
spec.add_development_dependency "
|
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.
|
91
|
-
spec.add_dependency "thor", "1.2.
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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/
|
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
|