ukemi 0.4.0 → 0.4.1
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/.github/workflows/test.yaml +27 -0
- data/.overcommit.yml +9 -0
- data/.standard.yml +4 -0
- data/README.md +9 -1
- data/exe/ukemi +3 -1
- data/lib/ukemi/cli.rb +2 -0
- data/lib/ukemi/configuration.rb +1 -2
- data/lib/ukemi/moderator.rb +4 -4
- data/lib/ukemi/record.rb +1 -4
- data/lib/ukemi/services/circl.rb +5 -5
- data/lib/ukemi/services/dnsdb.rb +7 -7
- data/lib/ukemi/services/otx.rb +5 -5
- data/lib/ukemi/services/passivetotal.rb +5 -5
- data/lib/ukemi/services/securitytrails.rb +9 -9
- data/lib/ukemi/services/virustotal.rb +5 -5
- data/lib/ukemi/version.rb +1 -1
- data/ukemi.gemspec +21 -19
- metadata +50 -20
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a512ff8b644d793535d9beac64ab550b5628bbb86fd042e2cc3ab5b2cdad1ea1
|
4
|
+
data.tar.gz: d7433d7e80ff7723bf097db0bbda4a35f3feab7d2fbd4d3d7726c1ff3319c3a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e88eefa02c8071b840e16c25ecdd52198abdd16ede41ff657692b9fc6ff2c9b21e0b8130d6562cc348eb8b101d91b0309a7feb4b5a48cb3283968518e649d1f
|
7
|
+
data.tar.gz: 6cca209ba2a055a195e862b0f10b2e431d8555d32985050b5debc6e4d20164c640af1afa30960ebde6842bc109b4e8176be206303ee0f170de5d441436339a45
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: Ruby CI
|
2
|
+
|
3
|
+
on: [pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
|
10
|
+
strategy:
|
11
|
+
fail-fast: false
|
12
|
+
matrix:
|
13
|
+
ruby: [2.7, '3.0']
|
14
|
+
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
- name: Set up Ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: ${{ matrix.ruby }}
|
21
|
+
bundler-cache: true
|
22
|
+
|
23
|
+
- name: Build and test with Rake
|
24
|
+
run: |
|
25
|
+
gem install bundler
|
26
|
+
bundle install
|
27
|
+
bundle exec rake
|
data/.overcommit.yml
ADDED
data/.standard.yml
ADDED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# ukemi
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/ukemi)
|
4
|
-
[](https://github.com/ninoseki/ukemi/actions/workflows/test.yaml)
|
5
5
|
[](https://coveralls.io/github/ninoseki/ukemi?branch=master)
|
6
6
|
[](https://www.codefactor.io/repository/github/ninoseki/ukemi)
|
7
7
|
|
@@ -18,6 +18,10 @@ It supports the following services.
|
|
18
18
|
|
19
19
|
It outputs passive DNS resolutions as JSON.
|
20
20
|
|
21
|
+
## Requirements
|
22
|
+
|
23
|
+
- Ruby 2.7+ or Ruby 3.x
|
24
|
+
|
21
25
|
## Installation
|
22
26
|
|
23
27
|
```bash
|
@@ -116,6 +120,10 @@ $ ukemi lookup 195.123.226.243
|
|
116
120
|
...
|
117
121
|
}
|
118
122
|
|
123
|
+
# or you scan skip "lookup"
|
124
|
+
$ ukemi example.com
|
125
|
+
$ ukemi 195.123.226.243
|
126
|
+
|
119
127
|
# You can specify the order of resolutions
|
120
128
|
|
121
129
|
# Order by last_seen DESC
|
data/exe/ukemi
CHANGED
data/lib/ukemi/cli.rb
CHANGED
data/lib/ukemi/configuration.rb
CHANGED
data/lib/ukemi/moderator.rb
CHANGED
@@ -28,13 +28,13 @@ module Ukemi
|
|
28
28
|
memo[record.data] << {
|
29
29
|
first_seen: record.first_seen,
|
30
30
|
last_seen: record.last_seen,
|
31
|
-
source: record.source
|
31
|
+
source: record.source
|
32
32
|
}
|
33
33
|
end
|
34
34
|
# Merge first seen last seen and make the sources a list.
|
35
35
|
formatted = memo.map do |key, sources|
|
36
|
-
first_seens = sources.
|
37
|
-
last_seens = sources.
|
36
|
+
first_seens = sources.filter_map { |record| convert_to_unixtime record[:first_seen] }
|
37
|
+
last_seens = sources.filter_map { |record| convert_to_unixtime record[:last_seen] }
|
38
38
|
[
|
39
39
|
key,
|
40
40
|
{
|
@@ -49,7 +49,7 @@ module Ukemi
|
|
49
49
|
ordering_key = Ukemi.configuration.ordering_key.to_sym
|
50
50
|
sort_order = Ukemi.configuration.sort_order
|
51
51
|
formatted.sort_by do |_key, hash|
|
52
|
-
value = hash
|
52
|
+
value = hash[ordering_key]
|
53
53
|
if sort_order == "DESC"
|
54
54
|
value ? -convert_to_unixtime(value) : -1
|
55
55
|
else
|
data/lib/ukemi/record.rb
CHANGED
@@ -2,10 +2,7 @@
|
|
2
2
|
|
3
3
|
module Ukemi
|
4
4
|
class Record
|
5
|
-
attr_reader :data
|
6
|
-
attr_reader :first_seen
|
7
|
-
attr_reader :last_seen
|
8
|
-
attr_reader :source
|
5
|
+
attr_reader :data, :first_seen, :last_seen, :source
|
9
6
|
|
10
7
|
def initialize(data:, first_seen: nil, last_seen: nil, source: nil)
|
11
8
|
@data = data
|
data/lib/ukemi/services/circl.rb
CHANGED
@@ -8,7 +8,7 @@ module Ukemi
|
|
8
8
|
private
|
9
9
|
|
10
10
|
def config_keys
|
11
|
-
%w
|
11
|
+
%w[CIRCL_PASSIVE_USERNAME CIRCL_PASSIVE_PASSWORD]
|
12
12
|
end
|
13
13
|
|
14
14
|
def api
|
@@ -26,14 +26,14 @@ module Ukemi
|
|
26
26
|
def passive_dns_lookup(data, key = nil)
|
27
27
|
results = api.dns.query(data)
|
28
28
|
results = results.select do |result|
|
29
|
-
result
|
29
|
+
result["rrtype"] == "A"
|
30
30
|
end
|
31
31
|
|
32
32
|
results.map do |result|
|
33
33
|
Record.new(
|
34
|
-
data: result
|
35
|
-
first_seen: Time.at(result
|
36
|
-
last_seen: Time.at(result
|
34
|
+
data: result[key],
|
35
|
+
first_seen: Time.at(result["time_first"]).to_date.to_s,
|
36
|
+
last_seen: Time.at(result["time_last"]).to_date.to_s,
|
37
37
|
source: name
|
38
38
|
)
|
39
39
|
end
|
data/lib/ukemi/services/dnsdb.rb
CHANGED
@@ -9,7 +9,7 @@ module Ukemi
|
|
9
9
|
private
|
10
10
|
|
11
11
|
def config_keys
|
12
|
-
%w
|
12
|
+
%w[DNSDB_API_KEY]
|
13
13
|
end
|
14
14
|
|
15
15
|
def api
|
@@ -19,13 +19,13 @@ module Ukemi
|
|
19
19
|
def lookup_by_ip(data)
|
20
20
|
results = api.lookup.rdata(type: "ip", value: data, rrtype: "A")
|
21
21
|
results.map do |result|
|
22
|
-
rrname = result
|
22
|
+
rrname = result["rrname"]
|
23
23
|
# Remove the last dot (e.g. "example.com.")
|
24
24
|
data = rrname[0..-2]
|
25
25
|
Record.new(
|
26
26
|
data: data,
|
27
|
-
first_seen: Time.at(result
|
28
|
-
last_seen: Time.at(result
|
27
|
+
first_seen: Time.at(result["time_first"]).to_date.to_s,
|
28
|
+
last_seen: Time.at(result["time_last"]).to_date.to_s,
|
29
29
|
source: name
|
30
30
|
)
|
31
31
|
end
|
@@ -34,10 +34,10 @@ module Ukemi
|
|
34
34
|
def lookup_by_domain(data)
|
35
35
|
results = api.lookup.rrset(owner_name: data, rrtype: "A")
|
36
36
|
results.map do |result|
|
37
|
-
first_seen = Time.at(result
|
38
|
-
last_seen = Time.at(result
|
37
|
+
first_seen = Time.at(result["time_first"]).to_date.to_s
|
38
|
+
last_seen = Time.at(result["time_last"]).to_date.to_s
|
39
39
|
|
40
|
-
values = result
|
40
|
+
values = result["rdata"] || []
|
41
41
|
values.map do |value|
|
42
42
|
Record.new(
|
43
43
|
data: value,
|
data/lib/ukemi/services/otx.rb
CHANGED
@@ -9,7 +9,7 @@ module Ukemi
|
|
9
9
|
private
|
10
10
|
|
11
11
|
def config_keys
|
12
|
-
%w
|
12
|
+
%w[OTX_API_KEY]
|
13
13
|
end
|
14
14
|
|
15
15
|
def api_key
|
@@ -31,8 +31,8 @@ module Ukemi
|
|
31
31
|
next if record.record_type != "A"
|
32
32
|
|
33
33
|
domain = record.hostname
|
34
|
-
memo[domain] <<
|
35
|
-
memo[domain] <<
|
34
|
+
memo[domain] << Date.parse(record.last).to_s
|
35
|
+
memo[domain] << Date.parse(record.first).to_s
|
36
36
|
end
|
37
37
|
|
38
38
|
memo.keys.map do |domain|
|
@@ -54,8 +54,8 @@ module Ukemi
|
|
54
54
|
next if record.hostname != data
|
55
55
|
|
56
56
|
ip = record.address
|
57
|
-
memo[ip] <<
|
58
|
-
memo[ip] <<
|
57
|
+
memo[ip] << Date.parse(record.last).to_s
|
58
|
+
memo[ip] << Date.parse(record.first).to_s
|
59
59
|
end
|
60
60
|
|
61
61
|
memo.keys.map do |ip|
|
@@ -12,12 +12,12 @@ module Ukemi
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def config_keys
|
15
|
-
%w
|
15
|
+
%w[PASSIVETOTAL_USERNAME PASSIVETOTAL_API_KEY]
|
16
16
|
end
|
17
17
|
|
18
18
|
def lookup_by_ip(data)
|
19
19
|
res = api.dns.passive(data)
|
20
|
-
results = res
|
20
|
+
results = res["results"] || []
|
21
21
|
convert_to_records results
|
22
22
|
end
|
23
23
|
|
@@ -27,9 +27,9 @@ module Ukemi
|
|
27
27
|
|
28
28
|
def convert_to_records(results)
|
29
29
|
results.map do |result|
|
30
|
-
data = result
|
31
|
-
first_seen = result
|
32
|
-
last_seen = result
|
30
|
+
data = result["resolve"]
|
31
|
+
first_seen = result["firstSeen"].to_s.split.first
|
32
|
+
last_seen = result["lastSeen"].to_s.split.first
|
33
33
|
Record.new(
|
34
34
|
data: data,
|
35
35
|
first_seen: first_seen,
|
@@ -9,7 +9,7 @@ module Ukemi
|
|
9
9
|
private
|
10
10
|
|
11
11
|
def config_keys
|
12
|
-
%w
|
12
|
+
%w[SECURITYTRAILS_API_KEY]
|
13
13
|
end
|
14
14
|
|
15
15
|
def api
|
@@ -17,9 +17,9 @@ module Ukemi
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def lookup_by_ip(data)
|
20
|
-
result = api.domains.search(
|
21
|
-
records = result
|
22
|
-
hostnames = records.map { |record| record
|
20
|
+
result = api.domains.search(filter: { ipv4: data })
|
21
|
+
records = result["records"] || []
|
22
|
+
hostnames = records.map { |record| record["hostname"] }
|
23
23
|
hostnames.map do |hostname|
|
24
24
|
Record.new(
|
25
25
|
data: hostname,
|
@@ -32,15 +32,15 @@ module Ukemi
|
|
32
32
|
|
33
33
|
def lookup_by_domain(data)
|
34
34
|
result = api.history.get_all_dns_history(data, type: "a")
|
35
|
-
records = result
|
35
|
+
records = result["records"] || []
|
36
36
|
|
37
37
|
memo = Hash.new { |h, k| h[k] = [] }
|
38
38
|
records.each do |record|
|
39
|
-
values = record
|
39
|
+
values = record["values"] || []
|
40
40
|
values.each do |value|
|
41
|
-
ip = value
|
42
|
-
memo[ip] << record
|
43
|
-
memo[ip] << record
|
41
|
+
ip = value["ip"]
|
42
|
+
memo[ip] << record["first_seen"]
|
43
|
+
memo[ip] << record["last_seen"]
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -9,7 +9,7 @@ module Ukemi
|
|
9
9
|
private
|
10
10
|
|
11
11
|
def config_keys
|
12
|
-
%w
|
12
|
+
%w[VIRUSTOTAL_API_KEY]
|
13
13
|
end
|
14
14
|
|
15
15
|
def api
|
@@ -29,9 +29,9 @@ module Ukemi
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def extract_attributes(response)
|
32
|
-
data = response
|
32
|
+
data = response["data"] || []
|
33
33
|
data.map do |item|
|
34
|
-
item
|
34
|
+
item["attributes"] || []
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -39,8 +39,8 @@ module Ukemi
|
|
39
39
|
memo = Hash.new { |h, k| h[k] = [] }
|
40
40
|
|
41
41
|
attributes.each do |attribute|
|
42
|
-
data = attribute
|
43
|
-
date = Time.at(attribute
|
42
|
+
data = attribute[key]
|
43
|
+
date = Time.at(attribute["date"]).to_date.to_s
|
44
44
|
memo[data] << date
|
45
45
|
end
|
46
46
|
|
data/lib/ukemi/version.rb
CHANGED
data/ukemi.gemspec
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "lib/ukemi/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
6
|
+
spec.name = "ukemi"
|
7
|
+
spec.version = Ukemi::VERSION
|
8
|
+
spec.authors = ["Manabu Niseki"]
|
9
|
+
spec.email = ["manabu.niseki@gmail.com"]
|
10
10
|
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
15
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
11
|
+
spec.summary = "A CLI tool for querying passive DNS services"
|
12
|
+
spec.description = "A CLI tool for querying passive DNS services"
|
13
|
+
spec.homepage = "https://github.com/ninoseki/ukemi"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
16
16
|
|
17
17
|
spec.metadata["homepage_uri"] = spec.homepage
|
18
18
|
|
@@ -21,26 +21,28 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
22
22
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
23
23
|
end
|
24
|
-
spec.bindir
|
25
|
-
spec.executables
|
24
|
+
spec.bindir = "exe"
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
|
-
spec.add_development_dependency "bundler", "~> 2.
|
29
|
-
spec.add_development_dependency "
|
28
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
29
|
+
spec.add_development_dependency "coveralls_reborn", "~> 0.22"
|
30
|
+
spec.add_development_dependency "overcommit", "~> 0.58"
|
30
31
|
spec.add_development_dependency "rake", "~> 13.0"
|
31
|
-
spec.add_development_dependency "rspec", "~> 3.
|
32
|
+
spec.add_development_dependency "rspec", "~> 3.10"
|
33
|
+
spec.add_development_dependency "standard", "~> 1.1"
|
32
34
|
spec.add_development_dependency "vcr", "~> 6.0"
|
33
|
-
spec.add_development_dependency "webmock", "~> 3.
|
35
|
+
spec.add_development_dependency "webmock", "~> 3.14"
|
34
36
|
|
35
|
-
spec.add_dependency "addressable", "~> 2.
|
37
|
+
spec.add_dependency "addressable", "~> 2.8"
|
36
38
|
spec.add_dependency "dnsdb", "~> 0.1"
|
37
39
|
spec.add_dependency "mem", "~> 0.1"
|
38
40
|
spec.add_dependency "otx_ruby", "~> 0.9"
|
39
|
-
spec.add_dependency "parallel", "~> 1.
|
41
|
+
spec.add_dependency "parallel", "~> 1.20"
|
40
42
|
spec.add_dependency "passive_circl", "~> 0.1"
|
41
43
|
spec.add_dependency "passivetotalx", "~> 0.1"
|
42
44
|
spec.add_dependency "public_suffix", "~> 4.0"
|
43
45
|
spec.add_dependency "securitytrails", "~> 1.0"
|
44
|
-
spec.add_dependency "thor", "~> 1.
|
46
|
+
spec.add_dependency "thor", "~> 1.1"
|
45
47
|
spec.add_dependency "virustotalx", "~> 1.1"
|
46
48
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ukemi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manabu Niseki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: coveralls_reborn
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.22'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.22'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: overcommit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.58'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.58'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +72,28 @@ dependencies:
|
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
75
|
+
version: '3.10'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.10'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: standard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
94
|
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
96
|
+
version: '1.1'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: vcr
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +114,28 @@ dependencies:
|
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
117
|
+
version: '3.14'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
124
|
+
version: '3.14'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: addressable
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: '2.
|
131
|
+
version: '2.8'
|
104
132
|
type: :runtime
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version: '2.
|
138
|
+
version: '2.8'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: dnsdb
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,14 +184,14 @@ dependencies:
|
|
156
184
|
requirements:
|
157
185
|
- - "~>"
|
158
186
|
- !ruby/object:Gem::Version
|
159
|
-
version: '1.
|
187
|
+
version: '1.20'
|
160
188
|
type: :runtime
|
161
189
|
prerelease: false
|
162
190
|
version_requirements: !ruby/object:Gem::Requirement
|
163
191
|
requirements:
|
164
192
|
- - "~>"
|
165
193
|
- !ruby/object:Gem::Version
|
166
|
-
version: '1.
|
194
|
+
version: '1.20'
|
167
195
|
- !ruby/object:Gem::Dependency
|
168
196
|
name: passive_circl
|
169
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,14 +254,14 @@ dependencies:
|
|
226
254
|
requirements:
|
227
255
|
- - "~>"
|
228
256
|
- !ruby/object:Gem::Version
|
229
|
-
version: '1.
|
257
|
+
version: '1.1'
|
230
258
|
type: :runtime
|
231
259
|
prerelease: false
|
232
260
|
version_requirements: !ruby/object:Gem::Requirement
|
233
261
|
requirements:
|
234
262
|
- - "~>"
|
235
263
|
- !ruby/object:Gem::Version
|
236
|
-
version: '1.
|
264
|
+
version: '1.1'
|
237
265
|
- !ruby/object:Gem::Dependency
|
238
266
|
name: virustotalx
|
239
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,9 +284,11 @@ executables:
|
|
256
284
|
extensions: []
|
257
285
|
extra_rdoc_files: []
|
258
286
|
files:
|
287
|
+
- ".github/workflows/test.yaml"
|
259
288
|
- ".gitignore"
|
289
|
+
- ".overcommit.yml"
|
260
290
|
- ".rspec"
|
261
|
-
- ".
|
291
|
+
- ".standard.yml"
|
262
292
|
- Gemfile
|
263
293
|
- LICENSE
|
264
294
|
- README.md
|
@@ -294,14 +324,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
294
324
|
requirements:
|
295
325
|
- - ">="
|
296
326
|
- !ruby/object:Gem::Version
|
297
|
-
version: 2.
|
327
|
+
version: 2.7.0
|
298
328
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
299
329
|
requirements:
|
300
330
|
- - ">="
|
301
331
|
- !ruby/object:Gem::Version
|
302
332
|
version: '0'
|
303
333
|
requirements: []
|
304
|
-
rubygems_version: 3.
|
334
|
+
rubygems_version: 3.2.22
|
305
335
|
signing_key:
|
306
336
|
specification_version: 4
|
307
337
|
summary: A CLI tool for querying passive DNS services
|