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