rex-core 0.1.13 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 572c75d713846400112965fda7c63e2b1c285277
4
- data.tar.gz: 344a3b66adcf8c8fb3a7aded500cf4683862e78e
2
+ SHA256:
3
+ metadata.gz: cc3a037b0e2014526adcb218da1f7519b84c59ed81457e63d3d4bfe8632b7d32
4
+ data.tar.gz: ac2a430d2978df81f3671123d1c192430098ab4f2b3833a26489bcbe2f6e7db9
5
5
  SHA512:
6
- metadata.gz: 5367790a34e23b297b356dd6a702dc2c15ea257db0c58391c4ce277f9c1eaeac9598e091abd5fc92b4ef0bf371309dea92cc1047ef84a5a628f5810bbb170cba
7
- data.tar.gz: 2e518310d93d7d45cf0b55ad2793da2ddb35591a8bd29f50c6b297d79e778f75a04cf38328691ca81486763e02c108b3a35cdf1198a4c4bbf639ff0b13869bf7
6
+ metadata.gz: 0adeeff27a4a9dee8092466387624a60ff991789b419e15c667c9f0b2a94a3c8f64e836ee967182dd78834e46722c42fbb2e8cf0c1af5a2210b9bacc136da9e2
7
+ data.tar.gz: 308daa85d93b917ce3dbb7fc5445087269899c437baaa96ce0082901ee54de94e6e5b7016cd3cfaf4914716b0fd8bddc331c439d2cf5c9d6999572215bddfa1c
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.travis.yml CHANGED
@@ -3,4 +3,4 @@ group: stable
3
3
  cache: bundler
4
4
  language: ruby
5
5
  rvm:
6
- - 2.3.3
6
+ - 2.7.2
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module Core
3
- VERSION = "0.1.13"
3
+ VERSION = "0.1.17"
4
4
  end
5
5
  end
@@ -145,9 +145,10 @@ end
145
145
  #
146
146
  ###
147
147
  module HostCommunicationError
148
- def initialize(addr = nil, port = nil)
149
- self.host = addr
150
- self.port = port
148
+ def initialize(addr = nil, port = nil, reason: nil)
149
+ @host = addr
150
+ @port = port
151
+ @reason = reason
151
152
  end
152
153
 
153
154
  #
@@ -156,7 +157,7 @@ module HostCommunicationError
156
157
  #
157
158
  def addr_to_s
158
159
  if host and port
159
- "(#{host}:#{port})"
160
+ host.include?(':') ? "([#{host}]:#{port})" : "(#{host}:#{port})"
160
161
  elsif host
161
162
  "(#{host})"
162
163
  else
@@ -164,7 +165,13 @@ module HostCommunicationError
164
165
  end
165
166
  end
166
167
 
167
- attr_accessor :host, :port
168
+ def to_s
169
+ str = super
170
+ str << " #{@reason}" if @reason
171
+ str
172
+ end
173
+
174
+ attr_accessor :host, :port, :reason
168
175
  end
169
176
 
170
177
 
@@ -186,7 +193,9 @@ end
186
193
  ###
187
194
  class ConnectionRefused < ConnectionError
188
195
  def to_s
189
- "The connection was refused by the remote host #{addr_to_s}."
196
+ str = "The connection was refused by the remote host #{addr_to_s}."
197
+ str << " #{@reason}" unless @reason.nil?
198
+ str
190
199
  end
191
200
  end
192
201
 
@@ -198,7 +207,9 @@ end
198
207
  ###
199
208
  class HostUnreachable < ConnectionError
200
209
  def to_s
201
- "The host #{addr_to_s} was unreachable."
210
+ str = "The host #{addr_to_s} was unreachable."
211
+ str << " #{@reason}" unless @reason.nil?
212
+ str
202
213
  end
203
214
  end
204
215
 
@@ -209,7 +220,9 @@ end
209
220
  ###
210
221
  class ConnectionTimeout < ConnectionError
211
222
  def to_s
212
- "The connection timed out #{addr_to_s}."
223
+ str = "The connection with #{addr_to_s} timed out."
224
+ str << " #{@reason}" unless @reason.nil?
225
+ str
213
226
  end
214
227
  end
215
228
 
@@ -220,18 +233,17 @@ end
220
233
  #
221
234
  ###
222
235
  class InvalidDestination < ConnectionError
223
- include SocketError
224
- include HostCommunicationError
225
-
226
236
  def to_s
227
- "The destination is invalid: #{addr_to_s}."
237
+ str = "The destination is invalid: #{addr_to_s}."
238
+ str << " #{@reason}" unless @reason.nil?
239
+ str
228
240
  end
229
241
  end
230
242
 
231
243
  ###
232
244
  #
