ruby_smb 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/ruby_smb/client.rb +40 -2
- data/lib/ruby_smb/dispatcher/socket.rb +3 -0
- data/lib/ruby_smb/smb1/commands.rb +1 -0
- data/lib/ruby_smb/smb1/packet.rb +2 -0
- data/lib/ruby_smb/smb1/packet/logoff_request.rb +30 -0
- data/lib/ruby_smb/smb1/packet/logoff_response.rb +31 -0
- data/lib/ruby_smb/smb2/packet.rb +2 -0
- data/lib/ruby_smb/smb2/packet/logoff_request.rb +22 -0
- data/lib/ruby_smb/smb2/packet/logoff_response.rb +23 -0
- data/lib/ruby_smb/version.rb +1 -1
- data/spec/lib/ruby_smb/smb1/packet/logoff_request_spec.rb +46 -0
- data/spec/lib/ruby_smb/smb1/packet/logoff_response_spec.rb +46 -0
- data/spec/lib/ruby_smb/smb2/packet/logoff_request_spec.rb +30 -0
- data/spec/lib/ruby_smb/smb2/packet/logoff_response_spec.rb +30 -0
- metadata +14 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 851b91cd7c3a5584f839a77b10bae8d84fb48212
|
4
|
+
data.tar.gz: 5a0443efab42f322e25da34ee398e98afd13080b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f6df6e678fc8e73921f20784d465c447e37c364b1e01a07be5ab7683f40f6349fc0698446a6c72300b834698513626951441e1ae8c46e1a0d9ac9c3bb927097
|
7
|
+
data.tar.gz: b004442c39c3f88b63fa3052b7d7a3c8505c83748e5d8bf8531cd94d65816137d241e60e4e626439905993520c048cf11b919131602fec28a8f88f1f9bf9dbef
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/ruby_smb/client.rb
CHANGED
@@ -118,6 +118,15 @@ module RubySMB
|
|
118
118
|
@smb2_message_id = 0
|
119
119
|
end
|
120
120
|
|
121
|
+
# Logs off any currently open session on the server
|
122
|
+
# and closes the TCP socket connection.
|
123
|
+
#
|
124
|
+
# @return [void]
|
125
|
+
def disconnect!
|
126
|
+
logoff!
|
127
|
+
dispatcher.tcp_socket.close
|
128
|
+
end
|
129
|
+
|
121
130
|
# Sets the message id field in an SMB2 packet's
|
122
131
|
# header to the one tracked by the client. It then increments
|
123
132
|
# the counter on the client.
|
@@ -132,6 +141,8 @@ module RubySMB
|
|
132
141
|
packet
|
133
142
|
end
|
134
143
|
|
144
|
+
# Performs protocol negotiation and session setup. It defaults to using
|
145
|
+
# the credentials supplied during initialization, but can take a new set of credentials if needed.
|
135
146
|
def login(username: self.username, password: self.password, domain: self.domain, local_workstation: self.local_workstation )
|
136
147
|
@domain = domain
|
137
148
|
@local_workstation = local_workstation
|
@@ -149,6 +160,23 @@ module RubySMB
|
|
149
160
|
authenticate
|
150
161
|
end
|
151
162
|
|
163
|
+
# Sends a LOGOFF command to the remote server to terminate the session
|
164
|
+
#
|
165
|
+
# @return [WindowsError::ErrorCode] the NTStatus of the response
|
166
|
+
def logoff!
|
167
|
+
if smb2
|
168
|
+
request = RubySMB::SMB2::Packet::LogoffRequest.new
|
169
|
+
raw_response = send_recv(request)
|
170
|
+
response = RubySMB::SMB2::Packet::LogoffResponse.read(raw_response)
|
171
|
+
else
|
172
|
+
request = RubySMB::SMB1::Packet::LogoffRequest.new
|
173
|
+
raw_response = send_recv(request)
|
174
|
+
response = RubySMB::SMB1::Packet::LogoffResponse.read(raw_response)
|
175
|
+
end
|
176
|
+
wipe_state!
|
177
|
+
response.status_code
|
178
|
+
end
|
179
|
+
|
152
180
|
# Sends a packet and receives the raw response through the Dispatcher.
|
153
181
|
# It will also sign the packet if neccessary.
|
154
182
|
#
|
@@ -190,9 +218,19 @@ module RubySMB
|
|
190
218
|
smb1_tree_connect(share)
|
191
219
|
end
|
192
220
|
end
|
193
|
-
private
|
194
|
-
|
195
221
|
|
222
|
+
# Resets all of the session state on the client, setting it
|
223
|
+
# back to scratch. Should only be called when a session is no longer
|
224
|
+
# valid.
|
225
|
+
#
|
226
|
+
# @return [void]
|
227
|
+
def wipe_state!
|
228
|
+
self.session_id = 0x00
|
229
|
+
self.user_id = 0x00
|
230
|
+
self.session_key = ''
|
231
|
+
self.sequence_counter = 0
|
232
|
+
self.smb2_message_id = 0
|
233
|
+
end
|
196
234
|
|
197
235
|
|
198
236
|
end
|
@@ -11,6 +11,9 @@ class RubySMB::Dispatcher::Socket < RubySMB::Dispatcher::Base
|
|
11
11
|
# @param tcp_socket [IO]
|
12
12
|
def initialize(tcp_socket)
|
13
13
|
@tcp_socket = tcp_socket
|
14
|
+
if @tcp_socket.respond_to?(:setsockopt)
|
15
|
+
@tcp_socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
|
16
|
+
end
|
14
17
|
end
|
15
18
|
|
16
19
|
# @param host [String] passed to TCPSocket.new
|
data/lib/ruby_smb/smb1/packet.rb
CHANGED
@@ -11,6 +11,8 @@ module RubySMB
|
|
11
11
|
require 'ruby_smb/smb1/packet/tree_connect_response'
|
12
12
|
require 'ruby_smb/smb1/packet/tree_disconnect_request'
|
13
13
|
require 'ruby_smb/smb1/packet/tree_disconnect_response'
|
14
|
+
require 'ruby_smb/smb1/packet/logoff_request'
|
15
|
+
require 'ruby_smb/smb1/packet/logoff_response'
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
|
5
|
+
# This class represents an SMB1 LOGOFF Request Packet as defined in
|
6
|
+
# [2.2.4.54.1 Request](https://msdn.microsoft.com/en-us/library/ee442167.aspx)
|
7
|
+
class LogoffRequest < RubySMB::GenericPacket
|
8
|
+
|
9
|
+
# The Parameter Block for this packet is empty save the Word Count and ANDX Block
|
10
|
+
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
|
+
and_x_block :andx_block
|
12
|
+
end
|
13
|
+
|
14
|
+
# The Data Block for this packet is empty save the Byte Count
|
15
|
+
class DataBlock < RubySMB::SMB1::DataBlock
|
16
|
+
end
|
17
|
+
|
18
|
+
smb_header :smb_header
|
19
|
+
parameter_block :parameter_block
|
20
|
+
data_block :data_block
|
21
|
+
|
22
|
+
def initialize_instance
|
23
|
+
super
|
24
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_LOGOFF
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
|
5
|
+
# This class represents an SMB1 LOGOFF Response Packet as defined in
|
6
|
+
# [2.2.4.54.2 Response](https://msdn.microsoft.com/en-us/library/ee441488.aspx)
|
7
|
+
class LogoffResponse < RubySMB::GenericPacket
|
8
|
+
|
9
|
+
# The Parameter Block for this packet is empty save the Word Count and ANDX Block
|
10
|
+
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
|
+
and_x_block :andx_block
|
12
|
+
end
|
13
|
+
|
14
|
+
# The Data Block for this packet is empty save the Byte Count
|
15
|
+
class DataBlock < RubySMB::SMB1::DataBlock
|
16
|
+
end
|
17
|
+
|
18
|
+
smb_header :smb_header
|
19
|
+
parameter_block :parameter_block
|
20
|
+
data_block :data_block
|
21
|
+
|
22
|
+
def initialize_instance
|
23
|
+
super
|
24
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_LOGOFF
|
25
|
+
smb_header.flags.reply = 1
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/ruby_smb/smb2/packet.rb
CHANGED
@@ -10,6 +10,8 @@ module RubySMB
|
|
10
10
|
require 'ruby_smb/smb2/packet/tree_connect_response'
|
11
11
|
require 'ruby_smb/smb2/packet/tree_disconnect_request'
|
12
12
|
require 'ruby_smb/smb2/packet/tree_disconnect_response'
|
13
|
+
require 'ruby_smb/smb2/packet/logoff_request'
|
14
|
+
require 'ruby_smb/smb2/packet/logoff_response'
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB2
|
3
|
+
module Packet
|
4
|
+
|
5
|
+
# An SMB2 LOGOFF Request Packet as defined in
|
6
|
+
# [2.2.7 SMB2 LOGOFF Request](https://msdn.microsoft.com/en-us/library/cc246565.aspx)
|
7
|
+
class LogoffRequest < RubySMB::GenericPacket
|
8
|
+
endian :little
|
9
|
+
smb2_header :smb2_header
|
10
|
+
uint16 :structure_size, label: 'Structure Size', initial_value: 4
|
11
|
+
uint16 :reserved, label: 'Reserved Space'
|
12
|
+
|
13
|
+
|
14
|
+
def initialize_instance
|
15
|
+
super
|
16
|
+
smb2_header.command = RubySMB::SMB2::Commands::LOGOFF
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB2
|
3
|
+
module Packet
|
4
|
+
|
5
|
+
# An SMB2 LOGOFF Response Packet as defined in
|
6
|
+
# [2.2.8 SMB2 LOGOFF Response](https://msdn.microsoft.com/en-us/library/cc246566.aspx)
|
7
|
+
class LogoffResponse < RubySMB::GenericPacket
|
8
|
+
endian :little
|
9
|
+
smb2_header :smb2_header
|
10
|
+
uint16 :structure_size, label: 'Structure Size', initial_value: 4
|
11
|
+
uint16 :reserved, label: 'Reserved Space'
|
12
|
+
|
13
|
+
|
14
|
+
def initialize_instance
|
15
|
+
super
|
16
|
+
smb2_header.command = RubySMB::SMB2::Commands::LOGOFF
|
17
|
+
smb2_header.flags.reply = 1
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/ruby_smb/version.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe RubySMB::SMB1::Packet::LogoffRequest do
|
4
|
+
|
5
|
+
subject(:packet) { described_class.new }
|
6
|
+
|
7
|
+
describe '#smb_header' do
|
8
|
+
subject(:header) { packet.smb_header }
|
9
|
+
|
10
|
+
it 'is a standard SMB Header' do
|
11
|
+
expect(header).to be_a RubySMB::SMB1::SMBHeader
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should have the command set to SMB_COM_NEGOTIATE' do
|
15
|
+
expect(header.command).to eq RubySMB::SMB1::Commands::SMB_COM_LOGOFF
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should not have the response flag set' do
|
19
|
+
expect(header.flags.reply).to eq 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#parameter_block' do
|
24
|
+
subject(:parameter_block) { packet.parameter_block }
|
25
|
+
|
26
|
+
it 'is a standard ParameterBlock' do
|
27
|
+
expect(parameter_block).to be_a RubySMB::SMB1::ParameterBlock
|
28
|
+
end
|
29
|
+
|
30
|
+
it { is_expected.to respond_to :andx_block }
|
31
|
+
|
32
|
+
it 'has an AndXBlock' do
|
33
|
+
expect(parameter_block.andx_block).to be_a RubySMB::SMB1::AndXBlock
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#data_block' do
|
38
|
+
subject(:data_block) { packet.data_block }
|
39
|
+
|
40
|
+
it 'is a standard DataBlock' do
|
41
|
+
expect(data_block).to be_a RubySMB::SMB1::DataBlock
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe RubySMB::SMB1::Packet::LogoffResponse do
|
4
|
+
|
5
|
+
subject(:packet) { described_class.new }
|
6
|
+
|
7
|
+
describe '#smb_header' do
|
8
|
+
subject(:header) { packet.smb_header }
|
9
|
+
|
10
|
+
it 'is a standard SMB Header' do
|
11
|
+
expect(header).to be_a RubySMB::SMB1::SMBHeader
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should have the command set to SMB_COM_NEGOTIATE' do
|
15
|
+
expect(header.command).to eq RubySMB::SMB1::Commands::SMB_COM_LOGOFF
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should have the response flag set' do
|
19
|
+
expect(header.flags.reply).to eq 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#parameter_block' do
|
24
|
+
subject(:parameter_block) { packet.parameter_block }
|
25
|
+
|
26
|
+
it 'is a standard ParameterBlock' do
|
27
|
+
expect(parameter_block).to be_a RubySMB::SMB1::ParameterBlock
|
28
|
+
end
|
29
|
+
|
30
|
+
it { is_expected.to respond_to :andx_block }
|
31
|
+
|
32
|
+
it 'has an AndXBlock' do
|
33
|
+
expect(parameter_block.andx_block).to be_a RubySMB::SMB1::AndXBlock
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#data_block' do
|
38
|
+
subject(:data_block) { packet.data_block }
|
39
|
+
|
40
|
+
it 'is a standard DataBlock' do
|
41
|
+
expect(data_block).to be_a RubySMB::SMB1::DataBlock
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe RubySMB::SMB2::Packet::LogoffRequest do
|
4
|
+
|
5
|
+
subject(:packet) { described_class.new }
|
6
|
+
|
7
|
+
it { is_expected.to respond_to :smb2_header }
|
8
|
+
it { is_expected.to respond_to :structure_size }
|
9
|
+
|
10
|
+
it 'is little endian' do
|
11
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#smb2_header' do
|
15
|
+
subject(:header) { packet.smb2_header }
|
16
|
+
|
17
|
+
it 'is a standard SMB Header' do
|
18
|
+
expect(header).to be_a RubySMB::SMB2::SMB2Header
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have the command set to SMB_COM_NEGOTIATE' do
|
22
|
+
expect(header.command).to eq RubySMB::SMB2::Commands::LOGOFF
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should not have the response flag set' do
|
26
|
+
expect(header.flags.reply).to eq 0
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe RubySMB::SMB2::Packet::LogoffResponse do
|
4
|
+
|
5
|
+
subject(:packet) { described_class.new }
|
6
|
+
|
7
|
+
it { is_expected.to respond_to :smb2_header }
|
8
|
+
it { is_expected.to respond_to :structure_size }
|
9
|
+
|
10
|
+
it 'is little endian' do
|
11
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#smb2_header' do
|
15
|
+
subject(:header) { packet.smb2_header }
|
16
|
+
|
17
|
+
it 'is a standard SMB Header' do
|
18
|
+
expect(header).to be_a RubySMB::SMB2::SMB2Header
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have the command set to SMB_COM_NEGOTIATE' do
|
22
|
+
expect(header.command).to eq RubySMB::SMB2::Commands::LOGOFF
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should have the response flag set' do
|
26
|
+
expect(header.flags.reply).to eq 1
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_smb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Maloney
|
@@ -89,7 +89,7 @@ cert_chain:
|
|
89
89
|
G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
|
90
90
|
8mVuTXnyJOKRJA==
|
91
91
|
-----END CERTIFICATE-----
|
92
|
-
date: 2017-04-
|
92
|
+
date: 2017-04-17 00:00:00.000000000 Z
|
93
93
|
dependencies:
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: redcarpet
|
@@ -256,6 +256,8 @@ files:
|
|
256
256
|
- lib/ruby_smb/smb1/dialect.rb
|
257
257
|
- lib/ruby_smb/smb1/packet.rb
|
258
258
|
- lib/ruby_smb/smb1/packet/error_packet.rb
|
259
|
+
- lib/ruby_smb/smb1/packet/logoff_request.rb
|
260
|
+
- lib/ruby_smb/smb1/packet/logoff_response.rb
|
259
261
|
- lib/ruby_smb/smb1/packet/negotiate_request.rb
|
260
262
|
- lib/ruby_smb/smb1/packet/negotiate_response.rb
|
261
263
|
- lib/ruby_smb/smb1/packet/negotiate_response_extended.rb
|
@@ -282,6 +284,8 @@ files:
|
|
282
284
|
- lib/ruby_smb/smb2/commands.rb
|
283
285
|
- lib/ruby_smb/smb2/packet.rb
|
284
286
|
- lib/ruby_smb/smb2/packet/error_packet.rb
|
287
|
+
- lib/ruby_smb/smb2/packet/logoff_request.rb
|
288
|
+
- lib/ruby_smb/smb2/packet/logoff_response.rb
|
285
289
|
- lib/ruby_smb/smb2/packet/negotiate_request.rb
|
286
290
|
- lib/ruby_smb/smb2/packet/negotiate_response.rb
|
287
291
|
- lib/ruby_smb/smb2/packet/session_setup_request.rb
|
@@ -313,6 +317,8 @@ files:
|
|
313
317
|
- spec/lib/ruby_smb/smb1/data_block_spec.rb
|
314
318
|
- spec/lib/ruby_smb/smb1/dialect_spec.rb
|
315
319
|
- spec/lib/ruby_smb/smb1/packet/error_packet_spec.rb
|
320
|
+
- spec/lib/ruby_smb/smb1/packet/logoff_request_spec.rb
|
321
|
+
- spec/lib/ruby_smb/smb1/packet/logoff_response_spec.rb
|
316
322
|
- spec/lib/ruby_smb/smb1/packet/negotiate_request_spec.rb
|
317
323
|
- spec/lib/ruby_smb/smb1/packet/negotiate_response_extended_spec.rb
|
318
324
|
- spec/lib/ruby_smb/smb1/packet/negotiate_response_spec.rb
|
@@ -333,6 +339,8 @@ files:
|
|
333
339
|
- spec/lib/ruby_smb/smb2/bit_field/share_flags_spec.rb
|
334
340
|
- spec/lib/ruby_smb/smb2/bit_field/smb2_capabilities_spec.rb
|
335
341
|
- spec/lib/ruby_smb/smb2/bit_field/smb_secruity_mode_spec.rb
|
342
|
+
- spec/lib/ruby_smb/smb2/packet/logoff_request_spec.rb
|
343
|
+
- spec/lib/ruby_smb/smb2/packet/logoff_response_spec.rb
|
336
344
|
- spec/lib/ruby_smb/smb2/packet/negotiate_request_spec.rb
|
337
345
|
- spec/lib/ruby_smb/smb2/packet/negotiate_response_spec.rb
|
338
346
|
- spec/lib/ruby_smb/smb2/packet/session_setup_request_spec.rb
|
@@ -391,6 +399,8 @@ test_files:
|
|
391
399
|
- spec/lib/ruby_smb/smb1/data_block_spec.rb
|
392
400
|
- spec/lib/ruby_smb/smb1/dialect_spec.rb
|
393
401
|
- spec/lib/ruby_smb/smb1/packet/error_packet_spec.rb
|
402
|
+
- spec/lib/ruby_smb/smb1/packet/logoff_request_spec.rb
|
403
|
+
- spec/lib/ruby_smb/smb1/packet/logoff_response_spec.rb
|
394
404
|
- spec/lib/ruby_smb/smb1/packet/negotiate_request_spec.rb
|
395
405
|
- spec/lib/ruby_smb/smb1/packet/negotiate_response_extended_spec.rb
|
396
406
|
- spec/lib/ruby_smb/smb1/packet/negotiate_response_spec.rb
|
@@ -411,6 +421,8 @@ test_files:
|
|
411
421
|
- spec/lib/ruby_smb/smb2/bit_field/share_flags_spec.rb
|
412
422
|
- spec/lib/ruby_smb/smb2/bit_field/smb2_capabilities_spec.rb
|
413
423
|
- spec/lib/ruby_smb/smb2/bit_field/smb_secruity_mode_spec.rb
|
424
|
+
- spec/lib/ruby_smb/smb2/packet/logoff_request_spec.rb
|
425
|
+
- spec/lib/ruby_smb/smb2/packet/logoff_response_spec.rb
|
414
426
|
- spec/lib/ruby_smb/smb2/packet/negotiate_request_spec.rb
|
415
427
|
- spec/lib/ruby_smb/smb2/packet/negotiate_response_spec.rb
|
416
428
|
- spec/lib/ruby_smb/smb2/packet/session_setup_request_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|