ruby_smb 3.0.1 → 3.0.2
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/efs_rpc_encrypt_file_srv_request.rb +20 -0
- data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response.rb +20 -0
- data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request.rb +21 -0
- data/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response.rb +21 -0
- data/lib/ruby_smb/dcerpc/encrypting_file_system.rb +44 -0
- data/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request.rb +22 -0
- data/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response.rb +20 -0
- data/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_request.rb +24 -0
- data/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_response.rb +23 -0
- data/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_request.rb +24 -0
- data/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_response.rb +22 -0
- data/lib/ruby_smb/dcerpc/print_system.rb +69 -0
- data/lib/ruby_smb/dcerpc.rb +2 -2
- 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 +30 -0
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb +30 -0
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request_spec.rb +38 -0
- data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response_spec.rb +38 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/driver_container_spec.rb +41 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/driver_info2_spec.rb +64 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request_spec.rb +59 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response_spec.rb +30 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_request_spec.rb +62 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_response_spec.rb +54 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_request_spec.rb +62 -0
- data/spec/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_response_spec.rb +46 -0
- data.tar.gz.sig +2 -2
- metadata +38 -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: 9a0b34939805bf96ca0b83284b946fc2d96c1e5d7b6e63c67c4d0c40b73d257d
|
4
|
+
data.tar.gz: f8c1e25526de8821ec484c820b32734e0cfcefce6e34de2a90b25ce876225e61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b669ae3cdc6e7c875c92890ac15608ab45b8d223eb064756d340e046a5dd3b4273971ebdf8419a033ae87fc75af8f08d7e7ce5466186e2e531adada3efaedab4
|
7
|
+
data.tar.gz: 052ad0693a7f9ea8b3b767a58ecc710e37f2c9c0ef7c910b8c385b22b9a6eee678596a49de385cb0d0200964e620b171bd667a76b7b393f96a1ebded64e6f5b7
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module EncryptingFileSystem
|
4
|
+
|
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
|
+
class EfsRpcEncryptFileSrvRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_conf_var_wide_stringz :file_name
|
12
|
+
|
13
|
+
def initialize_instance
|
14
|
+
super
|
15
|
+
@opnum = EFS_RPC_ENCRYPT_FILE_SRV
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module EncryptingFileSystem
|
4
|
+
|
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
|
+
class EfsRpcEncryptFileSrvResponse < 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 = EFS_RPC_ENCRYPT_FILE_SRV
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module EncryptingFileSystem
|
4
|
+
|
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
|
+
class EfsRpcOpenFileRawRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_conf_var_wide_stringz :file_name
|
12
|
+
ndr_uint32 :flags
|
13
|
+
|
14
|
+
def initialize_instance
|
15
|
+
super
|
16
|
+
@opnum = EFS_RPC_OPEN_FILE_RAW
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module EncryptingFileSystem
|
4
|
+
|
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
|
+
class EfsRpcOpenFileRawResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_context_handle :h_context
|
12
|
+
ndr_uint32 :error_status
|
13
|
+
|
14
|
+
def initialize_instance
|
15
|
+
super
|
16
|
+
@opnum = EFS_RPC_OPEN_FILE_RAW
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module EncryptingFileSystem
|
4
|
+
# see: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/403c7ae0-1a3a-4e96-8efc-54e79a2cc451
|
5
|
+
UUID = EFSRPC_UUID = 'df1941c5-fe89-4e79-bf10-463657acf44d'.freeze
|
6
|
+
LSARPC_UUID = 'c681d488-d850-11d0-8c52-00c04fd90f7e'.freeze
|
7
|
+
VER_MAJOR = 1
|
8
|
+
VER_MINOR = 0
|
9
|
+
|
10
|
+
# Operation numbers
|
11
|
+
EFS_RPC_OPEN_FILE_RAW = 0
|
12
|
+
EFS_RPC_WRITE_FILE_RAW = 1
|
13
|
+
EFS_RPC_CLOSE_RAW = 3
|
14
|
+
EFS_RPC_ENCRYPT_FILE_SRV = 4
|
15
|
+
EFS_RPC_DECRYPT_FILE_SRV = 5
|
16
|
+
EFS_RPC_QUERY_USERS_ON_FILE = 6
|
17
|
+
EFS_RPC_QUERY_RECOVERY_AGENTS = 7
|
18
|
+
EFS_RPC_REMOVE_USERS_FROM_FILE = 8
|
19
|
+
EFS_RPC_ADD_USERS_TO_FILE = 9
|
20
|
+
EFS_RPC_NOT_SUPPORTED = 11
|
21
|
+
EFS_RPC_FILE_KEY_INFO = 12
|
22
|
+
EFS_RPC_DUPLICATE_ENCRYPTION_INFO_FILE = 13
|
23
|
+
EFS_RPC_ADD_USERS_TO_FILE_EX = 15
|
24
|
+
EFS_RPC_FILE_KEY_INFO_EX = 16
|
25
|
+
EFS_RPC_GET_ENCRYPTED_FILE_METADATA = 18
|
26
|
+
EFS_RPC_SET_ENCRYPTED_FILE_METADATA = 19
|
27
|
+
EFS_RPC_FLUSH_EFS_CACHE = 20
|
28
|
+
EFS_RPC_ENCRYPT_FILE_EX_SRV = 21
|
29
|
+
EFS_RPC_QUERY_PROTECTORS = 22
|
30
|
+
|
31
|
+
# EfsRpcOpenFileRaw flags,
|
32
|
+
# see: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr/ccc4fb75-1c86-41d7-bbc4-b278ec13bfb8
|
33
|
+
CREATE_FOR_IMPORT = 0x00000001
|
34
|
+
CREATE_FOR_DIR = 0x00000002
|
35
|
+
OVERWRITE_HIDDEN = 0x00000004
|
36
|
+
EFS_DROP_ALTERNATE_STREAMS = 0x00000010
|
37
|
+
|
38
|
+
require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request'
|
39
|
+
require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response'
|
40
|
+
require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request'
|
41
|
+
require 'ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# [3.1.4.4.8 RpcAddPrinterDriverEx (Opnum 89)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/b96cc497-59e5-4510-ab04-5484993b259b)
|
6
|
+
class RpcAddPrinterDriverExRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
ndr_wide_stringz_ptr :p_name
|
12
|
+
driver_container :p_driver_container
|
13
|
+
ndr_uint32 :dw_file_copy_flags
|
14
|
+
|
15
|
+
def initialize_instance
|
16
|
+
super
|
17
|
+
@opnum = RPC_ADD_PRINTER_DRIVER_EX
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# [3.1.4.4.8 RpcAddPrinterDriverEx (Opnum 89)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/b96cc497-59e5-4510-ab04-5484993b259b)
|
6
|
+
class RpcAddPrinterDriverExResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
def initialize_instance
|
12
|
+
super
|
13
|
+
@opnum = RPC_ADD_PRINTER_DRIVER_EX
|
14
|
+
end
|
15
|
+
|
16
|
+
ndr_uint32 :error_status
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# [3.1.4.4.2 RpcEnumPrinterDrivers (Opnum 10)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/857d00ac-3682-4a0d-86ca-3d3c372e5e4a)
|
6
|
+
class RpcEnumPrinterDriversRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
def initialize_instance
|
12
|
+
super
|
13
|
+
@opnum = RPC_ENUM_PRINTER_DRIVERS
|
14
|
+
end
|
15
|
+
|
16
|
+
ndr_wide_stringz_ptr :p_name
|
17
|
+
ndr_wide_stringz_ptr :p_environment
|
18
|
+
ndr_uint32 :level
|
19
|
+
rprn_byte_array_ptr :p_drivers
|
20
|
+
ndr_uint32 :cb_buf
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# [3.1.4.4.2 RpcEnumPrinterDrivers (Opnum 10)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/857d00ac-3682-4a0d-86ca-3d3c372e5e4a)
|
6
|
+
class RpcEnumPrinterDriversResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
def initialize_instance
|
12
|
+
super
|
13
|
+
@opnum = RPC_ENUM_PRINTER_DRIVERS
|
14
|
+
end
|
15
|
+
|
16
|
+
rprn_byte_array_ptr :p_drivers
|
17
|
+
ndr_uint32 :pcb_needed
|
18
|
+
ndr_uint32 :pc_returned
|
19
|
+
ndr_uint32 :error_status
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# [3.1.4.4.4 RpcGetPrinterDriverDirectory (Opnum 12)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/9df11cf4-4098-4852-ad72-d1f75a82bffe)
|
6
|
+
class RpcGetPrinterDriverDirectoryRequest < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
def initialize_instance
|
12
|
+
super
|
13
|
+
@opnum = RPC_GET_PRINTER_DRIVER_DIRECTORY
|
14
|
+
end
|
15
|
+
|
16
|
+
ndr_wide_stringz_ptr :p_name
|
17
|
+
ndr_wide_stringz_ptr :p_environment
|
18
|
+
ndr_uint32 :level
|
19
|
+
rprn_byte_array_ptr :p_driver_directory
|
20
|
+
ndr_uint32 :cb_buf
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# [3.1.4.4.4 RpcGetPrinterDriverDirectory (Opnum 12)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/9df11cf4-4098-4852-ad72-d1f75a82bffe)
|
6
|
+
class RpcGetPrinterDriverDirectoryResponse < BinData::Record
|
7
|
+
attr_reader :opnum
|
8
|
+
|
9
|
+
endian :little
|
10
|
+
|
11
|
+
def initialize_instance
|
12
|
+
super
|
13
|
+
@opnum = RPC_GET_PRINTER_DRIVER_DIRECTORY
|
14
|
+
end
|
15
|
+
|
16
|
+
rprn_byte_array_ptr :p_driver_directory
|
17
|
+
ndr_uint32 :pcb_needed
|
18
|
+
ndr_uint32 :error_status
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module Dcerpc
|
3
|
+
module PrintSystem
|
4
|
+
|
5
|
+
# see: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/848b8334-134a-4d02-aea4-03b673d6c515
|
6
|
+
UUID = '12345678-1234-abcd-ef00-0123456789ab'.freeze
|
7
|
+
VER_MAJOR = 1
|
8
|
+
VER_MINOR = 0
|
9
|
+
|
10
|
+
# Operation numbers
|
11
|
+
RPC_ENUM_PRINTER_DRIVERS = 10
|
12
|
+
RPC_GET_PRINTER_DRIVER_DIRECTORY = 12
|
13
|
+
RPC_ADD_PRINTER_DRIVER_EX = 89
|
14
|
+
|
15
|
+
# see: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/b96cc497-59e5-4510-ab04-5484993b259b
|
16
|
+
APD_STRICT_UPGRADE = 0x00000001
|
17
|
+
APD_STRICT_DOWNGRADE = 0x00000002
|
18
|
+
APD_COPY_ALL_FILES = 0x00000004
|
19
|
+
APD_COPY_NEW_FILES = 0x00000008
|
20
|
+
APD_COPY_FROM_DIRECTORY = 0x00000010
|
21
|
+
APD_DONT_COPY_FILES_TO_CLUSTER = 0x00001000
|
22
|
+
APD_COPY_TO_ALL_SPOOLERS = 0x00002000
|
23
|
+
APD_INSTALL_WARNED_DRIVER = 0x00008000
|
24
|
+
APD_RETURN_BLOCKING_STATUS_CODE = 0x00010000
|
25
|
+
|
26
|
+
# [2.2.1.5.2 DRIVER_INFO_2](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/39bbfc30-8768-4cd4-9930-434857e2c2a2)
|
27
|
+
class DriverInfo2 < RubySMB::Dcerpc::Ndr::NdrStruct
|
28
|
+
default_parameter byte_align: 4
|
29
|
+
endian :little
|
30
|
+
|
31
|
+
ndr_uint32 :c_version
|
32
|
+
ndr_wide_stringz_ptr :p_name
|
33
|
+
ndr_wide_stringz_ptr :p_environment
|
34
|
+
ndr_wide_stringz_ptr :p_driver_path
|
35
|
+
ndr_wide_stringz_ptr :p_data_file
|
36
|
+
ndr_wide_stringz_ptr :p_config_file
|
37
|
+
end
|
38
|
+
|
39
|
+
class PDriverInfo2 < DriverInfo2
|
40
|
+
extend RubySMB::Dcerpc::Ndr::PointerClassPlugin
|
41
|
+
end
|
42
|
+
|
43
|
+
# [2.2.1.2.3 DRIVER_CONTAINER](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/3a3f9cf7-8ec4-4921-b1f6-86cf8d139bc2)
|
44
|
+
class DriverContainer < RubySMB::Dcerpc::Ndr::NdrStruct
|
45
|
+
default_parameter byte_align: 4
|
46
|
+
endian :little
|
47
|
+
|
48
|
+
ndr_uint32 :level, check_value: -> { [2].include?(value) }
|
49
|
+
ndr_uint32 :tag
|
50
|
+
choice :driver_info, selection: :level, byte_align: 4 do
|
51
|
+
p_driver_info2 2
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# for RpcEnumPrinterDrivers and RpcGetPrinterDriverDirectory `BYTE*` fields
|
56
|
+
class RprnByteArrayPtr < RubySMB::Dcerpc::Ndr::NdrConfArray
|
57
|
+
default_parameters type: :ndr_uint8
|
58
|
+
extend RubySMB::Dcerpc::Ndr::PointerClassPlugin
|
59
|
+
end
|
60
|
+
|
61
|
+
require 'ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request'
|
62
|
+
require 'ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response'
|
63
|
+
require 'ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_request'
|
64
|
+
require 'ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_response'
|
65
|
+
require 'ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_request'
|
66
|
+
require 'ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_response'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/ruby_smb/dcerpc.rb
CHANGED
@@ -50,8 +50,8 @@ module RubySMB
|
|
50
50
|
require 'ruby_smb/dcerpc/rpc_auth3'
|
51
51
|
require 'ruby_smb/dcerpc/bind'
|
52
52
|
require 'ruby_smb/dcerpc/bind_ack'
|
53
|
-
|
54
|
-
|
53
|
+
require 'ruby_smb/dcerpc/print_system'
|
54
|
+
require 'ruby_smb/dcerpc/encrypting_file_system'
|
55
55
|
|
56
56
|
# Bind to the remote server interface endpoint.
|
57
57
|
#
|
data/lib/ruby_smb/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcEncryptFileSrvRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :file_name }
|
5
|
+
|
6
|
+
it 'is little endian' do
|
7
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#file_name' do
|
11
|
+
it 'is a NdrConfVarWideStringz' do
|
12
|
+
expect(packet.file_name).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#initialize_instance' do
|
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)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'reads its own binary representation and outputs the same packet' do
|
23
|
+
packet = described_class.new(
|
24
|
+
file_name: 'file_name'
|
25
|
+
)
|
26
|
+
binary = packet.to_binary_s
|
27
|
+
expect(described_class.read(binary)).to eq(packet)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
data/spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcEncryptFileSrvResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :error_status }
|
5
|
+
|
6
|
+
it 'is little endian' do
|
7
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#error_status' do
|
11
|
+
it 'is a NdrUint32' do
|
12
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#initialize_instance' do
|
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)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'reads its own binary representation and outputs the same packet' do
|
23
|
+
packet = described_class.new(
|
24
|
+
error_status: 0
|
25
|
+
)
|
26
|
+
binary = packet.to_binary_s
|
27
|
+
expect(described_class.read(binary)).to eq(packet)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcOpenFileRawRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :file_name }
|
5
|
+
it { is_expected.to respond_to :flags }
|
6
|
+
|
7
|
+
it 'is little endian' do
|
8
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#file_name' do
|
12
|
+
it 'is a NdrConfVarWideStringz' do
|
13
|
+
expect(packet.file_name).to be_a RubySMB::Dcerpc::Ndr::NdrConfVarWideStringz
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#flags' do
|
18
|
+
it 'is a NdrUint32' do
|
19
|
+
expect(packet.flags).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#initialize_instance' do
|
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)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'reads its own binary representation and outputs the same packet' do
|
30
|
+
packet = described_class.new(
|
31
|
+
file_name: 'file_name',
|
32
|
+
flags: 0
|
33
|
+
)
|
34
|
+
binary = packet.to_binary_s
|
35
|
+
expect(described_class.read(binary)).to eq(packet)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::EncryptingFileSystem::EfsRpcOpenFileRawResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :h_context }
|
5
|
+
it { is_expected.to respond_to :error_status }
|
6
|
+
|
7
|
+
it 'is little endian' do
|
8
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#h_context' do
|
12
|
+
it 'is a NdrContextHandle' do
|
13
|
+
expect(packet.h_context).to be_a RubySMB::Dcerpc::Ndr::NdrContextHandle
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#error_status' do
|
18
|
+
it 'is a NdrUint32' do
|
19
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#initialize_instance' do
|
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)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'reads its own binary representation and outputs the same packet' do
|
30
|
+
packet = described_class.new(
|
31
|
+
h_context: RubySMB::Dcerpc::Ndr::NdrContextHandle.new,
|
32
|
+
error_status: 0
|
33
|
+
)
|
34
|
+
binary = packet.to_binary_s
|
35
|
+
expect(described_class.read(binary)).to eq(packet)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::DriverContainer do
|
2
|
+
subject(:struct) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :level }
|
5
|
+
it { is_expected.to respond_to :tag }
|
6
|
+
it { is_expected.to respond_to :driver_info }
|
7
|
+
|
8
|
+
it 'is little endian' do
|
9
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#level' do
|
13
|
+
it 'is a NdrUint32' do
|
14
|
+
expect(struct.level).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#tag' do
|
19
|
+
it 'is a NdrUint32' do
|
20
|
+
expect(struct.tag).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'reads its own binary representation and outputs the same struct' do
|
25
|
+
struct = described_class.new(
|
26
|
+
level: 2,
|
27
|
+
tag: 0,
|
28
|
+
driver_info: RubySMB::Dcerpc::PrintSystem::DriverInfo2.new(
|
29
|
+
c_version: 0,
|
30
|
+
p_name: 'p_name',
|
31
|
+
p_environment: 'p_environment',
|
32
|
+
p_driver_path: 'p_driver_path',
|
33
|
+
p_data_file: 'p_data_file',
|
34
|
+
p_config_file: 'p_config_file'
|
35
|
+
)
|
36
|
+
)
|
37
|
+
binary = struct.to_binary_s
|
38
|
+
expect(described_class.read(binary)).to eq(struct)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::DriverInfo2 do
|
2
|
+
subject(:struct) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :c_version }
|
5
|
+
it { is_expected.to respond_to :p_name }
|
6
|
+
it { is_expected.to respond_to :p_environment }
|
7
|
+
it { is_expected.to respond_to :p_driver_path }
|
8
|
+
it { is_expected.to respond_to :p_data_file }
|
9
|
+
it { is_expected.to respond_to :p_config_file }
|
10
|
+
|
11
|
+
it 'is little endian' do
|
12
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#c_version' do
|
16
|
+
it 'is a NdrUint32' do
|
17
|
+
expect(struct.c_version).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#p_name' do
|
22
|
+
it 'is a NdrWideStringzPtr' do
|
23
|
+
expect(struct.p_name).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#p_environment' do
|
28
|
+
it 'is a NdrWideStringzPtr' do
|
29
|
+
expect(struct.p_environment).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#p_driver_path' do
|
34
|
+
it 'is a NdrWideStringzPtr' do
|
35
|
+
expect(struct.p_driver_path).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#p_data_file' do
|
40
|
+
it 'is a NdrWideStringzPtr' do
|
41
|
+
expect(struct.p_data_file).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#p_config_file' do
|
46
|
+
it 'is a NdrWideStringzPtr' do
|
47
|
+
expect(struct.p_config_file).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'reads its own binary representation and outputs the same struct' do
|
52
|
+
struct = described_class.new(
|
53
|
+
c_version: 0,
|
54
|
+
p_name: 'p_name',
|
55
|
+
p_environment: 'p_environment',
|
56
|
+
p_driver_path: 'p_driver_path',
|
57
|
+
p_data_file: 'p_data_file',
|
58
|
+
p_config_file: 'p_config_file'
|
59
|
+
)
|
60
|
+
binary = struct.to_binary_s
|
61
|
+
expect(described_class.read(binary)).to eq(struct)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::RpcAddPrinterDriverExRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :p_name }
|
5
|
+
it { is_expected.to respond_to :p_driver_container }
|
6
|
+
it { is_expected.to respond_to :dw_file_copy_flags }
|
7
|
+
|
8
|
+
it 'is little endian' do
|
9
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#p_name' do
|
13
|
+
it 'is a NdrWideStringzPtr' do
|
14
|
+
expect(packet.p_name).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#p_driver_container' do
|
19
|
+
it 'is a DriverContainer structure' do
|
20
|
+
expect(packet.p_driver_container).to be_a RubySMB::Dcerpc::PrintSystem::DriverContainer
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#dw_file_copy_flags' do
|
25
|
+
it 'is a NdrUint32' do
|
26
|
+
expect(packet.dw_file_copy_flags).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#initialize_instance' do
|
31
|
+
it 'sets #opnum to RPC_ADD_PRINTER_DRIVER_EX constant' do
|
32
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::PrintSystem::RPC_ADD_PRINTER_DRIVER_EX)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'reads its own binary representation and outputs the same packet' do
|
37
|
+
packet = described_class.new(
|
38
|
+
p_name: 'p_name',
|
39
|
+
p_driver_container: RubySMB::Dcerpc::PrintSystem::DriverContainer.new(
|
40
|
+
RubySMB::Dcerpc::PrintSystem::DriverContainer.new(
|
41
|
+
level: 2,
|
42
|
+
tag: 2,
|
43
|
+
driver_info: RubySMB::Dcerpc::PrintSystem::DriverInfo2.new(
|
44
|
+
c_version: 0,
|
45
|
+
p_name: 'p_name',
|
46
|
+
p_environment: 'p_environment',
|
47
|
+
p_driver_path: 'p_driver_path',
|
48
|
+
p_data_file: 'p_data_file',
|
49
|
+
p_config_file: 'p_config_file'
|
50
|
+
)
|
51
|
+
)
|
52
|
+
),
|
53
|
+
dw_file_copy_flags: 0
|
54
|
+
)
|
55
|
+
binary = packet.to_binary_s
|
56
|
+
expect(described_class.read(binary)).to eq(packet)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::RpcAddPrinterDriverExResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :error_status }
|
5
|
+
|
6
|
+
it 'is little endian' do
|
7
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#error_status' do
|
11
|
+
it 'is a NdrUint32' do
|
12
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#initialize_instance' do
|
17
|
+
it 'sets #opnum to RPC_ADD_PRINTER_DRIVER_EX constant' do
|
18
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::PrintSystem::RPC_ADD_PRINTER_DRIVER_EX)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'reads its own binary representation and outputs the same packet' do
|
23
|
+
packet = described_class.new(
|
24
|
+
error_status: 0
|
25
|
+
)
|
26
|
+
binary = packet.to_binary_s
|
27
|
+
expect(described_class.read(binary)).to eq(packet)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::RpcEnumPrinterDriversRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :p_name }
|
5
|
+
it { is_expected.to respond_to :p_environment }
|
6
|
+
it { is_expected.to respond_to :level }
|
7
|
+
it { is_expected.to respond_to :p_drivers }
|
8
|
+
it { is_expected.to respond_to :cb_buf }
|
9
|
+
|
10
|
+
it 'is little endian' do
|
11
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#p_name' do
|
15
|
+
it 'is a NdrWideStringzPtr' do
|
16
|
+
expect(packet.p_name).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#p_environment' do
|
21
|
+
it 'is a NdrWideStringzPtr' do
|
22
|
+
expect(packet.p_environment).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#level' do
|
27
|
+
it 'is a NdrUint32' do
|
28
|
+
expect(packet.level).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#p_drivers' do
|
33
|
+
it 'is a RprnByteArrayPtr' do
|
34
|
+
expect(packet.p_drivers).to be_a RubySMB::Dcerpc::PrintSystem::RprnByteArrayPtr
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#cb_buf' do
|
39
|
+
it 'is a NdrUint32' do
|
40
|
+
expect(packet.cb_buf).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#initialize_instance' do
|
45
|
+
it 'sets #opnum to RPC_ENUM_PRINTER_DRIVERS constant' do
|
46
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::PrintSystem::RPC_ENUM_PRINTER_DRIVERS)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'reads its own binary representation and outputs the same packet' do
|
51
|
+
packet = described_class.new(
|
52
|
+
p_name: 'p_name',
|
53
|
+
p_environment: 'p_environment',
|
54
|
+
level: 0,
|
55
|
+
p_drivers: [0, 1, 2],
|
56
|
+
cb_buf: 0
|
57
|
+
)
|
58
|
+
binary = packet.to_binary_s
|
59
|
+
expect(described_class.read(binary)).to eq(packet)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::RpcEnumPrinterDriversResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :p_drivers }
|
5
|
+
it { is_expected.to respond_to :pcb_needed }
|
6
|
+
it { is_expected.to respond_to :pc_returned }
|
7
|
+
it { is_expected.to respond_to :error_status }
|
8
|
+
|
9
|
+
it 'is little endian' do
|
10
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#p_drivers' do
|
14
|
+
it 'is a RprnByteArrayPtr' do
|
15
|
+
expect(packet.p_drivers).to be_a RubySMB::Dcerpc::PrintSystem::RprnByteArrayPtr
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#pcb_needed' do
|
20
|
+
it 'is a NdrUint32' do
|
21
|
+
expect(packet.pcb_needed).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#pc_returned' do
|
26
|
+
it 'is a NdrUint32' do
|
27
|
+
expect(packet.pc_returned).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#error_status' do
|
32
|
+
it 'is a NdrUint32' do
|
33
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#initialize_instance' do
|
38
|
+
it 'sets #opnum to RPC_ENUM_PRINTER_DRIVERS constant' do
|
39
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::PrintSystem::RPC_ENUM_PRINTER_DRIVERS)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'reads its own binary representation and outputs the same packet' do
|
44
|
+
packet = described_class.new(
|
45
|
+
p_drivers: [0, 1, 2],
|
46
|
+
pcb_needed: 0,
|
47
|
+
pc_returned: 0,
|
48
|
+
error_status: 0
|
49
|
+
)
|
50
|
+
binary = packet.to_binary_s
|
51
|
+
expect(described_class.read(binary)).to eq(packet)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::RpcGetPrinterDriverDirectoryRequest do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :p_name }
|
5
|
+
it { is_expected.to respond_to :p_environment }
|
6
|
+
it { is_expected.to respond_to :level}
|
7
|
+
it { is_expected.to respond_to :p_driver_directory }
|
8
|
+
it { is_expected.to respond_to :cb_buf }
|
9
|
+
|
10
|
+
it 'is little endian' do
|
11
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#p_name' do
|
15
|
+
it 'is a NdrWideStringzPtr' do
|
16
|
+
expect(packet.p_name).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#p_environment' do
|
21
|
+
it 'is a NdrWideStringzPtr' do
|
22
|
+
expect(packet.p_environment).to be_a RubySMB::Dcerpc::Ndr::NdrWideStringzPtr
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#level' do
|
27
|
+
it 'is a NdrUint32' do
|
28
|
+
expect(packet.level).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#p_driver_directory' do
|
33
|
+
it 'is a RprnByteArrayPtr' do
|
34
|
+
expect(packet.p_driver_directory).to be_a RubySMB::Dcerpc::PrintSystem::RprnByteArrayPtr
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#cb_buf' do
|
39
|
+
it 'is a NdrUint32' do
|
40
|
+
expect(packet.cb_buf).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#initialize_instance' do
|
45
|
+
it 'sets #opnum to RPC_GET_PRINTER_DRIVER_DIRECTORY constant' do
|
46
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::PrintSystem::RPC_GET_PRINTER_DRIVER_DIRECTORY)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'reads its own binary representation and outputs the same packet' do
|
51
|
+
packet = described_class.new(
|
52
|
+
p_name: 'p_name',
|
53
|
+
p_environment: 'p_environment',
|
54
|
+
level: 0,
|
55
|
+
p_driver_directory: [0, 1, 2],
|
56
|
+
cb_buf: 0
|
57
|
+
)
|
58
|
+
binary = packet.to_binary_s
|
59
|
+
expect(described_class.read(binary)).to eq(packet)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
RSpec.describe RubySMB::Dcerpc::PrintSystem::RpcGetPrinterDriverDirectoryResponse do
|
2
|
+
subject(:packet) { described_class.new }
|
3
|
+
|
4
|
+
it { is_expected.to respond_to :p_driver_directory }
|
5
|
+
it { is_expected.to respond_to :pcb_needed }
|
6
|
+
it { is_expected.to respond_to :error_status }
|
7
|
+
|
8
|
+
it 'is little endian' do
|
9
|
+
expect(described_class.fields.instance_variable_get(:@hints)[:endian]).to eq :little
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#p_driver_directory' do
|
13
|
+
it 'is a RprnByteArrayPtr' do
|
14
|
+
expect(packet.p_driver_directory).to be_a RubySMB::Dcerpc::PrintSystem::RprnByteArrayPtr
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#pcb_needed' do
|
19
|
+
it 'is a NdrUint32' do
|
20
|
+
expect(packet.pcb_needed).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#error_status' do
|
25
|
+
it 'is a NdrUint32' do
|
26
|
+
expect(packet.error_status).to be_a RubySMB::Dcerpc::Ndr::NdrUint32
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#initialize_instance' do
|
31
|
+
it 'sets #opnum to RPC_GET_PRINTER_DRIVER_DIRECTORY constant' do
|
32
|
+
expect(packet.opnum).to eq(RubySMB::Dcerpc::PrintSystem::RPC_GET_PRINTER_DRIVER_DIRECTORY)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'reads its own binary representation and outputs the same packet' do
|
37
|
+
packet = described_class.new(
|
38
|
+
p_driver_directory: [0, 1, 2],
|
39
|
+
pcb_needed: 0,
|
40
|
+
error_status: 0
|
41
|
+
)
|
42
|
+
binary = packet.to_binary_s
|
43
|
+
expect(described_class.read(binary)).to eq(packet)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
v!�J�a�m.��y�����:;��*]q����鋊K��B�M6$��r=�X��n)��������C~�'��^�k5�;�/38Xr�M�t���L��Q��m�ig6#�Q�A�C�,K�hÀ`#'��톟�������>��j�"$�Ӽ�SdR�Գ���������i�ꎈ{�f�8N��\Gx��bO��vh����%�Mx���r[�iM�u���E��Ŀ@�N�hg��
|
2
|
+
����l�����ֆ�� `3���
|
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.2
|
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-02-04 00:00:00.000000000 Z
|
101
101
|
dependencies:
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: redcarpet
|
@@ -308,6 +308,11 @@ files:
|
|
308
308
|
- lib/ruby_smb/dcerpc/drsr/drs_get_nc_changes_response.rb
|
309
309
|
- lib/ruby_smb/dcerpc/drsr/drs_unbind_request.rb
|
310
310
|
- lib/ruby_smb/dcerpc/drsr/drs_unbind_response.rb
|
311
|
+
- lib/ruby_smb/dcerpc/encrypting_file_system.rb
|
312
|
+
- lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request.rb
|
313
|
+
- lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response.rb
|
314
|
+
- lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request.rb
|
315
|
+
- lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response.rb
|
311
316
|
- lib/ruby_smb/dcerpc/epm.rb
|
312
317
|
- lib/ruby_smb/dcerpc/epm/epm_ept_map_request.rb
|
313
318
|
- lib/ruby_smb/dcerpc/epm/epm_ept_map_response.rb
|
@@ -323,6 +328,13 @@ files:
|
|
323
328
|
- lib/ruby_smb/dcerpc/netlogon/netr_server_req_challenge_response.rb
|
324
329
|
- lib/ruby_smb/dcerpc/p_syntax_id_t.rb
|
325
330
|
- lib/ruby_smb/dcerpc/pdu_header.rb
|
331
|
+
- lib/ruby_smb/dcerpc/print_system.rb
|
332
|
+
- lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request.rb
|
333
|
+
- lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response.rb
|
334
|
+
- lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_request.rb
|
335
|
+
- lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_response.rb
|
336
|
+
- lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_request.rb
|
337
|
+
- lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_response.rb
|
326
338
|
- lib/ruby_smb/dcerpc/ptypes.rb
|
327
339
|
- lib/ruby_smb/dcerpc/request.rb
|
328
340
|
- lib/ruby_smb/dcerpc/response.rb
|
@@ -609,6 +621,10 @@ files:
|
|
609
621
|
- spec/lib/ruby_smb/dcerpc/bind_spec.rb
|
610
622
|
- spec/lib/ruby_smb/dcerpc/client_spec.rb
|
611
623
|
- spec/lib/ruby_smb/dcerpc/drsr_spec.rb
|
624
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb
|
625
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb
|
626
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request_spec.rb
|
627
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response_spec.rb
|
612
628
|
- spec/lib/ruby_smb/dcerpc/ndr_spec.rb
|
613
629
|
- spec/lib/ruby_smb/dcerpc/netlogon/netr_server_authenticate3_request_spec.rb
|
614
630
|
- spec/lib/ruby_smb/dcerpc/netlogon/netr_server_authenticate3_response_spec.rb
|
@@ -618,6 +634,14 @@ files:
|
|
618
634
|
- spec/lib/ruby_smb/dcerpc/netlogon/netr_server_req_challenge_response_spec.rb
|
619
635
|
- spec/lib/ruby_smb/dcerpc/p_syntax_id_t_spec.rb
|
620
636
|
- spec/lib/ruby_smb/dcerpc/pdu_header_spec.rb
|
637
|
+
- spec/lib/ruby_smb/dcerpc/print_system/driver_container_spec.rb
|
638
|
+
- spec/lib/ruby_smb/dcerpc/print_system/driver_info2_spec.rb
|
639
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request_spec.rb
|
640
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response_spec.rb
|
641
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_request_spec.rb
|
642
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_response_spec.rb
|
643
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_request_spec.rb
|
644
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_response_spec.rb
|
621
645
|
- spec/lib/ruby_smb/dcerpc/request_spec.rb
|
622
646
|
- spec/lib/ruby_smb/dcerpc/response_spec.rb
|
623
647
|
- spec/lib/ruby_smb/dcerpc/rpc_auth3_spec.rb
|
@@ -877,6 +901,10 @@ test_files:
|
|
877
901
|
- spec/lib/ruby_smb/dcerpc/bind_spec.rb
|
878
902
|
- spec/lib/ruby_smb/dcerpc/client_spec.rb
|
879
903
|
- spec/lib/ruby_smb/dcerpc/drsr_spec.rb
|
904
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_request_spec.rb
|
905
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_encrypt_file_srv_response_spec.rb
|
906
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_request_spec.rb
|
907
|
+
- spec/lib/ruby_smb/dcerpc/encrypting_file_system/efs_rpc_open_file_raw_response_spec.rb
|
880
908
|
- spec/lib/ruby_smb/dcerpc/ndr_spec.rb
|
881
909
|
- spec/lib/ruby_smb/dcerpc/netlogon/netr_server_authenticate3_request_spec.rb
|
882
910
|
- spec/lib/ruby_smb/dcerpc/netlogon/netr_server_authenticate3_response_spec.rb
|
@@ -886,6 +914,14 @@ test_files:
|
|
886
914
|
- spec/lib/ruby_smb/dcerpc/netlogon/netr_server_req_challenge_response_spec.rb
|
887
915
|
- spec/lib/ruby_smb/dcerpc/p_syntax_id_t_spec.rb
|
888
916
|
- spec/lib/ruby_smb/dcerpc/pdu_header_spec.rb
|
917
|
+
- spec/lib/ruby_smb/dcerpc/print_system/driver_container_spec.rb
|
918
|
+
- spec/lib/ruby_smb/dcerpc/print_system/driver_info2_spec.rb
|
919
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_request_spec.rb
|
920
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_add_printer_driver_ex_response_spec.rb
|
921
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_request_spec.rb
|
922
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_enum_printer_drivers_response_spec.rb
|
923
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_request_spec.rb
|
924
|
+
- spec/lib/ruby_smb/dcerpc/print_system/rpc_get_printer_driver_directory_response_spec.rb
|
889
925
|
- spec/lib/ruby_smb/dcerpc/request_spec.rb
|
890
926
|
- spec/lib/ruby_smb/dcerpc/response_spec.rb
|
891
927
|
- spec/lib/ruby_smb/dcerpc/rpc_auth3_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|