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.
- 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
|