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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d324f9013128cde497a5e115e4c7573c6700add0
4
- data.tar.gz: 9b45082ec8785468b0a5a36c6bf5eee8b8e50ca4
2
+ SHA256:
3
+ metadata.gz: 63508bcf572f70073bf97d0e02fefc113862dd596c349b698efadeaa39e1e684
4
+ data.tar.gz: fc699f97f15cdf6301d484b5c26532c9177a4e58d4bef99ca9b7b4bd0833c8d8
5
5
  SHA512:
6
- metadata.gz: 46cdc0c917347c6754763f072d9cd4ccee6121904cf591d153ba4ff860a1e7182a5906353bb8574ac0cee3b4668a36c7916900721a7c04e9dd7d5561487d9121
7
- data.tar.gz: a9b518568244c4dc29f92fc2a273aa45c9cfdd8f17212693839e40406fe0e285d149661fb0a2bd0d18b6032a22e4bee25a17569dd4369f378a3972c3256b5acd
6
+ metadata.gz: e5e7ea9a929fa979e8155da874b4bb1f5f1f10157e4ce017e65a8384b7e6deb86e1b5b87e3513959e9fe306b9be8bf7ef0ec5472a865722c4cbb6dce7ee463af
7
+ data.tar.gz: 34080d04f0950a7bfb43189c98390ed8e72dea4167b2f4bfa0ec186bd5ae2ce57cfcaff07788e34fc8ab9418c52861a5c2057668f42408b6619cb23e3526916b
@@ -1 +1,2 @@
1
- [搚�����mNb���*��D�����pz�ɘ��ua���� 0J�su��̾1�֨���'��5����)����\b <��Y�������[,�;)�3 �3 �q��@ �h���2��C�|�*v;�����Q7b��:�&F��i�`��LL�Z��N�V�+K��
1
+ tD��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
- �6,|���V�-uVȎ�whJ �ì*�m�Fʅ�&^�Q��l2дSRq��d���F| R4��i|���ݣ|��]��< D�<Ո2}��� ��̍�|����ӡo��*�᳗�3�ō߂C��L����!���x�4m�����>�P~8}���b5s��k�
2
- ����Mj q��j�ӷ�$I��ߡ�[���80w��^.�`���IM����P��
3
- n$�����*�h�����va��s
1
+ ����;Qk'���y��1���d|S�p�0ҧ�x��aeA�������a�P|�Ke��M�Sx��Φ��Sq���,V^�LfiK"����;q����QƘf*��s?�.�0wH�}S3�V"��xS�r�/:f�$�/,�%�F�N�6ɖ_3�����^@L��
2
+ I2�u����>��k�b���n]KL�tP�f,r��nĠ!%4|����t��HJ�=��
@@ -3,4 +3,4 @@ group: stable
3
3
  cache: bundler
4
4
  language: ruby
5
5
  rvm:
6
- - 2.3.2
6
+ - 2.7.2
@@ -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
- getsockname
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
- # Return peer connection information.
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'] || false
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'] || false
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
- attr_accessor :peerport
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
- attr_accessor :localhost
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
- attr_accessor :localport
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
- attr_accessor :proto
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
- attr_accessor :server
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
- attr_accessor :comm
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
- attr_accessor :context
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
- attr_accessor :retries
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
- attr_accessor :timeout
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
- attr_accessor :bare
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
- attr_accessor :ssl
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
- attr_accessor :v6
398
-
424
+ attr_writer :v6
425
+ def v6
426
+ @v6 || false
427
+ end
399
428
 
400
429
  # List of proxies to use
401
- # @return [String]
430
+ # @return [Array]
402
431
  attr_accessor :proxies
403
432
 
404
433
  alias peeraddr peerhost
@@ -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)+1) * yr)
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){ }
@@ -61,6 +61,11 @@ module Rex::Socket::TcpServer
61
61
 
62
62
  t.peerhost = pn[1]
63
63
  t.peerport = pn[2]
64
+
65
+ ln = t.getlocalname
66
+
67
+ t.localhost = ln[1]
68
+ t.localport = ln[2]
64
69
  end
65
70
 
66
71
  t
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module Socket
3
- VERSION = "0.1.20"
3
+ VERSION = "0.1.25"
4
4
  end
5
5
  end
@@ -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)
@@ -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 = ["David Maloney"]
10
- spec.email = ["DMaloney@rapid7.com"]
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 "bundler", "~> 1.12"
28
- spec.add_development_dependency "rake", "~> 10.0"
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.20
4
+ version: 0.1.25
5
5
  platform: ruby
6
6
  authors:
7
- - David Maloney
7
+ - Metasploit Hackers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
14
- A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
15
- Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
16
- MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
17
- A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
18
- hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
19
- RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
20
- gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
21
- KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
22
- QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
23
- XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
24
- DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
25
- LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
26
- RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
27
- jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
28
- 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
29
- mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
30
- Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
31
- WD9f
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
- MIIElDCCA3ygAwIBAgIOSBtqBybS6D8mAtSCWs0wDQYJKoZIhvcNAQELBQAwTDEg
36
- MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2Jh
37
- bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTYwNjE1MDAwMDAwWhcNMjQw
38
- NjE1MDAwMDAwWjBaMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBu
39
- di1zYTEwMC4GA1UEAxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1
40
- NiAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjYVVI6kfU6/J
41
- 7TbCKbVu2PlC9SGLh/BDoS/AP5fjGEfUlk6Iq8Zj6bZJFYXx2Zt7G/3YSsxtToZA
42
- F817ukcotdYUQAyG7h5LM/MsVe4hjNq2wf6wTjquUZ+lFOMQ5pPK+vldsZCH7/g1
43
- LfyiXCbuexWLH9nDoZc1QbMw/XITrZGXOs5ynQYKdTwfmOPLGC+MnwhKkQrZ2TXZ
44
- g5J2Yl7fg67k1gFOzPM8cGFYNx8U42qgr2v02dJsLBkwXaBvUt/RnMngDdl1EWWW
45
- 2UO0p5A5rkccVMuxlW4l3o7xEhzw127nFE2zGmXWhEpX7gSvYjjFEJtDjlK4Prau
46
- niyX/4507wIDAQABo4IBZDCCAWAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQWMBQG
47
- CCsGAQUFBwMDBggrBgEFBQcDCTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW
48
- BBQPOueslJF0LZYCc4OtnC5JPxmqVDAfBgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpj
49
- move4t0bvDA+BggrBgEFBQcBAQQyMDAwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3Nw
50
- Mi5nbG9iYWxzaWduLmNvbS9yb290cjMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov
51
- L2NybC5nbG9iYWxzaWduLmNvbS9yb290LXIzLmNybDBjBgNVHSAEXDBaMAsGCSsG
52
- AQQBoDIBMjAIBgZngQwBBAEwQQYJKwYBBAGgMgFfMDQwMgYIKwYBBQUHAgEWJmh0
53
- dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEB
54
- CwUAA4IBAQAVhCgM7aHDGYLbYydB18xjfda8zzabz9JdTAKLWBoWCHqxmJl/2DOK
55
- XJ5iCprqkMLFYwQL6IdYBgAHglnDqJQy2eAUTaDVI+DH3brwaeJKRWUtTUmQeGYy
56
- DrBowLCIsI7tXAb4XBBIPyNzujtThFKAzfCzFcgRCosFeEZZCNS+t/9L9ZxqTJx2
57
- ohGFRYzUN+5Q3eEzNKmhHzoL8VZEim+zM9CxjtEMYAfuMsLwJG+/r/uBAXZnxKPo
58
- 4KvcM1Uo42dHPOtqpN+U6fSmwIHRUphRptYCtzzqSu/QumXSN4NTS35nfIxA9gcc
59
- sK8EBtz4bEaIcpzrTp3DsLlUo7lOl8oU
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
- MIIE5jCCA86gAwIBAgIMKDuO03uv6RWXR1uAMA0GCSqGSIb3DQEBCwUAMFoxCzAJ
64
- BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTAwLgYDVQQDEydH
65
- bG9iYWxTaWduIENvZGVTaWduaW5nIENBIC0gU0hBMjU2IC0gRzMwHhcNMTYwOTEz
66
- MTgxMDIyWhcNMTkxMTExMTUxNTM4WjBgMQswCQYDVQQGEwJVUzEWMBQGA1UECBMN
67
- TWFzc2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9uMRMwEQYDVQQKEwpSYXBpZDcg
68
- TExDMRMwEQYDVQQDEwpSYXBpZDcgTExDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
69
- MIIBCgKCAQEAl0HeC0FzN1BJ4nQkxsBng3peS9Bdi9rpSGx+g0Ximd+M/7twmund
70
- bzn2JPbNK/Gp/rq/SytrNSLcUzcbH/0z5Ltyw1/jQsGtRBrns0NZSRXqupQDW5R6
71
- HFpaIAl3OdsesmIQc/fm0uhh8dkfHVo7UsZO/TeCPoy0uHXTI6aFBPzMMsdz+gf3
72
- cCCLsnNKQh/T2Q/jwBs3NTPoyza/pPZcvGogKcWCeNihTO5Rn1Fc71sMHSjQsDtn
73
- 1fWGKYGi0qjvZ4lpGM9IFZMTbySKHbPLhhHnBOoV7avGemdky3AEsUeiT+6DY0P1
74
- IydBy24uVNhGATglME1ttlT4Eme/to0M6wIDAQABo4IBpDCCAaAwDgYDVR0PAQH/
75
- BAQDAgeAMIGUBggrBgEFBQcBAQSBhzCBhDBIBggrBgEFBQcwAoY8aHR0cDovL3Nl
76
- Y3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3Njb2Rlc2lnbnNoYTJnM29jc3Au
77
- Y3J0MDgGCCsGAQUFBzABhixodHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nj
78
- b2Rlc2lnbnNoYTJnMzBWBgNVHSAETzBNMEEGCSsGAQQBoDIBMjA0MDIGCCsGAQUF
79
- BwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAIBgZn
80
- gQwBBAEwCQYDVR0TBAIwADA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmds
81
- b2JhbHNpZ24uY29tL2dzY29kZXNpZ25zaGEyZzMuY3JsMBMGA1UdJQQMMAoGCCsG
82
- AQUFBwMDMB0GA1UdDgQWBBSm8RBpBC/cK9VmxzO2+RWnacN8CTAfBgNVHSMEGDAW
83
- gBQPOueslJF0LZYCc4OtnC5JPxmqVDANBgkqhkiG9w0BAQsFAAOCAQEANVO3uYQl
84
- h8iicbaXE3odrL+kXXmeeNgt4BD3x7GKAVIVixtwBS6pvrshjc1LN0tm3ruiv8oy
85
- cq4FiEmVUXZejSRvVVtABeWdZWo+lJ8NxCBUEYYmnMrjgFIbGiEbBsg7PGtyeQsA
86
- 5Wbg7Lx889mS1tKfQBcPif8EjpTiXNfMiywmpaMYmvm+yQgzrRLDbjz6JV0Rc5Ga
87
- WChka+LTPnMtsWJuFM8ka8icMeS28/nAGERdewxWvz+DeAPMORdTJ7aqb6+Y9xuz
88
- G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
89
- 8mVuTXnyJOKRJA==
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: 2019-08-30 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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: '3.0'
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: '3.0'
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
- - DMaloney@rapid7.com
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.6.14
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