rangescan 0.1.4 → 0.2.0
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/.deepsource.toml +5 -0
- data/README.md +6 -5
- data/lib/rangescan/cli.rb +3 -2
- data/lib/rangescan/scanner.rb +4 -3
- data/lib/rangescan/version.rb +1 -1
- data/rangescan.gemspec +1 -1
- data/renovate.json +5 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4144b13853677049e63de5a4214bffd4140923b9627aa165793bd08a5fd3664f
|
4
|
+
data.tar.gz: 5e9a1489605be94188c2a4310013062451630b12764db065af20081c1bc2d2af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e82b98bb97b2742ca54bcfd47cecde7a4bee65d7fefe841f7b76cc6dfec7832c397e8d2e422afc5f64a2533ff453bb3cf83c6ad1cbeb98948845ab5710eb84e6
|
7
|
+
data.tar.gz: 5e6e6173d6a858749fce649d25fd658a91a0d2941238f2ca730e07511e147e48440d713e07247c4a40c3299765760b403596b4122ac259a52d5e3847bfbfb4c2
|
data/.deepsource.toml
ADDED
data/README.md
CHANGED
@@ -27,13 +27,14 @@ Usage:
|
|
27
27
|
|
28
28
|
Options:
|
29
29
|
[--host=HOST] # Host header
|
30
|
-
[--port=N] # Port
|
31
|
-
[--scheme=SCHEME] # Scheme
|
30
|
+
[--port=N] # Port
|
31
|
+
[--scheme=SCHEME] # Scheme (http or https)
|
32
32
|
[--timeout=N] # Timeout in seconds
|
33
|
-
[--user-agent=USER_AGENT] # User Agent
|
34
|
-
[--
|
33
|
+
[--user-agent=USER_AGENT] # User Agent
|
34
|
+
[--verify-ssl], [--no-verify-ssl] # Whether to verify SSL or not
|
35
|
+
[--max-concurrency=N] # Concurrency limit for HTTP requests to scan
|
35
36
|
|
36
|
-
Scan an IP range & filter by a regexp
|
37
|
+
Scan an IP range & filter by a regexp (default regexp = .)
|
37
38
|
```
|
38
39
|
|
39
40
|
## License
|
data/lib/rangescan/cli.rb
CHANGED
@@ -5,14 +5,15 @@ require "json"
|
|
5
5
|
|
6
6
|
module RangeScan
|
7
7
|
class CLI < Thor
|
8
|
-
desc "scan [IP_WITH_SUBNET_MASK, REGEXP]", "Scan an IP range & filter by a regexp"
|
8
|
+
desc "scan [IP_WITH_SUBNET_MASK, REGEXP]", "Scan an IP range & filter by a regexp (default regexp = .)"
|
9
9
|
method_option :host, type: :string, desc: "Host header"
|
10
10
|
method_option :port, type: :numeric, desc: "Port"
|
11
11
|
method_option :scheme, type: :string, desc: "Scheme (http or https)"
|
12
12
|
method_option :timeout, type: :numeric, desc: "Timeout in seconds"
|
13
13
|
method_option :user_agent, type: :string, desc: "User Agent"
|
14
14
|
method_option :verify_ssl, type: :boolean, desc: "Whether to verify SSL or not"
|
15
|
-
|
15
|
+
method_option :max_concurrency, type: :numeric, desc: "Concurrency limit for HTTP requests to scan"
|
16
|
+
def scan(ip_with_subnet_mask, regexp = ".")
|
16
17
|
symbolized_options = symbolize_hash_keys(options)
|
17
18
|
range = Range.new(ip_with_subnet_mask)
|
18
19
|
|
data/lib/rangescan/scanner.rb
CHANGED
@@ -12,6 +12,7 @@ module RangeScan
|
|
12
12
|
class Scanner
|
13
13
|
attr_reader :context
|
14
14
|
attr_reader :host
|
15
|
+
attr_reader :max_concurrency
|
15
16
|
attr_reader :port
|
16
17
|
attr_reader :processor_count
|
17
18
|
attr_reader :scheme
|
@@ -20,7 +21,7 @@ module RangeScan
|
|
20
21
|
attr_reader :user_agent
|
21
22
|
attr_reader :verify_ssl
|
22
23
|
|
23
|
-
def initialize(host: nil, port: nil, scheme: "http", verify_ssl: true, timeout: 5, user_agent: nil)
|
24
|
+
def initialize(host: nil, port: nil, scheme: "http", verify_ssl: true, timeout: 5, user_agent: nil, max_concurrency: nil)
|
24
25
|
@host = host
|
25
26
|
@port = port || (scheme == "http" ? 80 : 443)
|
26
27
|
@timeout = timeout
|
@@ -32,7 +33,7 @@ module RangeScan
|
|
32
33
|
@ssl_context = OpenSSL::SSL::SSLContext.new
|
33
34
|
@ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE unless verify_ssl
|
34
35
|
|
35
|
-
@
|
36
|
+
@max_concurrency = max_concurrency || Etc.nprocessors * 2
|
36
37
|
end
|
37
38
|
|
38
39
|
def url_for(ipv4)
|
@@ -45,7 +46,7 @@ module RangeScan
|
|
45
46
|
results = []
|
46
47
|
Async do
|
47
48
|
barrier = Async::Barrier.new
|
48
|
-
semaphore = Async::Semaphore.new(
|
49
|
+
semaphore = Async::Semaphore.new(max_concurrency, parent: barrier)
|
49
50
|
|
50
51
|
ipv4s.each do |ipv4|
|
51
52
|
semaphore.async do
|
data/lib/rangescan/version.rb
CHANGED
data/rangescan.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency "glint", "~> 0.1"
|
31
31
|
spec.add_development_dependency "rake", "~> 13.0"
|
32
32
|
spec.add_development_dependency "rspec", "~> 3.9"
|
33
|
-
spec.add_development_dependency "webmock", "~> 3.
|
33
|
+
spec.add_development_dependency "webmock", "~> 3.9"
|
34
34
|
|
35
35
|
spec.add_dependency "async", "~> 1.26"
|
36
36
|
spec.add_dependency "async-http", "~> 0.52"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rangescan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manabu Niseki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-26 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: '3.
|
89
|
+
version: '3.9'
|
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: '3.
|
96
|
+
version: '3.9'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: async
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,6 +158,7 @@ executables:
|
|
158
158
|
extensions: []
|
159
159
|
extra_rdoc_files: []
|
160
160
|
files:
|
161
|
+
- ".deepsource.toml"
|
161
162
|
- ".gitignore"
|
162
163
|
- ".rspec"
|
163
164
|
- ".travis.yml"
|
@@ -177,6 +178,7 @@ files:
|
|
177
178
|
- lib/rangescan/utils.rb
|
178
179
|
- lib/rangescan/version.rb
|
179
180
|
- rangescan.gemspec
|
181
|
+
- renovate.json
|
180
182
|
homepage: https://github.com/ninoseki/rangescan
|
181
183
|
licenses:
|
182
184
|
- MIT
|