ruby_smb 3.2.8 → 3.3.1

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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_decrypt_file_srv_request.rb +1 -1
  4. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_decrypt_file_srv_response.rb +1 -1
  5. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_encrypt_file_srv_request.rb +1 -1
  6. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_encrypt_file_srv_response.rb +1 -1
  7. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_open_file_raw_request.rb +1 -1
  8. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_open_file_raw_response.rb +1 -1
  9. data/lib/ruby_smb/dcerpc/{encrypting_file_system/efs_rpc_query_recover_agents_request.rb → efsrpc/efs_rpc_query_recovery_agents_request.rb} +1 -1
  10. data/lib/ruby_smb/dcerpc/{encrypting_file_system/efs_rpc_query_recover_agents_response.rb → efsrpc/efs_rpc_query_recovery_agents_response.rb} +1 -1
  11. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_query_users_on_file_request.rb +1 -1
  12. data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_query_users_on_file_response.rb +1 -1
  13. data/lib/ruby_smb/dcerpc/{encrypting_file_system.rb → efsrpc.rb} +11 -11
  14. data/lib/ruby_smb/dcerpc/lsarpc.rb +11 -0
  15. data/lib/ruby_smb/dcerpc/request.rb +7 -0
  16. data/lib/ruby_smb/dcerpc/uuid.rb +2 -2
  17. data/lib/ruby_smb/dcerpc.rb +2 -1
  18. data/lib/ruby_smb/smb1/pipe.rb +4 -0
  19. data/lib/ruby_smb/smb2/pipe.rb +4 -0
  20. data/lib/ruby_smb/smb2/tree.rb +3 -1
  21. data/lib/ruby_smb/version.rb +1 -1
  22. data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb +2 -2
  23. data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb +2 -2
  24. data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request_spec.rb +2 -2
  25. data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response_spec.rb +2 -2
  26. data/spec/lib/ruby_smb/dcerpc/response_spec.rb +4 -6
  27. data/spec/lib/ruby_smb/smb2/tree_spec.rb +5 -0
  28. data.tar.gz.sig +0 -0
  29. metadata +14 -13
  30. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4ddd94d3c783b3091a37c946c5069da85350c23294b33ddabcdc0476f828ec4
4
- data.tar.gz: 990ad64d98bd60dd957c1b8b6fcf1abdbd6e8a52d408e0e6c03d3694354cb4ad
3
+ metadata.gz: e95b5ccfe1d32104083d56e9d1e8e27cc972e242b2446f04d899dcf2498b87c1
4
+ data.tar.gz: 3431c8b15b09b6fbd9731a8abaeb236a4386d2b7713cf865dadba2075147989d
5
5
  SHA512:
6
- metadata.gz: bc7b1921009d55e8263ecfe3aa282bd4df35636a5055f5126ffa1866ed8140283bbfa14f341a4d791e30a7f51e0df631676ef211961c9712e457e0939983a6c7
7
- data.tar.gz: 11982c6c2b2fb653756140c7024ccff301c72ee9b5ac44f85a5071f1d2a27dbdcf31b5936bc3ea646ef7219e3c917b5466ec3e6b26bbba116fc7552169244a4a
6
+ metadata.gz: 46e1217a44c2addda983c08e5c0ab50ce344e71a5b31fba18385155cbec795740651f1174261bba03337759309170dffe45563f4aa9e2a1d67289e6638bd1715
7
+ data.tar.gz: 6e1a6c65c904cc9026a638e282d606f9079b5f610feceb21c6232caa929ab02749ae05c26e42c73642909c7cbed12c1e35694ec58325ef879ffbd50461de0bd9
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.6 Receiving an EfsRpcDecryptFileSrv Message (Opnum 5)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/043715de-caee-402a-a61b-921743337e78)
6
6
  class EfsRpcDecryptFileSrvRequest < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.6 Receiving an EfsRpcDecryptFileSrv Message (Opnum 5)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/043715de-caee-402a-a61b-921743337e78)
6
6
  class EfsRpcDecryptFileSrvResponse < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.5 EfsRpcEncryptFileSrv (Opnum 4)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/0d599976-758c-4dbd-ac8c-c9db2a922d76)
6
6
  class EfsRpcEncryptFileSrvRequest < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.5 EfsRpcEncryptFileSrv (Opnum 4)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/0d599976-758c-4dbd-ac8c-c9db2a922d76)
6
6
  class EfsRpcEncryptFileSrvResponse < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.1 EfsRpcOpenFileRaw (Opnum 0)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/ccc4fb75-1c86-41d7-bbc4-b278ec13bfb8)
