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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_decrypt_file_srv_request.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_decrypt_file_srv_response.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_encrypt_file_srv_request.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_encrypt_file_srv_response.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_open_file_raw_request.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_open_file_raw_response.rb +1 -1
- 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
- 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
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_query_users_on_file_request.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_query_users_on_file_response.rb +1 -1
- data/lib/ruby_smb/dcerpc/{encrypting_file_system.rb → efsrpc.rb} +11 -11
- data/lib/ruby_smb/dcerpc/lsarpc.rb +11 -0
- data/lib/ruby_smb/dcerpc/request.rb +7 -0
- data/lib/ruby_smb/dcerpc/uuid.rb +2 -2
- data/lib/ruby_smb/dcerpc.rb +2 -1
- data/lib/ruby_smb/smb1/pipe.rb +4 -0
- data/lib/ruby_smb/smb2/pipe.rb +4 -0
- data/lib/ruby_smb/smb2/tree.rb +3 -1
- data/lib/ruby_smb/version.rb +1 -1
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb +2 -2
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb +2 -2
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request_spec.rb +2 -2
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response_spec.rb +2 -2
- data/spec/lib/ruby_smb/dcerpc/response_spec.rb +4 -6
- data/spec/lib/ruby_smb/smb2/tree_spec.rb +5 -0
- data.tar.gz.sig +0 -0
- metadata +14 -13
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e95b5ccfe1d32104083d56e9d1e8e27cc972e242b2446f04d899dcf2498b87c1
|
4
|
+
data.tar.gz: 3431c8b15b09b6fbd9731a8abaeb236a4386d2b7713cf865dadba2075147989d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46e1217a44c2addda983c08e5c0ab50ce344e71a5b31fba18385155cbec795740651f1174261bba03337759309170dffe45563f4aa9e2a1d67289e6638bd1715
|
7
|
+
data.tar.gz: 6e1a6c65c904cc9026a638e282d606f9079b5f610feceb21c6232caa929ab02749ae05c26e42c73642909c7cbed12c1e35694ec58325ef879ffbd50461de0bd9
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_decrypt_file_srv_request.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_decrypt_file_srv_response.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_encrypt_file_srv_request.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_encrypt_file_srv_response.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
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
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_open_file_raw_response.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
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
|
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
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_query_users_on_file_request.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
data/lib/ruby_smb/dcerpc/{encrypting_file_system → efsrpc}/efs_rpc_query_users_on_file_response.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module Dcerpc
|
3
|
-
module
|
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
|
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/
|
85
|
-
require 'ruby_smb/dcerpc/
|
86
|
-
require 'ruby_smb/dcerpc/
|
87
|
-
require 'ruby_smb/dcerpc/
|
88
|
-
require 'ruby_smb/dcerpc/
|
89
|
-
require 'ruby_smb/dcerpc/
|
90
|
-
require 'ruby_smb/dcerpc/
|
91
|
-
require 'ruby_smb/dcerpc/
|
92
|
-
require 'ruby_smb/dcerpc/
|
93
|
-
require 'ruby_smb/dcerpc/
|
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
|
|
data/lib/ruby_smb/dcerpc/uuid.rb
CHANGED
@@ -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]))
|
data/lib/ruby_smb/dcerpc.rb
CHANGED
@@ -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.
|
data/lib/ruby_smb/smb1/pipe.rb
CHANGED
@@ -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
|
data/lib/ruby_smb/smb2/pipe.rb
CHANGED
@@ -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
|
data/lib/ruby_smb/smb2/tree.rb
CHANGED
@@ -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
|
data/lib/ruby_smb/version.rb
CHANGED
data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
RSpec.describe RubySMB::Dcerpc::
|
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::
|
18
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::Efsrpc::EFS_RPC_ENCRYPT_FILE_SRV)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
RSpec.describe RubySMB::Dcerpc::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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.
|
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-
|
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/
|
263
|
-
- lib/ruby_smb/dcerpc/
|
264
|
-
- lib/ruby_smb/dcerpc/
|
265
|
-
- lib/ruby_smb/dcerpc/
|
266
|
-
- lib/ruby_smb/dcerpc/
|
267
|
-
- lib/ruby_smb/dcerpc/
|
268
|
-
- lib/ruby_smb/dcerpc/
|
269
|
-
- lib/ruby_smb/dcerpc/
|
270
|
-
- lib/ruby_smb/dcerpc/
|
271
|
-
- lib/ruby_smb/dcerpc/
|
272
|
-
- lib/ruby_smb/dcerpc/
|
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
|