rex-socket 0.1.16 → 0.1.17
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/rex/socket/range_walker.rb +31 -9
- data/lib/rex/socket/version.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24fd1f504f256379c0d5d2edd6784c3023f56f03
|
4
|
+
data.tar.gz: f173a85b8a8fcb821f45be200c8a1704caeeca77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3c3e16ee50aa43e3d96c6f41bb9b41541b24160839890dd1edb842e32e264141102be75d02778491593f830c2fb3e1a2af8485e5f68a81178758b9e2840374e
|
7
|
+
data.tar.gz: 7d09132d390ff1cccaf0c66b485239d059a7959c0e68e2553b48305b7a02b8546fc2afbcc734d436bd67bd22046a115ea61ace6a710f15ed4539bcb8fc116d1f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
@@ -79,8 +79,21 @@ class RangeWalker
|
|
79
79
|
parseme.split(', ').map{ |a| a.split(' ') }.flatten.each do |arg|
|
80
80
|
opts = {}
|
81
81
|
|
82
|
-
# Handle IPv6 first
|
83
|
-
if arg.include?(
|
82
|
+
# Handle IPv6 CIDR first
|
83
|
+
if arg.include?(':') && arg.include?('/')
|
84
|
+
return false if !valid_cidr_chars?(arg)
|
85
|
+
|
86
|
+
ip_part, mask_part = arg.split("/")
|
87
|
+
return false unless (0..128).include? mask_part.to_i
|
88
|
+
|
89
|
+
addr, scope_id = ip_part.split('%')
|
90
|
+
return false unless Rex::Socket.is_ipv6?(addr)
|
91
|
+
|
92
|
+
range = expand_cidr(addr + '/' + mask_part)
|
93
|
+
range.options[:scope_id] = scope_id if scope_id
|
94
|
+
ranges.push(range)
|
95
|
+
# Handle plain IPv6 next (support ranges, but not CIDR)
|
96
|
+
elsif arg.include?(':')
|
84
97
|
addrs = arg.split('-', 2)
|
85
98
|
|
86
99
|
# Handle a single address
|
@@ -97,8 +110,9 @@ class RangeWalker
|
|
97
110
|
|
98
111
|
addr1, scope_id = addrs[0].split('%')
|
99
112
|
opts[:scope_id] = scope_id if scope_id
|
113
|
+
opts[:ipv6] = true
|
100
114
|
|
101
|
-
addr2, scope_id = addrs[
|
115
|
+
addr2, scope_id = addrs[1].split('%')
|
102
116
|
( opts[:scope_id] ||= scope_id ) if scope_id
|
103
117
|
|
104
118
|
# Both have to be IPv6 for this to work
|
@@ -114,12 +128,9 @@ class RangeWalker
|
|
114
128
|
# Handle IPv4 CIDR
|
115
129
|
elsif arg.include?("/")
|
116
130
|
# Then it's CIDR notation and needs special case
|
117
|
-
return false if arg
|
118
|
-
|
119
|
-
|
120
|
-
return false if ip_part.nil? or ip_part.empty? or mask_part.nil? or mask_part.empty?
|
121
|
-
return false if mask_part !~ /^[0-9]{1,2}$/ # Illegal mask -- numerals only
|
122
|
-
return false if mask_part.to_i > 32 # This too -- between 0 and 32.
|
131
|
+
return false if !valid_cidr_chars?(arg)
|
132
|
+
ip_part, mask_part = arg.split("/")
|
133
|
+
return false unless (0..32).include? mask_part.to_i
|
123
134
|
if ip_part =~ /^\d{1,3}(\.\d{1,3}){1,3}$/
|
124
135
|
return false unless ip_part =~ Rex::Socket::MATCH_IPV4
|
125
136
|
end
|
@@ -417,6 +428,17 @@ class RangeWalker
|
|
417
428
|
return ranges
|
418
429
|
end
|
419
430
|
|
431
|
+
protected
|
432
|
+
|
433
|
+
def valid_cidr_chars?(arg)
|
434
|
+
return false if arg.include? ',-' # Improper CIDR notation (can't mix with 1,3 or 1-3 style IP ranges)
|
435
|
+
return false if arg.scan("/").size > 1 # ..but there are too many slashes
|
436
|
+
ip_part, mask_part = arg.split("/")
|
437
|
+
return false if ip_part.nil? || ip_part.empty? || mask_part.nil? || mask_part.empty?
|
438
|
+
return false if mask_part !~ /^[0-9]{1,3}$/ # Illegal mask -- numerals only
|
439
|
+
true
|
440
|
+
end
|
441
|
+
|
420
442
|
end
|
421
443
|
|
422
444
|
# A range of IP addresses
|
data/lib/rex/socket/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rex-socket
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Maloney
|
@@ -88,7 +88,7 @@ cert_chain:
|
|
88
88
|
G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
|
89
89
|
8mVuTXnyJOKRJA==
|
90
90
|
-----END CERTIFICATE-----
|
91
|
-
date: 2019-02-
|
91
|
+
date: 2019-02-27 00:00:00.000000000 Z
|
92
92
|
dependencies:
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: bundler
|
metadata.gz.sig
CHANGED
Binary file
|