6
6
  class EfsRpcOpenFileRawRequest < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.1 EfsRpcOpenFileRaw (Opnum 0)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/ccc4fb75-1c86-41d7-bbc4-b278ec13bfb8)
6
6
  class EfsRpcOpenFileRawResponse < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.8 Receiving an EfsRpcQueryRecoveryAgents Message (Opnum 7)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/cf759c00-1b90-4c33-9ace-f51c20149cea)
6
6
  class EfsRpcQueryRecoveryAgentsRequest < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.8 Receiving an EfsRpcQueryRecoveryAgents Message (Opnum 7)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/cf759c00-1b90-4c33-9ace-f51c20149cea)
6
6
  class EfsRpcQueryRecoveryAgentsResponse < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.7 Receiving an EfsRpcQueryUsersOnFile Message (Opnum 6)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/a058dc6c-bb7e-491c-9143-a5cb1f7e7cea)
6
6
  class EfsRpcQueryUsersOnFileRequest < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
 
5
5
  # [3.1.4.2.7 Receiving an EfsRpcQueryUsersOnFile Message (Opnum 6)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/a058dc6c-bb7e-491c-9143-a5cb1f7e7cea)
6
6
  class EfsRpcQueryUsersOnFileResponse < BinData::Record
@@ -1,6 +1,6 @@
1
1
  module RubySMB
2
2
  module Dcerpc
3
- module EncryptingFileSystem
3
+ module Efsrpc
4
4
  # see: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/403c7ae0-1a3a-4e96-8efc-54e79a2cc451
5
5
  UUID = EFSRPC_UUID = 'df1941c5-fe89-4e79-bf10-463657acf44d'.freeze
6
6
  LSARPC_UUID = 'c681d488-d850-11d0-8c52-00c04fd90f7e'.freeze
@@ -81,16 +81,16 @@ module RubySMB
81
81
  extend Ndr::PointerClassPlugin
82
82
  end
83
83
 
84
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_request'
85
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_response'
86
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request'
87
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response'
88
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request'
89
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response'
90
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_request'
91
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_response'
92
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_request'
93
- require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_response'
84
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_decrypt_file_srv_request'
85
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_decrypt_file_srv_response'
86
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_encrypt_file_srv_request'
87
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_encrypt_file_srv_response'
88
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_open_file_raw_request'
89
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_open_file_raw_response'
90
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_query_recovery_agents_request'
91
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_query_recovery_agents_response'
92
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_query_users_on_file_request'
93
+ require 'ruby_smb/dcerpc/efsrpc/efs_rpc_query_users_on_file_response'
94
94
  end
95
95
  end
96
96
  end
@@ -0,0 +1,11 @@
1
+ module RubySMB
2
+ module Dcerpc
3
+ module Lsarpc
4
+ # see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dssp/6f843846-2494-4d49-b715-2f181317dd34
5
+ UUID = 'c681d488-d850-11d0-8c52-00c04fd90f7e'.freeze
6
+ VER_MAJOR = 1
7
+ VER_MINOR = 0
8
+
9
+ end
10
+ end
11
+ end
@@ -101,6 +101,13 @@ module RubySMB
101
101
  cert_server_request_request Icpr::CERT_SERVER_REQUEST
102
102
  string :default
103
103
  end
104
+ choice 'Efsrpc', selection: -> { opnum } do
105
+ efs_rpc_decrypt_file_srv_request Efsrpc::EFS_RPC_DECRYPT_FILE_SRV
106
+ efs_rpc_encrypt_file_srv_request Efsrpc::EFS_RPC_ENCRYPT_FILE_SRV
107
+ efs_rpc_open_file_raw_request Efsrpc::EFS_RPC_OPEN_FILE_RAW
108
+ efs_rpc_query_recovery_agents_request Efsrpc::EFS_RPC_QUERY_RECOVERY_AGENTS
109
+ efs_rpc_query_users_on_file_request Efsrpc::EFS_RPC_QUERY_USERS_ON_FILE
110
+ end
104
111
  string :default
105
112
  end
106
113
 
@@ -22,8 +22,8 @@ module RubySMB
22
22
  end
23
23
 
24
24
  def set(uuid_string)
25
- uuid_string.delete_suffix!('}')
26
- uuid_string.delete_prefix!('{')
25
+ uuid_string = uuid_string.delete_suffix('}')
26
+ uuid_string = uuid_string.delete_prefix('{')
27
27
  components = uuid_string.split('-')
28
28
  self.time_low.read(to_binary_le(components[0]))
29
29
  self.time_mid.read(to_binary_le(components[1]))
@@ -48,6 +48,8 @@ module RubySMB
48
48
  require 'ruby_smb/dcerpc/sec_trailer'
