ruby_smb 3.1.5 → 3.1.6
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/dfsnm/netr_dfs_add_std_root_request.rb +24 -0
- data/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_response.rb +21 -0
- data/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_request.rb +23 -0
- data/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_response.rb +21 -0
- data/lib/ruby_smb/dcerpc/dfsnm.rb +84 -0
- data/lib/ruby_smb/dcerpc/error.rb +11 -0
- data/lib/ruby_smb/dcerpc/request.rb +6 -1
- data/lib/ruby_smb/dcerpc.rb +1 -0
- data/lib/ruby_smb/error.rb +21 -11
- data/lib/ruby_smb/smb1/pipe.rb +2 -0
- data/lib/ruby_smb/smb2/pipe.rb +2 -0
- data/lib/ruby_smb/version.rb +1 -1
- data/spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_request_spec.rb +57 -0
- data/spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_response_spec.rb +34 -0
- data/spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_request_spec.rb +49 -0
- data/spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_response_spec.rb +34 -0
- data.tar.gz.sig +2 -4
- metadata +15 -2
- 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: 41dae2cdf118dfda8519ebf1a109c77e9396d9cda01c20e5a45a2fdd222ddb38
|
4
|
+
data.tar.gz: 37d8b0d88283c540ee074035cdc2728d9bd4bb2960f1d379d81d1a926cb11aa1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1de29406e9e28d9d47dddfaff03d81aeb10aa28c5bb827c3c81e52f6b3d42b302a22143a71c1a89db91968f6b33d2299658bfe04dcf4897e000bc9170c11318c
|
7
|
+
data.tar.gz: d2794e3f509f10e98e5914e03e499c4433f2a78070090cefe704528e573c8b50bf049f1bb2a34ff5a63d26af759ad6a24fad83f778064e8c2ab446c7ef2841f8
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Dfsnm
|
4
|
+
|
5
|
+
# [3.1.4.4.1 NetrDfsAddStdRoot (Opnum 12)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dfsnm/b18ef17a-7a9c-4e22-b1bf-6a4d07e87b2d)
|
6
|
+
class NetrDfsAddStdRootRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_conf_var_wide_stringz :server_name
|
12
|
+
ndr_conf_var_wide_stringz :root_share
|
13
|
+
ndr_conf_var_wide_stringz :comment
|
14
|
+
ndr_uint32 :api_flags
|
15
|
+
|
16
|
+
def initialize_instance
|
17
|
+
super
|
18
|
+
@opnum = NETR_DFS_ADD_STD_ROOT
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Dfsnm
|
4
|
+
|
5
|
+
# [3.1.4.4.1 NetrDfsAddStdRoot (Opnum 12)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dfsnm/b18ef17a-7a9c-4e22-b1bf-6a4d07e87b2d)
|
6
|
+
class NetrDfsAddStdRootResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_uint32 :error_status
|
12
|
+
|
13
|
+
def initialize_instance
|
14
|
+
super
|
15
|
+
@opnum = NETR_DFS_ADD_STD_ROOT
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Dfsnm
|
4
|
+
|
5
|
+
# [3.1.4.4.2 NetrDfsRemoveStdRoot (Opnum 13)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dfsnm/e9da023d-554a-49bc-837a-69f22d59fd18)
|
6
|
+
class NetrDfsRemoveStdRootRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_conf_var_wide_stringz :server_name
|
12
|
+
ndr_conf_var_wide_stringz :root_share
|
13
|
+
ndr_uint32 :api_flags
|
14
|
+
|
15
|
+
def initialize_instance
|
16
|
+
super
|
17
|
+
@opnum = NETR_DFS_REMOVE_STD_ROOT
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Dfsnm
|
4
|
+
|
5
|
+
# [3.1.4.4.2 NetrDfsRemoveStdRoot (Opnum 13)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dfsnm/e9da023d-554a-49bc-837a-69f22d59fd18)
|
6
|
+
class NetrDfsRemoveStdRootResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_uint32 :error_status
|
12
|
+
|
13
|
+
def initialize_instance
|
14
|
+
super
|
15
|
+
@opnum = NETR_DFS_REMOVE_STD_ROOT
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module Dfsnm
|
4
|
+
|
5
|
+
UUID = '4fc742e0-4a10-11cf-8273-00aa004ae673'
|
6
|
+
VER_MAJOR = 3
|
7
|
+
VER_MINOR = 0
|
8
|
+
|
9
|
+
# Operation numbers
|
10
|
+
NETR_DFS_ADD_STD_ROOT = 0x000c
|
11
|
+
NETR_DFS_REMOVE_STD_ROOT = 0x000d
|
12
|
+
|
13
|
+
require 'ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_request'
|
14
|
+
require 'ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_response'
|
15
|
+
require 'ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_request'
|
16
|
+
require 'ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_response'
|
17
|
+
|
18
|
+
# Create a new stand-alone DFS namespace.
|
19
|
+
#
|
20
|
+
# @param server_name [String] The host name of the DFS root target.
|
21
|
+
# @param root_share [String] The DFS root target share name.
|
22
|
+
# @param comment [String] A comment associated with the DFS namespace.
|
23
|
+
# @return nothing is returned on success
|
24
|
+
# @raise [RubySMB::Dcerpc::Error::InvalidPacket] if the response is not a
|
25
|
+
# NetrDfsAddStdRootResponse packet
|
26
|
+
# @raise [RubySMB::Dcerpc::Error::DfsnmError] if the response error status
|
27
|
+
# is not ERROR_SUCCESS
|
28
|
+
def netr_dfs_add_std_root(server_name, root_share, comment: '')
|
29
|
+
netr_dfs_add_std_root_request = NetrDfsAddStdRootRequest.new(
|
30
|
+
server_name: server_name,
|
31
|
+
root_share: root_share,
|
32
|
+
comment: comment
|
33
|
+
)
|
34
|
+
response = dcerpc_request(netr_dfs_add_std_root_request)
|
35
|
+
begin
|
36
|
+
netr_dfs_add_std_root_response = NetrDfsAddStdRootResponse.read(response)
|
37
|
+
rescue IOError
|
38
|
+
raise RubySMB::Dcerpc::Error::InvalidPacket, 'Error reading NetrDfsAddStdRootResponse'
|
39
|
+
end
|
40
|
+
unless netr_dfs_add_std_root_response.error_status == WindowsError::Win32::ERROR_SUCCESS
|
41
|
+
status_code = WindowsError::Win32.find_by_retval(netr_dfs_add_std_root_response.error_status.value).first
|
42
|
+
raise RubySMB::Dcerpc::Error::DfsnmError.new(
|
43
|
+
"Error returned with netr_dfs_add_std_root: #{status_code}",
|
44
|
+
status_code: status_code
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
nil
|
49
|
+
end
|
50
|
+
|
51
|
+
# Delete the specified stand-alone DFS namespace.
|
52
|
+
#
|
53
|
+
# @param server_name [String] The host name of the DFS root target.
|
54
|
+
# @param root_share [String] The DFS root target share name.
|
55
|
+
# @return nothing is returned on success
|
56
|
+
# @raise [RubySMB::Dcerpc::Error::InvalidPacket] if the response is not a
|
57
|
+
# NetrDfsRemoveStdRootResponse packet
|
58
|
+
# @raise [RubySMB::Dcerpc::Error::DfsnmError] if the response error status
|
59
|
+
# is not ERROR_SUCCESS
|
60
|
+
def netr_dfs_remove_std_root(server_name, root_share)
|
61
|
+
netr_dfs_remove_std_root_request = NetrDfsRemoveStdRootRequest.new(
|
62
|
+
server_name: server_name,
|
63
|
+
root_share: root_share
|
64
|
+
)
|
65
|
+
response = dcerpc_request(netr_dfs_remove_std_root_request)
|
66
|
+
begin
|
67
|
+
netr_dfs_remove_std_root_response = NetrDfsRemoveStdRootResponse.read(response)
|
68
|
+
rescue IOError
|
69
|
+
raise RubySMB::Dcerpc::Error::InvalidPacket, 'Error reading NetrDfsRemoveStdRootResponse'
|
70
|
+
end
|
71
|
+
unless netr_dfs_remove_std_root_response.error_status == WindowsError::Win32::ERROR_SUCCESS
|
72
|
+
status_code = WindowsError::Win32.find_by_retval(netr_dfs_remove_std_root_response.error_status.value).first
|
73
|
+
raise RubySMB::Dcerpc::Error::DfsnmError.new(
|
74
|
+
"Error returned with netr_dfs_remove_std_root: #{status_code}",
|
75
|
+
status_code: status_code
|
76
|
+
)
|
77
|
+
end
|
78
|
+
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -46,6 +46,17 @@ module RubySMB
|
|
46
46
|
|
47
47
|
# Raised when an error is returned during a Epm operation
|
48
48
|
class EpmError < DcerpcError; end
|
49
|
+
|
50
|
+
# Raised when an error is returned during a Dfsnm operation
|
51
|
+
class DfsnmError < DcerpcError
|
52
|
+
include RubySMB::Error::UnexpectedStatusCode::Mixin
|
53
|
+
|
54
|
+
def initialize(msg, status_code: nil)
|
55
|
+
self.status_code = status_code unless status_code.nil?
|
56
|
+
|
57
|
+
super(msg)
|
58
|
+
end
|
59
|
+
end
|
49
60
|
end
|
50
61
|
end
|
51
62
|
end
|
@@ -90,7 +90,12 @@ module RubySMB
|
|
90
90
|
drs_domain_controller_info_request Drsr::DRS_DOMAIN_CONTROLLER_INFO
|
91
91
|
drs_crack_names_request Drsr::DRS_CRACK_NAMES
|
92
92
|
drs_get_nc_changes_request Drsr::DRS_GET_NC_CHANGES
|
93
|
-
string
|
93
|
+
string :default
|
94
|
+
end
|
95
|
+
choice 'Dfsnm', selection: -> { opnum } do
|
96
|
+
netr_dfs_add_std_root_request Dfsnm::NETR_DFS_ADD_STD_ROOT
|
97
|
+
netr_dfs_remove_std_root_request Dfsnm::NETR_DFS_REMOVE_STD_ROOT
|
98
|
+
string :default
|
94
99
|
end
|
95
100
|
string :default
|
96
101
|
end
|
data/lib/ruby_smb/dcerpc.rb
CHANGED
@@ -46,6 +46,7 @@ module RubySMB
|
|
46
46
|
require 'ruby_smb/dcerpc/epm'
|
47
47
|
require 'ruby_smb/dcerpc/drsr'
|
48
48
|
require 'ruby_smb/dcerpc/sec_trailer'
|
49
|
+
require 'ruby_smb/dcerpc/dfsnm'
|
49
50
|
require 'ruby_smb/dcerpc/request'
|
50
51
|
require 'ruby_smb/dcerpc/response'
|
51
52
|
require 'ruby_smb/dcerpc/rpc_auth3'
|
data/lib/ruby_smb/error.rb
CHANGED
@@ -70,20 +70,30 @@ module RubySMB
|
|
70
70
|
|
71
71
|
# Raised when a response packet has a NTStatus code that was unexpected.
|
72
72
|
class UnexpectedStatusCode < RubySMBError
|
73
|
-
|
73
|
+
module Mixin
|
74
|
+
attr_reader :status_code
|
74
75
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
@status_code = WindowsError::
|
76
|
+
private
|
77
|
+
|
78
|
+
def status_code=(status_code)
|
79
|
+
case status_code
|
80
|
+
when WindowsError::ErrorCode
|
81
|
+
@status_code = status_code
|
82
|
+
when Integer
|
83
|
+
@status_code = WindowsError::NTStatus.find_by_retval(status_code).first
|
84
|
+
if @status_code.nil?
|
85
|
+
@status_code = WindowsError::ErrorCode.new("0x#{status_code.to_s(16).rjust(8, '0')}", status_code, "Unknown status: 0x#{status_code.to_s(16)}")
|
86
|
+
end
|
87
|
+
else
|
88
|
+
raise ArgumentError, "Status code must be a WindowsError::ErrorCode or an Integer, got #{status_code.class}"
|
83
89
|
end
|
84
|
-
else
|
85
|
-
raise ArgumentError, "Status code must be a WindowsError::ErrorCode or an Integer, got #{status_code.class}"
|
86
90
|
end
|
91
|
+
end
|
92
|
+
|
93
|
+
include Mixin
|
94
|
+
|
95
|
+
def initialize(status_code)
|
96
|
+
self.status_code = status_code
|
87
97
|
super
|
88
98
|
end
|
89
99
|
|
data/lib/ruby_smb/smb1/pipe.rb
CHANGED
data/lib/ruby_smb/smb2/pipe.rb
CHANGED
data/lib/ruby_smb/version.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::Dfsnm::NetrDfsAddStdRootRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :server_name }
|
5
|
+
it { is_expected.to respond_to :root_share }
|
6
|
+
it { is_expected.to respond_to :comment }
|
7
|
+
it { is_expected.to respond_to :api_flags }
|
8
|
+
it { is_expected.to respond_to :opnum }
|
9
|
+
|
10
|
+
it 'is little endian' do
|
11
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
12
|
+
end
|
13
|
+
it 'is a BinData::Record' do
|
14
|
+
expect(packet).to be_a(BinData::Record)
|
15
|
+
end
|
16
|
+
describe '#server_name' do
|
17
|
+
it 'is a NdrConfVarWideStringz structure' do
|
18
|
+
expect(packet.server_name).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
19
|
+
end
|
20
|
+
end
|
21
|
+
describe '#root_share' do
|
22
|
+
it 'is a NdrConfVarWideStringz structure' do
|
23
|
+
expect(packet.root_share).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
24
|
+
end
|
25
|
+
end
|
26
|
+
describe '#comment' do
|
27
|
+
it 'is a NdrConfVarWideStringz structure' do
|
28
|
+
expect(packet.comment).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
29
|
+
end
|
30
|
+
end
|
31
|
+
describe '#api_flags' do
|
32
|
+
it 'is a NdrUint32 structure' do
|
33
|
+
expect(packet.api_flags).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
34
|
+
end
|
35
|
+
end
|
36
|
+
describe '#initialize_instance' do
|
37
|
+
it 'sets #opnum to NETR_DFS_ADD_STD_ROOT constant' do
|
38
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::Dfsnm::NETR_DFS_ADD_STD_ROOT)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
it 'reads itself' do
|
42
|
+
new_packet = described_class.new({
|
43
|
+
server_name: 'serverName',
|
44
|
+
root_share: 'rootShare',
|
45
|
+
comment: 'comment'
|
46
|
+
})
|
47
|
+
expected_output = {
|
48
|
+
server_name: 'serverName'.encode('utf-16le'),
|
49
|
+
root_share: 'rootShare'.encode('utf-16le'),
|
50
|
+
comment: 'comment'.encode('utf-16le'),
|
51
|
+
api_flags: 0
|
52
|
+
}
|
53
|
+
expect(packet.read(new_packet.to_binary_s)).to eq(expected_output)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::Dfsnm::NetrDfsAddStdRootResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :error_status }
|
5
|
+
it { is_expected.to respond_to :opnum }
|
6
|
+
|
7
|
+
it 'is little endian' do
|
8
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
9
|
+
end
|
10
|
+
it 'is a BinData::Record' do
|
11
|
+
expect(packet).to be_a(BinData::Record)
|
12
|
+
end
|
13
|
+
describe '#error_status' do
|
14
|
+
it 'is a NdrUint32 structure' do
|
15
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
16
|
+
end
|
17
|
+
end
|
18
|
+
describe '#initialize_instance' do
|
19
|
+
it 'sets #opnum to NETR_DFS_ADD_STD_ROOT constant' do
|
20
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::Dfsnm::NETR_DFS_ADD_STD_ROOT)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
it 'reads itself' do
|
24
|
+
new_packet = described_class.new({
|
25
|
+
error_status: 0
|
26
|
+
})
|
27
|
+
expected_output = {
|
28
|
+
error_status: 0
|
29
|
+
}
|
30
|
+
expect(packet.read(new_packet.to_binary_s)).to eq(expected_output)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::Dfsnm::NetrDfsRemoveStdRootRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :server_name }
|
5
|
+
it { is_expected.to respond_to :root_share }
|
6
|
+
it { is_expected.to respond_to :api_flags }
|
7
|
+
it { is_expected.to respond_to :opnum }
|
8
|
+
|
9
|
+
it 'is little endian' do
|
10
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
11
|
+
end
|
12
|
+
it 'is a BinData::Record' do
|
13
|
+
expect(packet).to be_a(BinData::Record)
|
14
|
+
end
|
15
|
+
describe '#server_name' do
|
16
|
+
it 'is a NdrConfVarWideStringz structure' do
|
17
|
+
expect(packet.server_name).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
18
|
+
end
|
19
|
+
end
|
20
|
+
describe '#root_share' do
|
21
|
+
it 'is a NdrConfVarWideStringz structure' do
|
22
|
+
expect(packet.root_share).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
23
|
+
end
|
24
|
+
end
|
25
|
+
describe '#api_flags' do
|
26
|
+
it 'is a NdrUint32 structure' do
|
27
|
+
expect(packet.api_flags).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
28
|
+
end
|
29
|
+
end
|
30
|
+
describe '#initialize_instance' do
|
31
|
+
it 'sets #opnum to NETR_DFS_REMOVE_STD_ROOT constant' do
|
32
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::Dfsnm::NETR_DFS_REMOVE_STD_ROOT)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
it 'reads itself' do
|
36
|
+
new_packet = described_class.new({
|
37
|
+
server_name: 'serverName',
|
38
|
+
root_share: 'rootShare',
|
39
|
+
})
|
40
|
+
expected_output = {
|
41
|
+
server_name: 'serverName'.encode('utf-16le'),
|
42
|
+
root_share: 'rootShare'.encode('utf-16le'),
|
43
|
+
api_flags: 0
|
44
|
+
}
|
45
|
+
expect(packet.read(new_packet.to_binary_s)).to eq(expected_output)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::Dfsnm::NetrDfsRemoveStdRootResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :error_status }
|
5
|
+
it { is_expected.to respond_to :opnum }
|
6
|
+
|
7
|
+
it 'is little endian' do
|
8
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
9
|
+
end
|
10
|
+
it 'is a BinData::Record' do
|
11
|
+
expect(packet).to be_a(BinData::Record)
|
12
|
+
end
|
13
|
+
describe '#error_status' do
|
14
|
+
it 'is a NdrUint32 structure' do
|
15
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
16
|
+
end
|
17
|
+
end
|
18
|
+
describe '#initialize_instance' do
|
19
|
+
it 'sets #opnum to NETR_DFS_REMOVE_STD_ROOT constant' do
|
20
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::Dfsnm::NETR_DFS_REMOVE_STD_ROOT)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
it 'reads itself' do
|
24
|
+
new_packet = described_class.new({
|
25
|
+
error_status: 0
|
26
|
+
})
|
27
|
+
expected_output = {
|
28
|
+
error_status: 0
|
29
|
+
}
|
30
|
+
expect(packet.read(new_packet.to_binary_s)).to eq(expected_output)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
data.tar.gz.sig
CHANGED
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.1.
|
4
|
+
version: 3.1.6
|
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-06
|
100
|
+
date: 2022-07-06 00:00:00.000000000 Z
|
101
101
|
dependencies:
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: redcarpet
|
@@ -298,6 +298,11 @@ files:
|
|
298
298
|
- lib/ruby_smb/dcerpc/bind.rb
|
299
299
|
- lib/ruby_smb/dcerpc/bind_ack.rb
|
300
300
|
- lib/ruby_smb/dcerpc/client.rb
|
301
|
+
- lib/ruby_smb/dcerpc/dfsnm.rb
|
302
|
+
- lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_request.rb
|
303
|
+
- lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_response.rb
|
304
|
+
- lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_request.rb
|
305
|
+
- lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_response.rb
|
301
306
|
- lib/ruby_smb/dcerpc/drsr.rb
|
302
307
|
- lib/ruby_smb/dcerpc/drsr/drs_bind_request.rb
|
303
308
|
- lib/ruby_smb/dcerpc/drsr/drs_bind_response.rb
|
@@ -672,6 +677,10 @@ files:
|
|
672
677
|
- spec/lib/ruby_smb/dcerpc/bind_ack_spec.rb
|
673
678
|
- spec/lib/ruby_smb/dcerpc/bind_spec.rb
|
674
679
|
- spec/lib/ruby_smb/dcerpc/client_spec.rb
|
680
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_request_spec.rb
|
681
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_response_spec.rb
|
682
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_request_spec.rb
|
683
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_response_spec.rb
|
675
684
|
- spec/lib/ruby_smb/dcerpc/drsr_spec.rb
|
676
685
|
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb
|
677
686
|
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb
|
@@ -994,6 +1003,10 @@ test_files:
|
|
994
1003
|
- spec/lib/ruby_smb/dcerpc/bind_ack_spec.rb
|
995
1004
|
- spec/lib/ruby_smb/dcerpc/bind_spec.rb
|
996
1005
|
- spec/lib/ruby_smb/dcerpc/client_spec.rb
|
1006
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_request_spec.rb
|
1007
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_add_std_root_response_spec.rb
|
1008
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_request_spec.rb
|
1009
|
+
- spec/lib/ruby_smb/dcerpc/dfsnm/netr_dfs_remove_std_root_response_spec.rb
|
997
1010
|
- spec/lib/ruby_smb/dcerpc/drsr_spec.rb
|
998
1011
|
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb
|
999
1012
|
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|