ruby_smb 3.2.8 → 3.3.1
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/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
|