49
49
  require 'ruby_smb/dcerpc/dfsnm'
50
50
  require 'ruby_smb/dcerpc/icpr'
51
+ require 'ruby_smb/dcerpc/efsrpc'
52
+ require 'ruby_smb/dcerpc/lsarpc'
51
53
  require 'ruby_smb/dcerpc/request'
52
54
  require 'ruby_smb/dcerpc/response'
53
55
  require 'ruby_smb/dcerpc/rpc_auth3'
@@ -60,7 +62,6 @@ module RubySMB
60
62
  require 'ruby_smb/dcerpc/bind_ack'
61
63
  require 'ruby_smb/dcerpc/alter_context_resp'
62
64
  require 'ruby_smb/dcerpc/print_system'
63
- require 'ruby_smb/dcerpc/encrypting_file_system'
64
65
 
65
66
  # Initialize the auth provider using NTLM. This function should be overriden for other providers (e.g. Kerberos, etc.)
66
67
  # @raise ArgumentError If @ntlm_client isn't initialized with a username and password.
@@ -28,10 +28,14 @@ module RubySMB
28
28
  extend RubySMB::Dcerpc::Samr
29
29
  when 'wkssvc', '\\wkssvc'
30
30
  extend RubySMB::Dcerpc::Wkssvc
31
+ when 'lsarpc', '\\lsarpc'
32
+ extend RubySMB::Dcerpc::Lsarpc
31
33
  when 'netdfs', '\\netdfs'
32
34
  extend RubySMB::Dcerpc::Dfsnm
33
35
  when 'cert', '\\cert'
34
36
  extend RubySMB::Dcerpc::Icpr
37
+ when 'efsrpc', '\\efsrpc'
38
+ extend RubySMB::Dcerpc::Efsrpc
35
39
  end
36
40
  super(tree: tree, response: response, name: name)
37
41
  end
@@ -25,10 +25,14 @@ module RubySMB
25
25
  extend RubySMB::Dcerpc::Samr
26
26
  when 'wkssvc', '\\wkssvc'
27
27
  extend RubySMB::Dcerpc::Wkssvc
28
+ when 'lsarpc', '\\lsarpc'
29
+ extend RubySMB::Dcerpc::Lsarpc
28
30
  when 'netdfs', '\\netdfs'
29
31
  extend RubySMB::Dcerpc::Dfsnm
30
32
  when 'cert', '\\cert'
31
33
  extend RubySMB::Dcerpc::Icpr
34
+ when 'efsrpc', '\\efsrpc'
35
+ extend RubySMB::Dcerpc::Efsrpc
32
36
  end
33
37
  super(tree: tree, response: response, name: name)
34
38
  end
@@ -85,6 +85,7 @@ module RubySMB
85
85
  # @raise [RubySMB::Error::InvalidPacket] if the response is not a QueryDirectoryResponse packet
86
86
  def list(directory: nil, pattern: '*', type: RubySMB::Fscc::FileInformation::FileIdFullDirectoryInformation)
87
87
  create_response = open_directory(directory: directory)
88
+ opened_directory = RubySMB::SMB2::File.new(tree: self, response: create_response, name: directory)
88
89
  file_id = create_response.file_id
89
90
 
90
91
  directory_request = RubySMB::SMB2::Packet::QueryDirectoryRequest.new
@@ -127,8 +128,9 @@ module RubySMB
127
128
  # Reset the message id so the client can update appropriately.
128
129
  directory_request.smb2_header.message_id = 0
129
130
  end
130
-
131
131
  files
132
+ ensure
133
+ opened_directory.close if opened_directory
132
134
  end
133
135
 
134
136
  # 'Opens' a directory file on the remote end, using a CreateRequest. This
@@ -1,3 +1,3 @@
1
1
  module RubySMB
2
- VERSION = '3.2.8'.freeze
2
+ VERSION = '3.3.1'.freeze
3
3
  end
@@ -1,4 +1,4 @@
1
- RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcEncryptFileSrvRequest do
1
+ RSpec.describe RubySMB::Dcerpc::Efsrpc::EfsRpcEncryptFileSrvRequest do
2
2
  subject(:packet) { described_class.new }
3
3
 
4
4
  it { is_expected.to respond_to :file_name }
@@ -15,7 +15,7 @@ RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcEncryptFileSrvReques
15
15
 
16
16
  describe '#initialize_instance' do
17
17
  it 'sets #opnum to EFS_RPC_ENCRYPT_FILE_SRV constant' do
