rex-socket 0.1.20 → 0.1.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +2 -1
- data.tar.gz.sig +2 -3
- data/.travis.yml +1 -1
- data/lib/rex/socket.rb +8 -3
- data/lib/rex/socket/parameters.rb +81 -52
- data/lib/rex/socket/ssl.rb +1 -1
- data/lib/rex/socket/tcp_server.rb +5 -0
- data/lib/rex/socket/version.rb +1 -1
- data/lib/rex/socket/x509_certificate.rb +3 -1
- data/rex-socket.gemspec +4 -5
- metadata +89 -98
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 63508bcf572f70073bf97d0e02fefc113862dd596c349b698efadeaa39e1e684
|
4
|
+
data.tar.gz: fc699f97f15cdf6301d484b5c26532c9177a4e58d4bef99ca9b7b4bd0833c8d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5e7ea9a929fa979e8155da874b4bb1f5f1f10157e4ce017e65a8384b7e6deb86e1b5b87e3513959e9fe306b9be8bf7ef0ec5472a865722c4cbb6dce7ee463af
|
7
|
+
data.tar.gz: 34080d04f0950a7bfb43189c98390ed8e72dea4167b2f4bfa0ec186bd5ae2ce57cfcaff07788e34fc8ab9418c52861a5c2057668f42408b6619cb23e3526916b
|
checksums.yaml.gz.sig
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
t� D��ik��]���M��Gζ�Ɋ���^NU�����
|
2
|
+
IǛ�$n�(�*��k�Lޙ��z<�/4ٷ���Ɂr��aj�|�)��'0���m����z�� �4� ~�`��i�)�����U�<���1R3L�Qݰs�42Ƣ�'9I}��w��;s{ȱ,UX�4|�)ݟ��$tY�t���V�a�#��K�QL��Q{+BdDwC��u�0�q"�|�$����'6��s�R��cKU[����bP��@0#k����
|
data.tar.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
n$�����*�h�����va��s
|
1
|
+
����;Qk'���y��1���d|S�p�0ҧ�x��aeA�������a�P|�Ke��M�Sx��Φ��Sq���,V^�Lf�iK�"����;q����QƘf*��s?�.�0wH�}S3�V"��xS�r�/:f�$�/,�%�F�N�6ɖ_3�����^@L��
|
2
|
+
I�2�u����>��k�b���n�]�KL�tP�f,r��nĠ!%4|����t��HJ�=��
|
data/.travis.yml
CHANGED
data/lib/rex/socket.rb
CHANGED
@@ -732,14 +732,19 @@ module Socket
|
|
732
732
|
end
|
733
733
|
|
734
734
|
#
|
735
|
-
# Wrapper around getsockname
|
735
|
+
# Wrapper around getsockname that stores the local address and local port values.
|
736
736
|
#
|
737
737
|
def getlocalname
|
738
|
-
|
738
|
+
if self.localhost.nil? && self.localport.nil?
|
739
|
+
_, self.localhost, self.localport = getsockname
|
740
|
+
end
|
741
|
+
|
742
|
+
family = Socket.is_ipv4?(self.localhost) ? ::Socket::AF_INET : ::Socket::AF_INET6
|
743
|
+
[family, self.localhost, self.localport]
|
739
744
|
end
|
740
745
|
|
741
746
|
#
|
742
|
-
#
|
747
|
+
# Returns peer connection information as an array.
|
743
748
|
#
|
744
749
|
def getpeername_as_array
|
745
750
|
peer_name = nil
|
@@ -77,45 +77,33 @@ class Rex::Socket::Parameters
|
|
77
77
|
# retried.
|
78
78
|
# @option hash [Fixnum] 'Timeout' The number of seconds before a connection
|
79
79
|
# should time out
|
80
|
-
def initialize(hash)
|
80
|
+
def initialize(hash = {})
|
81
81
|
if (hash['PeerHost'])
|
82
82
|
self.peerhost = hash['PeerHost']
|
83
83
|
elsif (hash['PeerAddr'])
|
84
84
|
self.peerhost = hash['PeerAddr']
|
85
|
-
else
|
86
|
-
self.peerhost = nil
|
87
85
|
end
|
88
86
|
|
89
87
|
if (hash['LocalHost'])
|
90
88
|
self.localhost = hash['LocalHost']
|
91
89
|
elsif (hash['LocalAddr'])
|
92
90
|
self.localhost = hash['LocalAddr']
|
93
|
-
else
|
94
|
-
self.localhost = '0.0.0.0'
|
95
91
|
end
|
96
92
|
|
97
93
|
if (hash['PeerPort'])
|
98
94
|
self.peerport = hash['PeerPort'].to_i
|
99
|
-
else
|
100
|
-
self.peerport = 0
|
101
95
|
end
|
102
96
|
|
103
97
|
if (hash['LocalPort'])
|
104
98
|
self.localport = hash['LocalPort'].to_i
|
105
|
-
else
|
106
|
-
self.localport = 0
|
107
99
|
end
|
108
100
|
|
109
101
|
if (hash['Bare'])
|
110
102
|
self.bare = hash['Bare']
|
111
|
-
else
|
112
|
-
self.bare = false
|
113
103
|
end
|
114
104
|
|
115
105
|
if (hash['SSL'] and hash['SSL'].to_s =~ /^(t|y|1)/i)
|
116
106
|
self.ssl = true
|
117
|
-
else
|
118
|
-
self.ssl = false
|
119
107
|
end
|
120
108
|
|
121
109
|
if hash['SSLContext']
|
@@ -179,33 +167,16 @@ class Rex::Socket::Parameters
|
|
179
167
|
# The protocol this socket will be using
|
180
168
|
if (hash['Proto'])
|
181
169
|
self.proto = hash['Proto'].downcase
|
182
|
-
else
|
183
|
-
self.proto = 'tcp'
|
184
170
|
end
|
185
171
|
|
186
172
|
# Whether or not the socket should be a server
|
187
|
-
self.server = hash['Server']
|
173
|
+
self.server = hash['Server']
|
188
174
|
|
189
175
|
# The communication subsystem to use to create the socket
|
190
176
|
self.comm = hash['Comm']
|
191
177
|
|
192
178
|
# The context that was passed in, if any.
|
193
|
-
self.context = hash['Context']
|
194
|
-
|
195
|
-
# If no comm was supplied, try to use the comm that is best fit to
|
196
|
-
# handle the provided host based on the current routing table.
|
197
|
-
if( self.server )
|
198
|
-
if (self.comm == nil and self.localhost)
|
199
|
-
self.comm = Rex::Socket::SwitchBoard.best_comm(self.localhost)
|
200
|
-
end
|
201
|
-
else
|
202
|
-
if (self.comm == nil and self.peerhost)
|
203
|
-
self.comm = Rex::Socket::SwitchBoard.best_comm(self.peerhost)
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
# If we still haven't found a comm, we default to the local comm.
|
208
|
-
self.comm = Rex::Socket::Comm::Local if (self.comm == nil)
|
179
|
+
self.context = hash['Context']
|
209
180
|
|
210
181
|
# If we are a UDP server, turn off the server flag as it was only set when
|
211
182
|
# creating the UDP socket in order to avail of the switch board above.
|
@@ -216,19 +187,29 @@ class Rex::Socket::Parameters
|
|
216
187
|
# The number of connection retries to make (client only)
|
217
188
|
if hash['Retries']
|
218
189
|
self.retries = hash['Retries'].to_i
|
219
|
-
else
|
220
|
-
self.retries = 0
|
221
190
|
end
|
222
191
|
|
223
192
|
# The number of seconds before a connect attempt times out (client only)
|
224
193
|
if hash['Timeout']
|
225
194
|
self.timeout = hash['Timeout'].to_i
|
226
|
-
else
|
227
|
-
self.timeout = 5
|
228
195
|
end
|
229
196
|
|
230
197
|
# Whether to force IPv6 addressing
|
231
|
-
self.v6 = hash['IPv6']
|
198
|
+
self.v6 = hash['IPv6']
|
199
|
+
end
|
200
|
+
|
201
|
+
def merge(other)
|
202
|
+
self.dup.merge!(other)
|
203
|
+
end
|
204
|
+
|
205
|
+
def merge!(other)
|
206
|
+
other = self.class.new(other) if other.is_a? Hash
|
207
|
+
|
208
|
+
other.instance_variables.each do |name|
|
209
|
+
value = other.instance_variable_get(name)
|
210
|
+
instance_variable_set(name, value) unless value.nil?
|
211
|
+
end
|
212
|
+
self
|
232
213
|
end
|
233
214
|
|
234
215
|
##
|
@@ -294,7 +275,6 @@ class Rex::Socket::Parameters
|
|
294
275
|
return v6
|
295
276
|
end
|
296
277
|
|
297
|
-
|
298
278
|
##
|
299
279
|
#
|
300
280
|
# Attributes
|
@@ -308,50 +288,94 @@ class Rex::Socket::Parameters
|
|
308
288
|
|
309
289
|
# The remote port. Equivalent to the PeerPort parameter hash key.
|
310
290
|
# @return [Fixnum]
|
311
|
-
|
291
|
+
attr_writer :peerport
|
292
|
+
def peerport
|
293
|
+
@peerport || 0
|
294
|
+
end
|
312
295
|
|
313
296
|
# The local host. Equivalent to the LocalHost parameter hash key.
|
314
297
|
# @return [String]
|
315
|
-
|
298
|
+
attr_writer :localhost
|
299
|
+
def localhost
|
300
|
+
@localhost || '0.0.0.0'
|
301
|
+
end
|
316
302
|
|
317
303
|
# The local port. Equivalent to the LocalPort parameter hash key.
|
318
304
|
# @return [Fixnum]
|
319
|
-
|
305
|
+
attr_writer :localport
|
306
|
+
def localport
|
307
|
+
@localport || 0
|
308
|
+
end
|
320
309
|
|
321
310
|
# The protocol to to use, such as TCP. Equivalent to the Proto parameter
|
322
311
|
# hash key.
|
323
312
|
# @return [String]
|
324
|
-
|
313
|
+
attr_writer :proto
|
314
|
+
def proto
|
315
|
+
@proto || 'tcp'
|
316
|
+
end
|
325
317
|
|
326
318
|
# Whether or not this is a server. Equivalent to the Server parameter
|
327
319
|
# hash key.
|
328
320
|
# @return [Bool]
|
329
|
-
|
321
|
+
attr_writer :server
|
322
|
+
def server
|
323
|
+
@server || false
|
324
|
+
end
|
330
325
|
|
331
326
|
# The {Comm} instance that should be used to create the underlying socket.
|
332
327
|
# @return [Comm]
|
333
|
-
|
328
|
+
attr_writer :comm
|
329
|
+
def comm
|
330
|
+
return @comm unless @comm.nil?
|
331
|
+
|
332
|
+
best_comm = nil
|
333
|
+
# If no comm was explicitly specified, try to use the comm that is best fit
|
334
|
+
# to handle the provided host based on the current routing table.
|
335
|
+
if server and localhost
|
336
|
+
best_comm = Rex::Socket::SwitchBoard.best_comm(localhost)
|
337
|
+
elsif peerhost
|
338
|
+
best_comm = Rex::Socket::SwitchBoard.best_comm(peerhost)
|
339
|
+
end
|
340
|
+
|
341
|
+
best_comm || Rex::Socket::Comm::Local
|
342
|
+
end
|
334
343
|
|
335
344
|
# The context hash that was passed in to the structure. (default: {})
|
336
345
|
# @return [Hash]
|
337
|
-
|
346
|
+
attr_writer :context
|
347
|
+
def context
|
348
|
+
@context || {}
|
349
|
+
end
|
338
350
|
|
339
351
|
# The number of attempts that should be made.
|
340
352
|
# @return [Fixnum]
|
341
|
-
|
353
|
+
attr_writer :retries
|
354
|
+
def retries
|
355
|
+
@retries || 0
|
356
|
+
end
|
342
357
|
|
343
358
|
# The number of seconds before a connection attempt should time out.
|
344
359
|
# @return [Fixnum]
|
345
|
-
|
360
|
+
attr_writer :timeout
|
361
|
+
def timeout
|
362
|
+
@timeout || 5
|
363
|
+
end
|
346
364
|
|
347
365
|
# Whether or not this is a bare (non-extended) socket instance that should
|
348
366
|
# be created.
|
349
367
|
# @return [Bool]
|
350
|
-
|
368
|
+
attr_writer :bare
|
369
|
+
def bare
|
370
|
+
@comm || false
|
371
|
+
end
|
351
372
|
|
352
373
|
# Whether or not SSL should be used to wrap the connection.
|
353
374
|
# @return [Bool]
|
354
|
-
|
375
|
+
attr_writer :ssl
|
376
|
+
def ssl
|
377
|
+
@ssl || false
|
378
|
+
end
|
355
379
|
|
356
380
|
# Pre configured SSL Context to use
|
357
381
|
# @return [OpenSSL::SSL::SSLContext]
|
@@ -384,21 +408,26 @@ class Rex::Socket::Parameters
|
|
384
408
|
# The client SSL certificate
|
385
409
|
#
|
386
410
|
attr_accessor :ssl_client_cert
|
411
|
+
|
387
412
|
#
|
388
413
|
# The client SSL key
|
389
414
|
#
|
390
415
|
attr_accessor :ssl_client_key
|
416
|
+
|
391
417
|
#
|
392
418
|
# SSL certificate verification mode for SSL context
|
393
419
|
attr_accessor :ssl_verify_mode
|
420
|
+
|
394
421
|
#
|
395
422
|
# Whether we should use IPv6
|
396
423
|
# @return [Bool]
|
397
|
-
|
398
|
-
|
424
|
+
attr_writer :v6
|
425
|
+
def v6
|
426
|
+
@v6 || false
|
427
|
+
end
|
399
428
|
|
400
429
|
# List of proxies to use
|
401
|
-
# @return [
|
430
|
+
# @return [Array]
|
402
431
|
attr_accessor :proxies
|
403
432
|
|
404
433
|
alias peeraddr peerhost
|
data/lib/rex/socket/ssl.rb
CHANGED
@@ -35,7 +35,7 @@ module Rex::Socket::Ssl
|
|
35
35
|
def self.ssl_generate_certificate(cert_vars: {}, **opts)
|
36
36
|
yr = 24*3600*365
|
37
37
|
vf = Time.at(Time.now.to_i - rand(yr * 3) - yr)
|
38
|
-
vt = Time.at(vf.to_i + (rand(9)
|
38
|
+
vt = Time.at(vf.to_i + (rand(4..9) * yr))
|
39
39
|
subject = ssl_generate_subject(**cert_vars)
|
40
40
|
issuer = ssl_generate_issuer
|
41
41
|
key = OpenSSL::PKey::RSA.new(2048){ }
|
data/lib/rex/socket/version.rb
CHANGED
@@ -28,7 +28,9 @@ class X509Certificate
|
|
28
28
|
|
29
29
|
certs = []
|
30
30
|
ssl_cert.scan(/-----BEGIN\s*[^\-]+-----+\r?\n[^\-]*-----END\s*[^\-]+-----\r?\n?/nm).each do |pem|
|
31
|
-
if pem =~ /PRIVATE KEY/
|
31
|
+
if pem =~ /EC PRIVATE KEY/
|
32
|
+
key = OpenSSL::PKey::EC.new(pem)
|
33
|
+
elsif pem =~ /PRIVATE KEY/
|
32
34
|
key = OpenSSL::PKey::RSA.new(pem)
|
33
35
|
elsif pem =~ /CERTIFICATE/
|
34
36
|
certs << OpenSSL::X509::Certificate.new(pem)
|
data/rex-socket.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'rex/socket/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "rex-socket"
|
8
8
|
spec.version = Rex::Socket::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Metasploit Hackers']
|
10
|
+
spec.email = ['msfdev@metasploit.com']
|
11
11
|
|
12
12
|
spec.summary = %q{The Ruby Exploitation (Rex) Socket Abstraction Library.}
|
13
13
|
spec.description = %q{The Ruby Exploitation (Rex) Socket Abstraction Library. This library
|
@@ -24,9 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.required_ruby_version = '>= 2.2.0'
|
26
26
|
|
27
|
-
spec.add_development_dependency "
|
28
|
-
spec.add_development_dependency "
|
29
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
spec.add_development_dependency "rake"
|
28
|
+
spec.add_development_dependency "rspec"
|
30
29
|
|
31
30
|
spec.add_runtime_dependency "rex-core"
|
32
31
|
end
|
metadata
CHANGED
@@ -1,137 +1,128 @@
|
|
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.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Metasploit Hackers
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
13
|
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
|
14
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
15
|
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
16
|
+
b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
|
17
|
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
18
|
+
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
|
19
|
+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
|
20
|
+
JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
|
21
|
+
mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
|
22
|
+
wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
|
23
|
+
VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
|
24
|
+
AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
|
25
|
+
AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
26
|
+
BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
|
27
|
+
pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
|
28
|
+
dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
|
29
|
+
fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
|
30
|
+
NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
|
31
|
+
H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
32
|
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
32
33
|
-----END CERTIFICATE-----
|
33
34
|
- |
|
34
35
|
-----BEGIN CERTIFICATE-----
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
36
|
+
MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
|
37
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
38
|
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
39
|
+
b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
|
40
|
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
41
|
+
cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
|
42
|
+
aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
|
43
|
+
Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
|
44
|
+
8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
|
45
|
+
wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
|
46
|
+
fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
|
47
|
+
jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
|
48
|
+
n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
|
49
|
+
HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
|
50
|
+
MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
|
51
|
+
MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
|
52
|
+
RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
|
53
|
+
ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
|
54
|
+
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
|
55
|
+
TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
|
56
|
+
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
|
57
|
+
CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
|
58
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
|
59
|
+
fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
|
60
|
+
RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
|
61
|
+
EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
|
62
|
+
L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
|
63
|
+
B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
|
60
64
|
-----END CERTIFICATE-----
|
61
65
|
- |
|
62
66
|
-----BEGIN CERTIFICATE-----
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
67
|
+
MIIFIzCCBAugAwIBAgIQCMePMbkSxvnPeJhYXIfaxzANBgkqhkiG9w0BAQsFADBy
|
68
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
69
|
+
d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
|
70
|
+
SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTAwNzAwMDAwMFoXDTIzMTEwNjEyMDAw
|
71
|
+
MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
|
72
|
+
BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
|
73
|
+
IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNTz4zvAy7h/vQp
|
74
|
+
4dr1txXHlABAagkwYYwTMCtHs5PXsJITx/5SAjx5swuaLfze5kPBNF2YImvFlOXY
|
75
|
+
WaB+0PsOnXnaARsDZU683xFlj8izU6IN6VrAHzDLKFBzruJENrOJD/ikbEtbjO/q
|
76
|
+
gFbmS9J9v5ohG/pcRSS0t4ZPAwymf8eCp6QsvOKK/Aymp1RhlRaP8N6N5CIpkhz1
|
77
|
+
9p968iCE+DjOXVYxcWE+jE/7uB1dbgrXykNBujMSS3GULOvVEY28n6NCmrPlo23g
|
78
|
+
yRjYVJ2Vy14nBqnxDZ/yRIfWRVjWoT9TsAEbe9gY29oDpSCSs4wSmLQd5zGCpZ9h
|
79
|
+
r0HDFB8CAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
|
80
|
+
dQ5YMB0GA1UdDgQWBBTLBL7DTwumVEKtdCdpHVYMXOFeDzAOBgNVHQ8BAf8EBAMC
|
81
|
+
B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
|
82
|
+
L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
|
83
|
+
L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
|
84
|
+
MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
|
85
|
+
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
|
86
|
+
JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
|
87
|
+
AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
|
88
|
+
ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
|
89
|
+
BQADggEBAN+GL5/myPWg7oH4mVrG7/OhXF1MoYQF0ddaNiqaweEHMuKJBQCVZRbL
|
90
|
+
37HojoKXXv2yyRJBCeTB+ojrxX+5PdLVZa0ss7toWzJ2A1poPXZ1eZvm5xeFD32z
|
91
|
+
YQaTmmNWNI3PCDTyJ2PXUc+bDiNNwcZ7yc5o78UNRvp9Jxghya17Q76c9Ov9wvnv
|
92
|
+
dxxQKWGOQy0m4fBrkyjAyH9Djjn81RbQrqYgPuhd5nD0HjN3VUQLhQbIJrk9TVs0
|
93
|
+
EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
|
94
|
+
9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
|
90
95
|
-----END CERTIFICATE-----
|
91
|
-
date:
|
96
|
+
date: 2020-11-30 00:00:00.000000000 Z
|
92
97
|
dependencies:
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: bundler
|
95
|
-
requirement: !ruby/object:Gem::Requirement
|
96
|
-
requirements:
|
97
|
-
- - "~>"
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '1.12'
|
100
|
-
type: :development
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: !ruby/object:Gem::Requirement
|
103
|
-
requirements:
|
104
|
-
- - "~>"
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: '1.12'
|
107
98
|
- !ruby/object:Gem::Dependency
|
108
99
|
name: rake
|
109
100
|
requirement: !ruby/object:Gem::Requirement
|
110
101
|
requirements:
|
111
|
-
- - "
|
102
|
+
- - ">="
|
112
103
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
104
|
+
version: '0'
|
114
105
|
type: :development
|
115
106
|
prerelease: false
|
116
107
|
version_requirements: !ruby/object:Gem::Requirement
|
117
108
|
requirements:
|
118
|
-
- - "
|
109
|
+
- - ">="
|
119
110
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
111
|
+
version: '0'
|
121
112
|
- !ruby/object:Gem::Dependency
|
122
113
|
name: rspec
|
123
114
|
requirement: !ruby/object:Gem::Requirement
|
124
115
|
requirements:
|
125
|
-
- - "
|
116
|
+
- - ">="
|
126
117
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
118
|
+
version: '0'
|
128
119
|
type: :development
|
129
120
|
prerelease: false
|
130
121
|
version_requirements: !ruby/object:Gem::Requirement
|
131
122
|
requirements:
|
132
|
-
- - "
|
123
|
+
- - ">="
|
133
124
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
125
|
+
version: '0'
|
135
126
|
- !ruby/object:Gem::Dependency
|
136
127
|
name: rex-core
|
137
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,7 +142,7 @@ description: "The Ruby Exploitation (Rex) Socket Abstraction Library. This libra
|
|
151
142
|
with the functionality\n for things like L3 pivoting used
|
152
143
|
by Metasploit. "
|
153
144
|
email:
|
154
|
-
-
|
145
|
+
- msfdev@metasploit.com
|
155
146
|
executables: []
|
156
147
|
extensions: []
|
157
148
|
extra_rdoc_files: []
|
@@ -203,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
203
194
|
version: '0'
|
204
195
|
requirements: []
|
205
196
|
rubyforge_project:
|
206
|
-
rubygems_version: 2.
|
197
|
+
rubygems_version: 2.7.10
|
207
198
|
signing_key:
|
208
199
|
specification_version: 4
|
209
200
|
summary: The Ruby Exploitation (Rex) Socket Abstraction Library.
|
metadata.gz.sig
CHANGED
Binary file
|