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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.travis.yml +1 -1
- data/lib/rex/core/version.rb +1 -1
- data/lib/rex/exceptions.rb +31 -18
- data/lib/rex/file.rb +2 -2
- data/lib/rex/io/stream.rb +91 -31
- data/lib/rex/io/stream_abstraction.rb +4 -0
- data/rex-core.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: cc3a037b0e2014526adcb218da1f7519b84c59ed81457e63d3d4bfe8632b7d32
|
4
|
+
data.tar.gz: ac2a430d2978df81f3671123d1c192430098ab4f2b3833a26489bcbe2f6e7db9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/lib/rex/core/version.rb
CHANGED
data/lib/rex/exceptions.rb
CHANGED
@@ -145,9 +145,10 @@ end
|
|
145
145
|
#
|
146
146
|
###
|
147
147
|
module HostCommunicationError
|
148
|
-
def initialize(addr = nil, port = nil)
|
149
|
-
|
150
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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 = [
|
10
|
-
spec.email = [
|
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 "
|
23
|
-
spec.add_development_dependency "
|
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.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Metasploit Hackers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
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: 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: '
|
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
|
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
|
-
-
|
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.
|
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
|