ruby_smb 3.0.1 → 3.0.2
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/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
|