233
245
  # This exception is raised when an attempt to use an address or port that is
234
- # already in use or onot available occurs. such as binding to a host on a
246
+ # already in use or not available occurs. such as binding to a host on a
235
247
  # given port that is already in use, or when a bind address is specified that
236
248
  # is not available to the host.
237
249
  #
@@ -241,7 +253,9 @@ class BindFailed < ::ArgumentError
241
253
  include HostCommunicationError
242
254
 
243
255
  def to_s
244
- "The address is already in use or unavailable: #{addr_to_s}."
256
+ str = "The address is already in use or unavailable: #{addr_to_s}."
257
+ str << " #{@reason}" unless @reason.nil?
258
+ str
245
259
  end
246
260
  end
247
261
 
@@ -255,11 +269,10 @@ end
255
269
  #
256
270
  ##
257
271
  class AddressInUse < ConnectionError
258
- include SocketError
259
- include HostCommunicationError
260
-
261
272
  def to_s
262
- "The address is already in use or unavailable: #{addr_to_s}."
273
+ str = "The address is already in use or unavailable: #{addr_to_s}."
274
+ str << " #{@reason}" unless @reason.nil?
275
+ str
263
276
  end
264
277
  end
265
278
 
data/lib/rex/file.rb CHANGED
@@ -130,7 +130,7 @@ module Find
130
130
  paths.collect!{|d| d.dup}
131
131
  while file = paths.shift
132
132
  catch(:prune) do
133
- yield file.dup.taint
133
+ yield file.dup
134
134
  next unless File.exist? file
135
135
  begin
136
136
  if File.stat(file).directory? then
@@ -145,7 +145,7 @@ module Find
145
145
  else
146
146
  f = File.join(file, f)
147
147
  end
148
- paths.unshift f.untaint
148
+ paths.unshift f
149
149
  end
150
150
  ensure
151
151
  d.close
data/lib/rex/io/stream.rb CHANGED
@@ -25,6 +25,22 @@ module Stream
25
25
  #
26
26
  ##
27
27
 
28
+ #
29
+ # Initialize synchronization for this stream. This should be used if the
30
+ # stream will be written to, read or closed from multiple threads.
31
+ #
32
+ def initialize_synchronization
33
+ self.stream_lock = Rex::ReadWriteLock.new
34
+ self.close_resource = false
35
+ end
36
+
37
+ def close
38
+ self.close_resource = true
39
+ synchronize_update {
40
+ super
41
+ }
42
+ end
43
+
28
44
  #
29
45
  # This method writes the supplied buffer to the stream. This method
30
46
  # intelligent reduces the size of supplied buffers so that ruby doesn't get
@@ -37,28 +53,31 @@ module Stream
37
53
  total_length = buf.length
38
54
  block_size = 32768
39
55
 
40
- begin
41
- while( total_sent < total_length )
42
- s = Rex::ThreadSafe.select( nil, [ fd ], nil, 0.2 )
43
- if( s == nil || s[0] == nil )
44
- next
45
- end
46
- data = buf[total_sent, block_size]
47
- sent = fd.write_nonblock( data )
48
- if sent > 0
49
- total_sent += sent
56
+ synchronize_access {
57
+ begin
58
+ while( total_sent < total_length )
59
+ s = Rex::ThreadSafe.select( nil, [ fd ], nil, 0.2 )
60
+ if( s == nil || s[0] == nil )
61
+ next
62
+ end
63
+ data = buf[total_sent, block_size]
64
+ sent = fd.write_nonblock( data )
65
+ if sent > 0
66
+ total_sent += sent
67
+ end
50
68
  end
69
+ rescue ::Errno::EAGAIN, ::Errno::EWOULDBLOCK
70
+ return nil if self.close_resource
71
+ # Sleep for a half a second, or until we can write again
72
+ Rex::ThreadSafe.select( nil, [ fd ], nil, 0.5 )
73
+ # Decrement the block size to handle full sendQs better
74
+ block_size = 1024
75
+ # Try to write the data again
76
+ retry
77
+ rescue ::IOError, ::Errno::EPIPE
78
+ return nil
51
79
  end
52
- rescue ::Errno::EAGAIN, ::Errno::EWOULDBLOCK
53
- # Sleep for a half a second, or until we can write again
54
- Rex::ThreadSafe.select( nil, [ fd ], nil, 0.5 )
55
- # Decrement the block size to handle full sendQs better
56
- block_size = 1024
57
- # Try to write the data again
58
- retry
59
- rescue ::IOError, ::Errno::EPIPE
60
- return nil
61
- end
80
+ }
62
81
 
63
82
  total_sent
64
83
  end
@@ -67,17 +86,19 @@ module Stream
67
86
  # This method reads data of the supplied length from the stream.
68
87
  #
