ruby_smb 3.0.4 → 3.0.5
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/lib/ruby_smb/client/negotiation.rb +1 -1
- data/lib/ruby_smb/client.rb +18 -2
- data/lib/ruby_smb/server/session.rb +6 -0
- data/lib/ruby_smb/smb2/packet/session_setup_request.rb +11 -0
- data/lib/ruby_smb/version.rb +1 -1
- data/spec/lib/ruby_smb/smb1/tree_spec.rb +5 -0
- data/spec/lib/ruby_smb/smb2/tree_spec.rb +6 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a4881649381520e25f5f014f66baac4130dd8a58d4eadd3476198fec3fc9e8d
|
4
|
+
data.tar.gz: 809b581025c19ab7ca1162a7b73d342d63b24edd77835744191a0d7c930425fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e340189b0ae87ec98e7ca6bde9d4c30c1eb3a0d3e1f69383869e4803bf3d3d9bbc502cef143a83bad9f91dc1de10ca3bcd4132a8d518a1bb2121a7d4490309d
|
7
|
+
data.tar.gz: 0c7198d84416da8b995e50c17f7826abba21affa03cc1c2404e2e2ecaac1322178f76c356d8d026c4a75b7e9d356bd134f1a0df12fe327eca1240b87afaeee0d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -251,7 +251,7 @@ module RubySMB
|
|
251
251
|
raise ArgumentError, 'Must be an array of strings' unless dialect.is_a? String
|
252
252
|
packet.add_dialect(dialect.to_i(16))
|
253
253
|
end
|
254
|
-
packet.capabilities.encryption = 1
|
254
|
+
packet.capabilities.encryption = @session_encrypt_data ? 1 : 0
|
255
255
|
|
256
256
|
if packet.dialects.include?(0x0311)
|
257
257
|
nc = RubySMB::SMB2::NegotiateContext.new(
|
data/lib/ruby_smb/client.rb
CHANGED
@@ -29,10 +29,26 @@ module RubySMB
|
|
29
29
|
# It indicates that the server implements SMB 2.1 or future dialect revisions
|
30
30
|
# Note that this must be used for SMB3
|
31
31
|
SMB1_DIALECT_SMB2_WILDCARD = 'SMB 2.???'.freeze
|
32
|
+
|
33
|
+
SMB2_DIALECT_0202 = '0x0202'.freeze
|
34
|
+
SMB2_DIALECT_0210 = '0x0210'.freeze
|
35
|
+
SMB2_DIALECT_0300 = '0x0300'.freeze
|
36
|
+
SMB2_DIALECT_0302 = '0x0302'.freeze
|
37
|
+
SMB2_DIALECT_0311 = '0x0311'.freeze
|
38
|
+
|
32
39
|
# Dialect values for SMB2
|
33
|
-
SMB2_DIALECT_DEFAULT = [
|
40
|
+
SMB2_DIALECT_DEFAULT = [
|
41
|
+
SMB2_DIALECT_0202,
|
42
|
+
SMB2_DIALECT_0210,
|
43
|
+
].freeze
|
44
|
+
|
34
45
|
# Dialect values for SMB3
|
35
|
-
SMB3_DIALECT_DEFAULT = [
|
46
|
+
SMB3_DIALECT_DEFAULT = [
|
47
|
+
SMB2_DIALECT_0300,
|
48
|
+
SMB2_DIALECT_0302,
|
49
|
+
SMB2_DIALECT_0311
|
50
|
+
].freeze
|
51
|
+
|
36
52
|
# The default maximum size of a SMB message that the Client accepts (in bytes)
|
37
53
|
MAX_BUFFER_SIZE = 64512
|
38
54
|
# The default maximum size of a SMB message that the Server accepts (in bytes)
|
@@ -13,6 +13,7 @@ module RubySMB
|
|
13
13
|
@user_id = user_id
|
14
14
|
@state = state
|
15
15
|
@signing_required = false
|
16
|
+
@metadata = {}
|
16
17
|
# tree id => provider processor instance
|
17
18
|
@tree_connect_table = {}
|
18
19
|
@creation_time = Time.now
|
@@ -62,6 +63,11 @@ module RubySMB
|
|
62
63
|
# @return [Hash]
|
63
64
|
attr_accessor :tree_connect_table
|
64
65
|
|
66
|
+
# Untyped hash for storing additional arbitrary metadata about the current session
|
67
|
+
# @!attribute [rw] metadaa
|
68
|
+
# @return [Hash]
|
69
|
+
attr_accessor :metadata
|
70
|
+
|
65
71
|
# The time at which this session was created.
|
66
72
|
# @!attribute [r] creation_time
|
67
73
|
# @return [Time]
|
@@ -18,6 +18,17 @@ module RubySMB
|
|
18
18
|
uint64 :previous_session_id, label: 'Previous Session ID'
|
19
19
|
string :buffer, label: 'Security Buffer', length: -> { security_buffer_length }
|
20
20
|
|
21
|
+
# Takes the specified security buffer string and inserts it into the {RubySMB::SMB2::Packet::SessionSetupRequest#buffer}
|
22
|
+
# as well as updating the {RubySMB::SMB2::Packet::SessionSetupRequest#security_buffer_length}
|
23
|
+
# This method DOES NOT wrap the security buffer in any way.
|
24
|
+
#
|
25
|
+
# @param buffer [String] the security buffer
|
26
|
+
# @return [void]
|
27
|
+
def set_security_buffer(buffer)
|
28
|
+
self.security_buffer_length = buffer.length
|
29
|
+
self.buffer = buffer
|
30
|
+
end
|
31
|
+
|
21
32
|
# Takes a serialized NTLM Type 1 message and wraps it in the GSS ASN1 encoding
|
22
33
|
# and inserts it into the {RubySMB::SMB2::Packet::SessionSetupRequest#buffer}
|
23
34
|
# as well as updating the {RubySMB::SMB2::Packet::SessionSetupRequest#security_buffer_length}
|
data/lib/ruby_smb/version.rb
CHANGED
@@ -118,6 +118,11 @@ RSpec.describe RubySMB::SMB1::Tree do
|
|
118
118
|
end
|
119
119
|
tree.open_file(filename: unicode_filename.chop)
|
120
120
|
end
|
121
|
+
|
122
|
+
it 'removes the leading \\ from the filename if needed' do
|
123
|
+
expect(tree).to receive(:_open).with(filename: filename)
|
124
|
+
tree.open_file(filename: '\\' + filename)
|
125
|
+
end
|
121
126
|
end
|
122
127
|
|
123
128
|
describe 'flags' do
|
@@ -348,6 +348,11 @@ RSpec.describe RubySMB::SMB2::Tree do
|
|
348
348
|
end
|
349
349
|
tree.open_file(filename: filename)
|
350
350
|
end
|
351
|
+
|
352
|
+
it 'removes the leading \\ from the filename if needed' do
|
353
|
+
expect(tree).to receive(:_open).with(filename: filename)
|
354
|
+
tree.open_file(filename: "\\".encode('UTF-16LE') + filename)
|
355
|
+
end
|
351
356
|
end
|
352
357
|
|
353
358
|
describe 'attributes' do
|
@@ -544,7 +549,7 @@ RSpec.describe RubySMB::SMB2::Tree do
|
|
544
549
|
tree.open_pipe(**opts)
|
545
550
|
end
|
546
551
|
|
547
|
-
it '
|
552
|
+
it 'removes the leading \\ from the filename if needed' do
|
548
553
|
expect(tree).to receive(:_open).with(filename: 'test', write: true)
|
549
554
|
tree.open_pipe(**opts)
|
550
555
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
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: 3.0.
|
4
|
+
version: 3.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Metasploit Hackers
|
@@ -97,7 +97,7 @@ cert_chain:
|
|
97
97
|
EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
|
98
98
|
9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
|
99
99
|
-----END CERTIFICATE-----
|
100
|
-
date: 2022-
|
100
|
+
date: 2022-03-01 00:00:00.000000000 Z
|
101
101
|
dependencies:
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: redcarpet
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
�
|
2
|
-
��
|
1
|
+
� �F�K��Y3]*����$��')�rp2��Uxj�z�N�D
|
2
|
+
��(wT���B���J#߽dü�F�Q�nA�39B5�s�����<�Iy�{#���(� )��Q���2O0��`����@���(뿅���Zw�^�L��;:�h�0m���a7Щ�c9$\m��:{}��!)V.���t��g6^S���.˃?!c5n��5��%���s=WD���x�ۘ� k�_���HnMm�%'�Z�R��@���
|