18
- expect(packet.opnum).to eq(RubySMB::Dcerpc::EncryptingFileSystem::EFS_RPC_ENCRYPT_FILE_SRV)
18
+ expect(packet.opnum).to eq(RubySMB::Dcerpc::Efsrpc::EFS_RPC_ENCRYPT_FILE_SRV)
19
19
  end
20
20
  end
21
21
 
@@ -1,4 +1,4 @@
1
- RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcEncryptFileSrvResponse do
1
+ RSpec.describe RubySMB::Dcerpc::Efsrpc::EfsRpcEncryptFileSrvResponse do
2
2
  subject(:packet) { described_class.new }
3
3
 
4
4
  it { is_expected.to respond_to :error_status }
@@ -15,7 +15,7 @@ RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcEncryptFileSrvRespon
15
15
 
16
16
  describe '#initialize_instance' do
17
17
  it 'sets #opnum to EFS_RPC_ENCRYPT_FILE_SRV constant' do
18
- expect(packet.opnum).to eq(RubySMB::Dcerpc::EncryptingFileSystem::EFS_RPC_ENCRYPT_FILE_SRV)
18
+ expect(packet.opnum).to eq(RubySMB::Dcerpc::Efsrpc::EFS_RPC_ENCRYPT_FILE_SRV)
19
19
  end
20
20
  end
21
21
 
@@ -1,4 +1,4 @@
1
- RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcOpenFileRawRequest do
1
+ RSpec.describe RubySMB::Dcerpc::Efsrpc::EfsRpcOpenFileRawRequest do
2
2
  subject(:packet) { described_class.new }
3
3
 
4
4
  it { is_expected.to respond_to :file_name }
@@ -22,7 +22,7 @@ RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcOpenFileRawRequest d
22
22
 
23
23
  describe '#initialize_instance' do
24
24
  it 'sets #opnum to EFS_RPC_OPEN_FILE_RAW constant' do
25
- expect(packet.opnum).to eq(RubySMB::Dcerpc::EncryptingFileSystem::EFS_RPC_OPEN_FILE_RAW)
25
+ expect(packet.opnum).to eq(RubySMB::Dcerpc::Efsrpc::EFS_RPC_OPEN_FILE_RAW)
26
26
  end
27
27
  end
28
28
 
@@ -1,4 +1,4 @@
1
- RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcOpenFileRawResponse do
1
+ RSpec.describe RubySMB::Dcerpc::Efsrpc::EfsRpcOpenFileRawResponse do
2
2
  subject(:packet) { described_class.new }
3
3
 
4
4
  it { is_expected.to respond_to :h_context }
@@ -22,7 +22,7 @@ RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcOpenFileRawResponse
22
22
 
23
23
  describe '#initialize_instance' do
24
24
  it 'sets #opnum to EFS_RPC_OPEN_FILE_RAW constant' do
25
- expect(packet.opnum).to eq(RubySMB::Dcerpc::EncryptingFileSystem::EFS_RPC_OPEN_FILE_RAW)
25
+ expect(packet.opnum).to eq(RubySMB::Dcerpc::Efsrpc::EFS_RPC_OPEN_FILE_RAW)
26
26
  end
27
27
  end
28
28
 
@@ -131,7 +131,7 @@ RSpec.describe RubySMB::Dcerpc::Response do
131
131
  end
132
132
 
133
133
  describe '#stub_length' do
134
- let(:stub_length) { rand(0xFF) }
134
+ let(:stub_length) { rand(1..0xFF) }
135
135
  before :example do
136
136
  packet.stub = 'A' * stub_length
137
137
  end
@@ -142,7 +142,7 @@ RSpec.describe RubySMB::Dcerpc::Response do
142
142
 
143
143
  context 'with auth verifier' do
144
144
  it 'returns the correct stub length' do
145
- auth_size = rand(0xFF)
145
+ auth_size = rand(1..0xFF)
146
146
  packet.pdu_header.auth_length = auth_size
147
147
  packet.auth_value = 'B' * auth_size
148
148
  expect(packet.stub_length).to eq(stub_length + packet.auth_pad.num_bytes)
@@ -152,8 +152,8 @@ RSpec.describe RubySMB::Dcerpc::Response do
152
152
 
153
153
  describe '#read' do
154
154
  let(:response) { described_class.new }
155
- let(:auth_size) { rand(0xFF) }
156
- let(:stub_size) { rand(0xFF) }
155
+ let(:auth_size) { rand(1..0xFF) }
156
+ let(:stub_size) { rand(1..0xFF) }
157
157
  before :example do
158
158
  response.pdu_header.auth_length = auth_size
159
159
  response.stub = 'A' * stub_size
