ruby_smb 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- 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
|