69
88
  def read(length = nil, opts = {})
70
-
71
- begin
72
- return fd.read_nonblock( length )
73
- rescue ::Errno::EAGAIN, ::Errno::EWOULDBLOCK
74
- # Sleep for a half a second, or until we can read again
75
- Rex::ThreadSafe.select( [ fd ], nil, nil, 0.5 )
76
- # Decrement the block size to handle full sendQs better
77
- retry
78
- rescue ::IOError, ::Errno::EPIPE
79
- return nil
80
- end
89
+ synchronize_access {
90
+ begin
91
+ return fd.read_nonblock( length )
92
+ rescue ::Errno::EAGAIN, ::Errno::EWOULDBLOCK
93
+ return nil if self.close_resource
94
+ # Sleep for a half a second, or until we can read again
95
+ Rex::ThreadSafe.select( [ fd ], nil, nil, 0.5 )
96
+ # Decrement the block size to handle full sendQs better
97
+ retry
98
+ rescue ::IOError, ::Errno::EPIPE
99
+ return nil
100
+ end
101
+ }
81
102
  end
82
103
 
83
104
  #
@@ -306,6 +327,45 @@ module Stream
306
327
 
307
328
  protected
308
329
 
330
+ #
331
+ # The read-write lock used to synchronize access to the stream. This is only
332
+ # set when synchronization has been initialized as performed by
333
+ # #initialize_synchronization.
334
+ #
335
+ attr_accessor :stream_lock
336
+
337
+ #
338
+ # A boolean flag indicating that the resource is to be closed. Blocking
339
+ # operations that are synchronized (such as #read and #write) should evaluate
340
+ # this flag and exit appropriately when there is no data to be processed.
341
+ attr_accessor :close_resource
342
+
343
+ #
344
+ # Synchronize non-state changing access to the stream such as read and write
345
+ # operations. If synchronization has not been initialized, this doesn't do
346
+ # anything.
347
+ #
348
+ def synchronize_access
349
+ self.stream_lock.lock_read unless self.stream_lock.nil?
350
+ begin
351
+ yield
352
+ ensure
353
+ self.stream_lock.unlock_read unless self.stream_lock.nil?
354
+ end
355
+ end
356
+
357
+ #
358
+ # Synchronize state changing operations to the stream such as closing it.
359
+ # If synchronization has not been initialized, this doesn't do anything.
360
+ #
361
+ def synchronize_update
362
+ self.stream_lock.lock_write unless self.stream_lock.nil?
363
+ begin
364
+ yield
365
+ ensure
366
+ self.stream_lock.unlock_write unless self.stream_lock.nil?
367
+ end
368
+ end
309
369
  end
310
370
 
311
371
  end end
@@ -19,10 +19,14 @@ module StreamAbstraction
19
19
  #
20
20
  def initialize_abstraction
21
21
  self.lsock, self.rsock = Rex::Socket.tcp_socket_pair()
22
+
22
23
  self.lsock.extend(Rex::IO::Stream)
23
24
  self.lsock.extend(Ext)
24
25
  self.rsock.extend(Rex::IO::Stream)
25
26
 
27
+ self.lsock.initialize_synchronization
28
+ self.rsock.initialize_synchronization
29
+
26
30
  self.monitor_rsock("StreamMonitorRemote")
27
31
  end
28
32
 
data/rex-core.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'rex/core/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "rex-core"
8
8
  spec.version = Rex::Core::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{Core libraries required for the Ruby Exploitation (Rex) Suite.}
13
13
  spec.description = %q{Core libraries required for the Ruby Exploitation (Rex) Suite.
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.required_ruby_version = '>= 2.2.0'
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.12"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec", "~> 3.0"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
25
24
  end
metadata CHANGED
@@ -1,142 +1,133 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rex-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
- - David Maloney
7
+ - Metasploit Hackers
8
8
  autorequire:
9
9
  bindir: bin
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: 2018-02-22 00:00:00.000000000 Z
96
+ date: 2021-07-15 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
  description: |-
136
127
  Core libraries required for the Ruby Exploitation (Rex) Suite.
137
128
  Rex provides a variety of classes useful for security testing and exploit development.
138
129
  email:
139
- - DMaloney@rapid7.com
130
+ - msfdev@metasploit.com
140
131
  executables: []
141
132
  extensions: []
142
133
  extra_rdoc_files: []
@@ -185,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
176
  version: '0'
186
177
  requirements: []
187
178
  rubyforge_project:
188
- rubygems_version: 2.6.13
179
+ rubygems_version: 2.7.10
189
180
  signing_key:
190
181
  specification_version: 4
191
182
  summary: Core libraries required for the Ruby Exploitation (Rex) Suite.
metadata.gz.sig CHANGED
Binary file