@@ -176,5 +176,3 @@ RSpec.describe RubySMB::Dcerpc::Response do
176
176
  expect(described_class.read(binary)).to eq(packet)
177
177
  end
178
178
  end
179
-
180
-
@@ -166,10 +166,14 @@ RSpec.describe RubySMB::SMB2::Tree do
166
166
  let(:create_res) { double('create response') }
167
167
  let(:query_dir_req) { RubySMB::SMB2::Packet::QueryDirectoryRequest.new }
168
168
  let(:query_dir_res) { RubySMB::SMB2::Packet::QueryDirectoryResponse.new }
169
+ let(:open_dir) { instance_double(RubySMB::SMB2::File) }
169
170
 
170
171
  before :example do
171
172
  allow(tree).to receive(:open_directory).and_return(create_res)
172
173
  allow(create_res).to receive(:file_id)
174
+ allow(RubySMB::SMB2::File).to receive(:new).and_return(open_dir)
175
+ allow(open_dir).to receive(:close)
176
+ allow(create_res).to receive(:file_attributes)
173
177
  allow(RubySMB::SMB2::Packet::QueryDirectoryRequest).to receive(:new).and_return(query_dir_req)
174
178
  allow(client).to receive(:send_recv)
175
179
  allow(RubySMB::SMB2::Packet::QueryDirectoryResponse).to receive(:read).and_return(query_dir_res)
@@ -180,6 +184,7 @@ RSpec.describe RubySMB::SMB2::Tree do
180
184
  dir = '/dir'
181
185
  expect(tree).to receive(:open_directory).with(directory: dir).and_return(create_res)
182
186
  tree.list(directory: dir)
187
+ expect(open_dir).to have_received(:close)
183
188
  end
184
189
 
185
190
  it 'uses the File ID from the create response' do
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.2.8
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
@@ -38,7 +38,7 @@ cert_chain:
38
38
  DgscAao7wB3xW2BWEp1KnaDWkf1x9ttgoBEYyuYwU7uatB67kBQG1PKvLt79wHvz
39
39
  Dxs+KOjGbBRfMnPgVGYkORKVrZIwlaboHbDKxcVW5xv+oZc7KYXWGg==
40
40
  -----END CERTIFICATE-----
41
- date: 2023-11-13 00:00:00.000000000 Z
41
+ date: 2023-12-15 00:00:00.000000000 Z
42
42
  dependencies:
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: redcarpet
@@ -259,17 +259,17 @@ files:
259
259
  - lib/ruby_smb/dcerpc/drsr/drs_get_nc_changes_response.rb
260
260
  - lib/ruby_smb/dcerpc/drsr/drs_unbind_request.rb
261
261
  - lib/ruby_smb/dcerpc/drsr/drs_unbind_response.rb
262
- - lib/ruby_smb/dcerpc/encrypting_file_system.rb
263
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_request.rb
264
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_decrypt_file_srv_response.rb
265
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request.rb
266
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response.rb
267
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request.rb
268
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response.rb
269
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_request.rb
270
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_recover_agents_response.rb
271
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_request.rb
272
- - lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_query_users_on_file_response.rb
262
+ - lib/ruby_smb/dcerpc/efsrpc.rb
263
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_decrypt_file_srv_request.rb
264
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_decrypt_file_srv_response.rb
265
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_encrypt_file_srv_request.rb
266
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_encrypt_file_srv_response.rb
267
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_open_file_raw_request.rb
268
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_open_file_raw_response.rb
269
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_query_recovery_agents_request.rb
270
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_query_recovery_agents_response.rb
271
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_query_users_on_file_request.rb
272
+ - lib/ruby_smb/dcerpc/efsrpc/efs_rpc_query_users_on_file_response.rb
273
273
  - lib/ruby_smb/dcerpc/epm.rb
274
274
  - lib/ruby_smb/dcerpc/epm/epm_ept_map_request.rb
275
275
  - lib/ruby_smb/dcerpc/epm/epm_ept_map_response.rb
@@ -279,6 +279,7 @@ files:
279
279
  - lib/ruby_smb/dcerpc/icpr.rb
280
280
  - lib/ruby_smb/dcerpc/icpr/cert_server_request_request.rb
281
281
  - lib/ruby_smb/dcerpc/icpr/cert_server_request_response.rb
282
+ - lib/ruby_smb/dcerpc/lsarpc.rb
282
283
  - lib/ruby_smb/dcerpc/ndr.rb
283
284
  - lib/ruby_smb/dcerpc/netlogon.rb
284
285
  - lib/ruby_smb/dcerpc/netlogon/netr_server_authenticate3_request.rb
metadata.gz.sig CHANGED
Binary file