ruby_smb 1.0.5 → 2.0.3

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.
Files changed (191) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.travis.yml +3 -2
  5. data/Gemfile +6 -2
  6. data/README.md +35 -47
  7. data/examples/anonymous_auth.rb +3 -3
  8. data/examples/append_file.rb +10 -8
  9. data/examples/authenticate.rb +9 -5
  10. data/examples/delete_file.rb +8 -6
  11. data/examples/enum_registry_key.rb +29 -0
  12. data/examples/enum_registry_values.rb +31 -0
  13. data/examples/list_directory.rb +8 -6
  14. data/examples/negotiate.rb +51 -8
  15. data/examples/negotiate_with_netbios_service.rb +9 -5
  16. data/examples/net_share_enum_all.rb +6 -4
  17. data/examples/pipes.rb +13 -13
  18. data/examples/query_service_status.rb +64 -0
  19. data/examples/read_file.rb +8 -6
  20. data/examples/read_file_encryption.rb +56 -0
  21. data/examples/read_registry_key_value.rb +33 -0
  22. data/examples/rename_file.rb +9 -7
  23. data/examples/tree_connect.rb +7 -5
  24. data/examples/write_file.rb +9 -7
  25. data/lib/ruby_smb.rb +4 -1
  26. data/lib/ruby_smb/client.rb +239 -21
  27. data/lib/ruby_smb/client/authentication.rb +27 -8
  28. data/lib/ruby_smb/client/encryption.rb +62 -0
  29. data/lib/ruby_smb/client/negotiation.rb +154 -12
  30. data/lib/ruby_smb/client/signing.rb +19 -0
  31. data/lib/ruby_smb/client/tree_connect.rb +4 -4
  32. data/lib/ruby_smb/client/utils.rb +8 -7
  33. data/lib/ruby_smb/client/winreg.rb +46 -0
  34. data/lib/ruby_smb/crypto.rb +30 -0
  35. data/lib/ruby_smb/dcerpc.rb +40 -0
  36. data/lib/ruby_smb/dcerpc/bind.rb +2 -2
  37. data/lib/ruby_smb/dcerpc/bind_ack.rb +2 -2
  38. data/lib/ruby_smb/dcerpc/error.rb +6 -0
  39. data/lib/ruby_smb/dcerpc/ndr.rb +260 -16
  40. data/lib/ruby_smb/dcerpc/pdu_header.rb +1 -1
  41. data/lib/ruby_smb/dcerpc/request.rb +41 -9
  42. data/lib/ruby_smb/dcerpc/rpc_security_attributes.rb +34 -0
  43. data/lib/ruby_smb/dcerpc/rrp_unicode_string.rb +38 -0
  44. data/lib/ruby_smb/dcerpc/srvsvc.rb +10 -0
  45. data/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all.rb +9 -0
  46. data/lib/ruby_smb/dcerpc/svcctl.rb +479 -0
  47. data/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_request.rb +48 -0
  48. data/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_response.rb +26 -0
  49. data/lib/ruby_smb/dcerpc/svcctl/close_service_handle_request.rb +25 -0
  50. data/lib/ruby_smb/dcerpc/svcctl/close_service_handle_response.rb +26 -0
  51. data/lib/ruby_smb/dcerpc/svcctl/control_service_request.rb +26 -0
  52. data/lib/ruby_smb/dcerpc/svcctl/control_service_response.rb +26 -0
  53. data/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_request.rb +35 -0
  54. data/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_response.rb +23 -0
  55. data/lib/ruby_smb/dcerpc/svcctl/open_service_w_request.rb +31 -0
  56. data/lib/ruby_smb/dcerpc/svcctl/open_service_w_response.rb +23 -0
  57. data/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_request.rb +25 -0
  58. data/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_response.rb +44 -0
  59. data/lib/ruby_smb/dcerpc/svcctl/query_service_status_request.rb +23 -0
  60. data/lib/ruby_smb/dcerpc/svcctl/query_service_status_response.rb +27 -0
  61. data/lib/ruby_smb/dcerpc/svcctl/service_status.rb +25 -0
  62. data/lib/ruby_smb/dcerpc/svcctl/start_service_w_request.rb +27 -0
  63. data/lib/ruby_smb/dcerpc/svcctl/start_service_w_response.rb +25 -0
  64. data/lib/ruby_smb/dcerpc/winreg.rb +421 -0
  65. data/lib/ruby_smb/dcerpc/winreg/close_key_request.rb +24 -0
  66. data/lib/ruby_smb/dcerpc/winreg/close_key_response.rb +27 -0
  67. data/lib/ruby_smb/dcerpc/winreg/create_key_request.rb +73 -0
  68. data/lib/ruby_smb/dcerpc/winreg/create_key_response.rb +36 -0
  69. data/lib/ruby_smb/dcerpc/winreg/enum_key_request.rb +45 -0
  70. data/lib/ruby_smb/dcerpc/winreg/enum_key_response.rb +42 -0
  71. data/lib/ruby_smb/dcerpc/winreg/enum_value_request.rb +39 -0
  72. data/lib/ruby_smb/dcerpc/winreg/enum_value_response.rb +36 -0
  73. data/lib/ruby_smb/dcerpc/winreg/open_key_request.rb +34 -0
  74. data/lib/ruby_smb/dcerpc/winreg/open_key_response.rb +25 -0
  75. data/lib/ruby_smb/dcerpc/winreg/open_root_key_request.rb +43 -0
  76. data/lib/ruby_smb/dcerpc/winreg/open_root_key_response.rb +35 -0
  77. data/lib/ruby_smb/dcerpc/winreg/query_info_key_request.rb +27 -0
  78. data/lib/ruby_smb/dcerpc/winreg/query_info_key_response.rb +40 -0
  79. data/lib/ruby_smb/dcerpc/winreg/query_value_request.rb +40 -0
  80. data/lib/ruby_smb/dcerpc/winreg/query_value_response.rb +57 -0
  81. data/lib/ruby_smb/dcerpc/winreg/regsam.rb +40 -0
  82. data/lib/ruby_smb/dcerpc/winreg/save_key_request.rb +37 -0
  83. data/lib/ruby_smb/dcerpc/winreg/save_key_response.rb +23 -0
  84. data/lib/ruby_smb/dispatcher/base.rb +1 -1
  85. data/lib/ruby_smb/dispatcher/socket.rb +5 -4
  86. data/lib/ruby_smb/error.rb +28 -1
  87. data/lib/ruby_smb/field/stringz16.rb +17 -1
  88. data/lib/ruby_smb/nbss/session_header.rb +4 -4
  89. data/lib/ruby_smb/smb1/commands.rb +1 -1
  90. data/lib/ruby_smb/smb1/file.rb +8 -14
  91. data/lib/ruby_smb/smb1/packet/session_setup_legacy_request.rb +1 -1
  92. data/lib/ruby_smb/smb1/packet/session_setup_legacy_response.rb +2 -2
  93. data/lib/ruby_smb/smb1/packet/session_setup_request.rb +1 -1
  94. data/lib/ruby_smb/smb1/packet/session_setup_response.rb +2 -2
  95. data/lib/ruby_smb/smb1/packet/write_andx_request.rb +1 -1
  96. data/lib/ruby_smb/smb1/pipe.rb +81 -3
  97. data/lib/ruby_smb/smb1/tree.rb +12 -3
  98. data/lib/ruby_smb/smb2/bit_field/session_flags.rb +2 -1
  99. data/lib/ruby_smb/smb2/bit_field/share_flags.rb +6 -4
  100. data/lib/ruby_smb/smb2/file.rb +51 -61
  101. data/lib/ruby_smb/smb2/negotiate_context.rb +108 -0
  102. data/lib/ruby_smb/smb2/packet.rb +2 -0
  103. data/lib/ruby_smb/smb2/packet/compression_transform_header.rb +41 -0
  104. data/lib/ruby_smb/smb2/packet/error_packet.rb +2 -4
  105. data/lib/ruby_smb/smb2/packet/negotiate_request.rb +51 -14
  106. data/lib/ruby_smb/smb2/packet/negotiate_response.rb +50 -4
  107. data/lib/ruby_smb/smb2/packet/transform_header.rb +84 -0
  108. data/lib/ruby_smb/smb2/packet/tree_connect_request.rb +92 -6
  109. data/lib/ruby_smb/smb2/packet/tree_connect_response.rb +8 -26
  110. data/lib/ruby_smb/smb2/pipe.rb +80 -3
  111. data/lib/ruby_smb/smb2/smb2_header.rb +1 -1
  112. data/lib/ruby_smb/smb2/tree.rb +32 -20
  113. data/lib/ruby_smb/version.rb +1 -1
  114. data/ruby_smb.gemspec +5 -3
  115. data/spec/lib/ruby_smb/client_spec.rb +1583 -102
  116. data/spec/lib/ruby_smb/crypto_spec.rb +25 -0
  117. data/spec/lib/ruby_smb/dcerpc/bind_ack_spec.rb +2 -2
  118. data/spec/lib/ruby_smb/dcerpc/bind_spec.rb +2 -2
  119. data/spec/lib/ruby_smb/dcerpc/ndr_spec.rb +1729 -0
  120. data/spec/lib/ruby_smb/dcerpc/request_spec.rb +50 -7
  121. data/spec/lib/ruby_smb/dcerpc/rpc_security_attributes_spec.rb +161 -0
  122. data/spec/lib/ruby_smb/dcerpc/rrp_unicode_string_spec.rb +135 -0
  123. data/spec/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all_spec.rb +13 -0
  124. data/spec/lib/ruby_smb/dcerpc/srvsvc_spec.rb +60 -0
  125. data/spec/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_request_spec.rb +191 -0
  126. data/spec/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_response_spec.rb +38 -0
  127. data/spec/lib/ruby_smb/dcerpc/svcctl/close_service_handle_request_spec.rb +30 -0
  128. data/spec/lib/ruby_smb/dcerpc/svcctl/close_service_handle_response_spec.rb +38 -0
  129. data/spec/lib/ruby_smb/dcerpc/svcctl/control_service_request_spec.rb +39 -0
  130. data/spec/lib/ruby_smb/dcerpc/svcctl/control_service_response_spec.rb +38 -0
  131. data/spec/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_request_spec.rb +78 -0
  132. data/spec/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_response_spec.rb +38 -0
  133. data/spec/lib/ruby_smb/dcerpc/svcctl/open_service_w_request_spec.rb +59 -0
  134. data/spec/lib/ruby_smb/dcerpc/svcctl/open_service_w_response_spec.rb +38 -0
  135. data/spec/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_request_spec.rb +38 -0
  136. data/spec/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_response_spec.rb +152 -0
  137. data/spec/lib/ruby_smb/dcerpc/svcctl/query_service_status_request_spec.rb +30 -0
  138. data/spec/lib/ruby_smb/dcerpc/svcctl/query_service_status_response_spec.rb +38 -0
  139. data/spec/lib/ruby_smb/dcerpc/svcctl/service_status_spec.rb +72 -0
  140. data/spec/lib/ruby_smb/dcerpc/svcctl/start_service_w_request_spec.rb +46 -0
  141. data/spec/lib/ruby_smb/dcerpc/svcctl/start_service_w_response_spec.rb +30 -0
  142. data/spec/lib/ruby_smb/dcerpc/svcctl_spec.rb +512 -0
  143. data/spec/lib/ruby_smb/dcerpc/winreg/close_key_request_spec.rb +28 -0
  144. data/spec/lib/ruby_smb/dcerpc/winreg/close_key_response_spec.rb +36 -0
  145. data/spec/lib/ruby_smb/dcerpc/winreg/create_key_request_spec.rb +110 -0
  146. data/spec/lib/ruby_smb/dcerpc/winreg/create_key_response_spec.rb +44 -0
  147. data/spec/lib/ruby_smb/dcerpc/winreg/enum_key_request_spec.rb +104 -0
  148. data/spec/lib/ruby_smb/dcerpc/winreg/enum_key_response_spec.rb +97 -0
  149. data/spec/lib/ruby_smb/dcerpc/winreg/enum_value_request_spec.rb +94 -0
  150. data/spec/lib/ruby_smb/dcerpc/winreg/enum_value_response_spec.rb +82 -0
  151. data/spec/lib/ruby_smb/dcerpc/winreg/open_key_request_spec.rb +74 -0
  152. data/spec/lib/ruby_smb/dcerpc/winreg/open_key_response_spec.rb +35 -0
  153. data/spec/lib/ruby_smb/dcerpc/winreg/open_root_key_request_spec.rb +95 -0
  154. data/spec/lib/ruby_smb/dcerpc/winreg/open_root_key_response_spec.rb +38 -0
  155. data/spec/lib/ruby_smb/dcerpc/winreg/query_info_key_request_spec.rb +35 -0
  156. data/spec/lib/ruby_smb/dcerpc/winreg/query_info_key_response_spec.rb +113 -0
  157. data/spec/lib/ruby_smb/dcerpc/winreg/query_value_request_spec.rb +88 -0
  158. data/spec/lib/ruby_smb/dcerpc/winreg/query_value_response_spec.rb +138 -0
  159. data/spec/lib/ruby_smb/dcerpc/winreg/regsam_spec.rb +32 -0
  160. data/spec/lib/ruby_smb/dcerpc/winreg/save_key_request_spec.rb +57 -0
  161. data/spec/lib/ruby_smb/dcerpc/winreg/save_key_response_spec.rb +22 -0
  162. data/spec/lib/ruby_smb/dcerpc/winreg_spec.rb +884 -0
  163. data/spec/lib/ruby_smb/dcerpc_spec.rb +81 -0
  164. data/spec/lib/ruby_smb/dispatcher/socket_spec.rb +12 -12
  165. data/spec/lib/ruby_smb/error_spec.rb +59 -0
  166. data/spec/lib/ruby_smb/field/stringz16_spec.rb +12 -0
  167. data/spec/lib/ruby_smb/nbss/session_header_spec.rb +4 -11
  168. data/spec/lib/ruby_smb/smb1/file_spec.rb +9 -1
  169. data/spec/lib/ruby_smb/smb1/packet/session_setup_legacy_request_spec.rb +2 -2
  170. data/spec/lib/ruby_smb/smb1/packet/session_setup_legacy_response_spec.rb +2 -2
  171. data/spec/lib/ruby_smb/smb1/packet/session_setup_request_spec.rb +2 -2
  172. data/spec/lib/ruby_smb/smb1/packet/session_setup_response_spec.rb +1 -1
  173. data/spec/lib/ruby_smb/smb1/pipe_spec.rb +216 -147
  174. data/spec/lib/ruby_smb/smb2/bit_field/session_flags_spec.rb +9 -0
  175. data/spec/lib/ruby_smb/smb2/bit_field/share_flags_spec.rb +27 -0
  176. data/spec/lib/ruby_smb/smb2/file_spec.rb +146 -68
  177. data/spec/lib/ruby_smb/smb2/negotiate_context_spec.rb +332 -0
  178. data/spec/lib/ruby_smb/smb2/packet/compression_transform_header_spec.rb +108 -0
  179. data/spec/lib/ruby_smb/smb2/packet/error_packet_spec.rb +3 -24
  180. data/spec/lib/ruby_smb/smb2/packet/negotiate_request_spec.rb +138 -3
  181. data/spec/lib/ruby_smb/smb2/packet/negotiate_response_spec.rb +120 -2
  182. data/spec/lib/ruby_smb/smb2/packet/transform_header_spec.rb +220 -0
  183. data/spec/lib/ruby_smb/smb2/packet/tree_connect_request_spec.rb +339 -9
  184. data/spec/lib/ruby_smb/smb2/packet/tree_connect_response_spec.rb +3 -30
  185. data/spec/lib/ruby_smb/smb2/pipe_spec.rb +226 -148
  186. data/spec/lib/ruby_smb/smb2/smb2_header_spec.rb +2 -2
  187. data/spec/lib/ruby_smb/smb2/tree_spec.rb +88 -9
  188. metadata +257 -81
  189. metadata.gz.sig +0 -0
  190. data/lib/ruby_smb/smb1/dcerpc.rb +0 -72
  191. data/lib/ruby_smb/smb2/dcerpc.rb +0 -75
@@ -44,8 +44,8 @@ RSpec.describe RubySMB::SMB2::SMB2Header do
44
44
  expect(header.credit_charge).to be_a BinData::Uint16le
45
45
  end
46
46
 
47
- it 'has a default value of 0' do
48
- expect(header.credit_charge).to eq 0
47
+ it 'has a default value of 1' do
48
+ expect(header.credit_charge).to eq 1
49
49
  end
50
50
  end
51
51
 
@@ -26,6 +26,7 @@ RSpec.describe RubySMB::SMB2::Tree do
26
26
  it { is_expected.to respond_to :permissions }
27
27
  it { is_expected.to respond_to :share }
28
28
  it { is_expected.to respond_to :id }
29
+ it { is_expected.to respond_to :tree_connect_encrypt_data }
29
30
 
30
31
  it 'inherits the client that spawned it' do
31
32
  expect(tree.client).to eq client
@@ -44,7 +45,14 @@ RSpec.describe RubySMB::SMB2::Tree do
44
45
  allow(RubySMB::SMB2::Packet::TreeDisconnectRequest).to receive(:new).and_return(disco_req)
45
46
  modified_req = disco_req
46
47
  modified_req.smb2_header.tree_id = tree.id
47
- expect(client).to receive(:send_recv).with(modified_req).and_return(disco_resp.to_binary_s)
48
+ expect(client).to receive(:send_recv).with(modified_req, encrypt: false).and_return(disco_resp.to_binary_s)
49
+ tree.disconnect!
50
+ end
51
+
52
+ it 'calls Client #send_recv with encryption set if required' do
53
+ allow(tree).to receive(:set_header_fields).and_return(disco_req)
54
+ tree.tree_connect_encrypt_data = true
55
+ expect(client).to receive(:send_recv).with(disco_req, encrypt: true).and_return(disco_resp.to_binary_s)
48
56
  tree.disconnect!
49
57
  end
50
58
 
@@ -133,7 +141,14 @@ RSpec.describe RubySMB::SMB2::Tree do
133
141
 
134
142
  it 'sends the create request packet and gets a response back' do
135
143
  allow(tree).to receive(:open_directory_packet).and_return(create_req)
136
- expect(client).to receive(:send_recv).with(create_req).and_return(create_response.to_binary_s)
144
+ expect(client).to receive(:send_recv).with(create_req, encrypt: false).and_return(create_response.to_binary_s)
145
+ tree.open_directory
146
+ end
147
+
148
+ it 'calls Client #send_recv with encryption set if required' do
149
+ allow(tree).to receive(:open_directory_packet).and_return(create_req)
150
+ tree.tree_connect_encrypt_data = true
151
+ expect(client).to receive(:send_recv).with(create_req, encrypt: true).and_return(create_response.to_binary_s)
137
152
  tree.open_directory
138
153
  end
139
154
 
@@ -180,7 +195,7 @@ RSpec.describe RubySMB::SMB2::Tree do
180
195
  allow(client).to receive(:send_recv) do |packet|
181
196
  expect(packet.file_information_class).to eq RubySMB::Fscc::FileInformation::FileIdFullDirectoryInformation::CLASS_LEVEL
182
197
  expect(packet.name).to eq '*'.encode('UTF-16LE')
183
- expect(packet.output_length).to eq 65_535
198
+ expect(packet.output_length).to eq 65_536
184
199
  end
185
200
  tree.list
186
201
  end
@@ -206,6 +221,19 @@ RSpec.describe RubySMB::SMB2::Tree do
206
221
  tree.list
207
222
  end
208
223
 
224
+ it 'sends the expected packet and reads the response' do
225
+ allow(tree).to receive(:set_header_fields).and_return(query_dir_req)
226
+ expect(client).to receive(:send_recv).with(query_dir_req, encrypt: false)
227
+ tree.list
228
+ end
229
+
230
+ it 'calls Client #send_recv with encryption set if required' do
231
+ allow(tree).to receive(:set_header_fields).and_return(query_dir_req)
232
+ tree.tree_connect_encrypt_data = true
233
+ expect(client).to receive(:send_recv).with(query_dir_req, encrypt: true)
234
+ tree.list
235
+ end
236
+
209
237
  let(:file1) { double('file information') }
210
238
  let(:file2) { double('file information') }
211
239
 
@@ -260,6 +288,40 @@ RSpec.describe RubySMB::SMB2::Tree do
260
288
  end
261
289
  end
262
290
 
291
+ context 'when the dialect is 0x0202' do
292
+ it 'sets the packet output_length to 65536 and credit_charge header to 0' do
293
+ client.dialect = '0x0202'
294
+ allow(client).to receive(:send_recv) do |packet|
295
+ expect(packet.output_length).to eq(65536)
296
+ expect(packet.smb2_header.credit_charge).to eq(0)
297
+ end
298
+ tree.list
299
+ end
300
+ end
301
+
302
+ context 'when the server does not support multi credits' do
303
+ it 'sets the packet output_length to 65536 and credit_charge header to 0' do
304
+ client.server_supports_multi_credit = false
305
+ allow(client).to receive(:send_recv) do |packet|
306
+ expect(packet.output_length).to eq(65536)
307
+ expect(packet.smb2_header.credit_charge).to eq(0)
308
+ end
309
+ tree.list
310
+ end
311
+ end
312
+
313
+ context 'when the dialect is not 0x0202 and the server supports multi credits' do
314
+ it 'sets the packet output_length to server_max_read_size and credit_charge header to the expected value' do
315
+ client.server_supports_multi_credit = true
316
+ credit_charge = (90000 - 1) / 65536 + 1
317
+ client.server_max_read_size = 90000
318
+ allow(client).to receive(:send_recv) do |packet|
319
+ expect(packet.output_length).to eq(90000)
320
+ expect(packet.smb2_header.credit_charge).to eq(credit_charge)
321
+ end
322
+ tree.list
323
+ end
324
+ end
263
325
  end
264
326
 
265
327
  describe '#open_file' do
@@ -404,20 +466,37 @@ RSpec.describe RubySMB::SMB2::Tree do
404
466
  end
405
467
 
406
468
  it 'sends the CreateRequest request packet and gets the expected CreateResponse response back' do
407
- expect(client).to receive(:send_recv).with(create_request).and_return(create_response.to_binary_s)
469
+ expect(client).to receive(:send_recv).with(create_request, encrypt: false).and_return(create_response.to_binary_s)
470
+ tree.open_file(filename: filename)
471
+ end
472
+
473
+ it 'calls Client #send_recv with encryption set if required' do
474
+ tree.tree_connect_encrypt_data = true
475
+ expect(client).to receive(:send_recv).with(create_request, encrypt: true).and_return(create_response.to_binary_s)
408
476
  tree.open_file(filename: filename)
409
477
  end
410
478
 
411
479
  context 'when sending the request packet and gets a response back' do
412
480
  before :example do
413
- allow(client).to receive(:send_recv).with(create_request).and_return(create_response.to_binary_s)
481
+ allow(client).to receive(:send_recv).and_return(create_response.to_binary_s)
414
482
  end
415
483
 
416
484
  context 'when it is a file' do
417
- it 'returns the expected RubySMB::SMB2::File object' do
418
- file_obj = RubySMB::SMB2::File.new(name: filename, tree: tree, response: create_response)
419
- expect(RubySMB::SMB2::File).to receive(:new).with(name: filename, tree: tree, response: create_response).and_return(file_obj)
420
- expect(tree.open_file(filename: filename)).to eq(file_obj)
485
+ context 'when encryption is not required' do
486
+ it 'returns the expected RubySMB::SMB2::File object' do
487
+ file_obj = RubySMB::SMB2::File.new(name: filename, tree: tree, response: create_response, encrypt: false)
488
+ expect(RubySMB::SMB2::File).to receive(:new).with(name: filename, tree: tree, response: create_response, encrypt: false).and_return(file_obj)
489
+ expect(tree.open_file(filename: filename)).to eq(file_obj)
490
+ end
491
+ end
492
+
493
+ context 'when encryption is required' do
494
+ it 'returns the expected RubySMB::SMB2::File object' do
495
+ file_obj = RubySMB::SMB2::File.new(name: filename, tree: tree, response: create_response, encrypt: true)
496
+ tree.tree_connect_encrypt_data = true
497
+ expect(RubySMB::SMB2::File).to receive(:new).with(name: filename, tree: tree, response: create_response, encrypt: true).and_return(file_obj)
498
+ expect(tree.open_file(filename: filename)).to eq(file_obj)
499
+ end
421
500
  end
422
501
  end
423
502
 
metadata CHANGED
@@ -1,9 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_smb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
+ - Metasploit Hackers
7
8
  - David Maloney
8
9
  - James Lee
9
10
  - Dev Mohanty
@@ -13,85 +14,90 @@ bindir: bin
13
14
  cert_chain:
14
15
  - |
15
16
  -----BEGIN CERTIFICATE-----
16
- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
17
- A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
18
- Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
19
- MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
20
- A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
21
- hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
22
- RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
23
- gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
24
- KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
25
- QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
26
- XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
27
- DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
28
- LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
29
- RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
30
- jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
31
- 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
32
- mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
33
- Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
34
- WD9f
17
+ MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
18
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
19
+ d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
20
+ b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
21
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
22
+ cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
23
+ MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
24
+ JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
25
+ mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
26
+ wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
27
+ VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
28
+ AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
29
+ AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
30
+ BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
31
+ pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
32
+ dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
33
+ fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
34
+ NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
35
+ H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
36
+ +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
35
37
  -----END CERTIFICATE-----
36
38
  - |
37
39
  -----BEGIN CERTIFICATE-----
38
- MIIElDCCA3ygAwIBAgIOSBtqBybS6D8mAtSCWs0wDQYJKoZIhvcNAQELBQAwTDEg
39
- MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2Jh
40
- bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTYwNjE1MDAwMDAwWhcNMjQw
41
- NjE1MDAwMDAwWjBaMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBu
42
- di1zYTEwMC4GA1UEAxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1
43
- NiAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjYVVI6kfU6/J
44
- 7TbCKbVu2PlC9SGLh/BDoS/AP5fjGEfUlk6Iq8Zj6bZJFYXx2Zt7G/3YSsxtToZA
45
- F817ukcotdYUQAyG7h5LM/MsVe4hjNq2wf6wTjquUZ+lFOMQ5pPK+vldsZCH7/g1
46
- LfyiXCbuexWLH9nDoZc1QbMw/XITrZGXOs5ynQYKdTwfmOPLGC+MnwhKkQrZ2TXZ
47
- g5J2Yl7fg67k1gFOzPM8cGFYNx8U42qgr2v02dJsLBkwXaBvUt/RnMngDdl1EWWW
48
- 2UO0p5A5rkccVMuxlW4l3o7xEhzw127nFE2zGmXWhEpX7gSvYjjFEJtDjlK4Prau
49
- niyX/4507wIDAQABo4IBZDCCAWAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQWMBQG
50
- CCsGAQUFBwMDBggrBgEFBQcDCTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW
51
- BBQPOueslJF0LZYCc4OtnC5JPxmqVDAfBgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpj
52
- move4t0bvDA+BggrBgEFBQcBAQQyMDAwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3Nw
53
- Mi5nbG9iYWxzaWduLmNvbS9yb290cjMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov
54
- L2NybC5nbG9iYWxzaWduLmNvbS9yb290LXIzLmNybDBjBgNVHSAEXDBaMAsGCSsG
55
- AQQBoDIBMjAIBgZngQwBBAEwQQYJKwYBBAGgMgFfMDQwMgYIKwYBBQUHAgEWJmh0
56
- dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEB
57
- CwUAA4IBAQAVhCgM7aHDGYLbYydB18xjfda8zzabz9JdTAKLWBoWCHqxmJl/2DOK
58
- XJ5iCprqkMLFYwQL6IdYBgAHglnDqJQy2eAUTaDVI+DH3brwaeJKRWUtTUmQeGYy
59
- DrBowLCIsI7tXAb4XBBIPyNzujtThFKAzfCzFcgRCosFeEZZCNS+t/9L9ZxqTJx2
60
- ohGFRYzUN+5Q3eEzNKmhHzoL8VZEim+zM9CxjtEMYAfuMsLwJG+/r/uBAXZnxKPo
61
- 4KvcM1Uo42dHPOtqpN+U6fSmwIHRUphRptYCtzzqSu/QumXSN4NTS35nfIxA9gcc
62
- sK8EBtz4bEaIcpzrTp3DsLlUo7lOl8oU
40
+ MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
41
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
42
+ d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
43
+ b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
44
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
45
+ cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
46
+ aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
47
+ Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
48
+ 8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
49
+ wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
50
+ fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
51
+ jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
52
+ n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
53
+ HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
54
+ MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
55
+ MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
56
+ RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
57
+ ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
58
+ Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
59
+ TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
60
+ d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
61
+ CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
62
+ MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
63
+ fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
64
+ RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
65
+ EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
66
+ L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
67
+ B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
63
68
  -----END CERTIFICATE-----
64
69
  - |
65
70
  -----BEGIN CERTIFICATE-----
66
- MIIE5jCCA86gAwIBAgIMKDuO03uv6RWXR1uAMA0GCSqGSIb3DQEBCwUAMFoxCzAJ
67
- BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTAwLgYDVQQDEydH
68
- bG9iYWxTaWduIENvZGVTaWduaW5nIENBIC0gU0hBMjU2IC0gRzMwHhcNMTYwOTEz
69
- MTgxMDIyWhcNMTkxMTExMTUxNTM4WjBgMQswCQYDVQQGEwJVUzEWMBQGA1UECBMN
70
- TWFzc2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9uMRMwEQYDVQQKEwpSYXBpZDcg
71
- TExDMRMwEQYDVQQDEwpSYXBpZDcgTExDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
72
- MIIBCgKCAQEAl0HeC0FzN1BJ4nQkxsBng3peS9Bdi9rpSGx+g0Ximd+M/7twmund
73
- bzn2JPbNK/Gp/rq/SytrNSLcUzcbH/0z5Ltyw1/jQsGtRBrns0NZSRXqupQDW5R6
74
- HFpaIAl3OdsesmIQc/fm0uhh8dkfHVo7UsZO/TeCPoy0uHXTI6aFBPzMMsdz+gf3
75
- cCCLsnNKQh/T2Q/jwBs3NTPoyza/pPZcvGogKcWCeNihTO5Rn1Fc71sMHSjQsDtn
76
- 1fWGKYGi0qjvZ4lpGM9IFZMTbySKHbPLhhHnBOoV7avGemdky3AEsUeiT+6DY0P1
77
- IydBy24uVNhGATglME1ttlT4Eme/to0M6wIDAQABo4IBpDCCAaAwDgYDVR0PAQH/
78
- BAQDAgeAMIGUBggrBgEFBQcBAQSBhzCBhDBIBggrBgEFBQcwAoY8aHR0cDovL3Nl
79
- Y3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3Njb2Rlc2lnbnNoYTJnM29jc3Au
80
- Y3J0MDgGCCsGAQUFBzABhixodHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nj
81
- b2Rlc2lnbnNoYTJnMzBWBgNVHSAETzBNMEEGCSsGAQQBoDIBMjA0MDIGCCsGAQUF
82
- BwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAIBgZn
83
- gQwBBAEwCQYDVR0TBAIwADA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmds
84
- b2JhbHNpZ24uY29tL2dzY29kZXNpZ25zaGEyZzMuY3JsMBMGA1UdJQQMMAoGCCsG
85
- AQUFBwMDMB0GA1UdDgQWBBSm8RBpBC/cK9VmxzO2+RWnacN8CTAfBgNVHSMEGDAW
86
- gBQPOueslJF0LZYCc4OtnC5JPxmqVDANBgkqhkiG9w0BAQsFAAOCAQEANVO3uYQl
87
- h8iicbaXE3odrL+kXXmeeNgt4BD3x7GKAVIVixtwBS6pvrshjc1LN0tm3ruiv8oy
88
- cq4FiEmVUXZejSRvVVtABeWdZWo+lJ8NxCBUEYYmnMrjgFIbGiEbBsg7PGtyeQsA
89
- 5Wbg7Lx889mS1tKfQBcPif8EjpTiXNfMiywmpaMYmvm+yQgzrRLDbjz6JV0Rc5Ga
90
- WChka+LTPnMtsWJuFM8ka8icMeS28/nAGERdewxWvz+DeAPMORdTJ7aqb6+Y9xuz
91
- G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
92
- 8mVuTXnyJOKRJA==
71
+ MIIFIzCCBAugAwIBAgIQDX9ZkVJ2eNVTlibR5ALyJTANBgkqhkiG9w0BAQsFADBy
72
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
73
+ d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
74
+ SUQgQ29kZSBTaWduaW5nIENBMB4XDTE5MTAxNjAwMDAwMFoXDTIwMTAxOTEyMDAw
75
+ MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
76
+ BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
77
+ IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANHnKegPAghKuZk4
78
+ Gy1jKaZEXbWc4fxioTemv/F1yIYzAjCWP65qjKtyeeFDe4/kJzG9nseF9oa93YBf
79
+ 1nyEqxNSZMw/sCAZ87lOl713dRi73uxOoszy2PT5xEB+Q5R6cbzExkWG2zrLdXDr
80
+ so0Bd6VHw+IsAoBBkAq5FrZOJQYGn5VY20xw/2DqtCeoW4QDWyqTnbJmwO9tZrfr
81
+ 3Le2crfk2eOgafaPNhLon5uuIKCZsk2YkUSNURSS3M7gosMwU9Gg4JTBi7X5+oww
82
+ rY43dJT28YklxmNVu8o5kJxW4dqLKJLOIgSXZ63nceT/EaCSg7DcofHNcUzejFwb
83
+ M7Zbb2kCAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
84
+ dQ5YMB0GA1UdDgQWBBR18CAeMsIEU+0pXal/XXw9LCtMADAOBgNVHQ8BAf8EBAMC
85
+ B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
86
+ L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
87
+ L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
88
+ MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
89
+ d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
90
+ JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
91
+ AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
92
+ ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
93
+ BQADggEBAFpzR9s7lcYKDzSJucOHztEPj+iSIeCzxEw34NTE9M2AfkYIu82c4r2a
94
+ bzIGmzZWiCGufjOp0gF5xW6sSSJ9n0TqH0nhHhvjtZQkmkGtOBbN1zeYDFS2ozAp
95
+ sljF/g68Y1eYs3NaFf7kQUa6vb6RdjW3J8M9AQ8gthBt7gr/guVxd/gJUYbdDdBX
96
+ cWfJJi/X7GVBOBmmvA43qoKideuhOBrVGBHvIF/yO9p23dIiUrGmW9kxXCSxgute
97
+ JI/W23RbIRksG2pioMhd4dCXq3FLLlkOV1YfCwWixNB+iIhQPPZVaPNfgPhCn4Dt
98
+ DeGjje/qA4fkLtRmOtb9PUBq3ToRDE4=
93
99
  -----END CERTIFICATE-----
94
- date: 2018-10-25 00:00:00.000000000 Z
100
+ date: 2020-08-17 00:00:00.000000000 Z
95
101
  dependencies:
96
102
  - !ruby/object:Gem::Dependency
97
103
  name: redcarpet
@@ -205,12 +211,37 @@ dependencies:
205
211
  - - ">="
206
212
  - !ruby/object:Gem::Version
207
213
  version: '0'
214
+ - !ruby/object:Gem::Dependency
215
+ name: openssl-ccm
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ type: :runtime
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ - !ruby/object:Gem::Dependency
229
+ name: openssl-cmac
230
+ requirement: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ type: :runtime
236
+ prerelease: false
237
+ version_requirements: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
208
242
  description: ''
209
243
  email:
210
- - DMaloney@rapid7.com
211
- - egypt@metasploit.com
212
- - dev_mohanty@rapid7.com
213
- - paristvinternet-github@yahoo.com
244
+ - msfdev@metasploit.com
214
245
  executables: []
215
246
  extensions: []
216
247
  extra_rdoc_files: []
@@ -229,12 +260,17 @@ files:
229
260
  - examples/append_file.rb
230
261
  - examples/authenticate.rb
231
262
  - examples/delete_file.rb
263
+ - examples/enum_registry_key.rb
264
+ - examples/enum_registry_values.rb
232
265
  - examples/list_directory.rb
233
266
  - examples/negotiate.rb
234
267
  - examples/negotiate_with_netbios_service.rb
235
268
  - examples/net_share_enum_all.rb
236
269
  - examples/pipes.rb
270
+ - examples/query_service_status.rb
237
271
  - examples/read_file.rb
272
+ - examples/read_file_encryption.rb
273
+ - examples/read_registry_key_value.rb
238
274
  - examples/rename_file.rb
239
275
  - examples/tree_connect.rb
240
276
  - examples/write_file.rb
@@ -242,10 +278,13 @@ files:
242
278
  - lib/ruby_smb/client.rb
243
279
  - lib/ruby_smb/client/authentication.rb
244
280
  - lib/ruby_smb/client/echo.rb
281
+ - lib/ruby_smb/client/encryption.rb
245
282
  - lib/ruby_smb/client/negotiation.rb
246
283
  - lib/ruby_smb/client/signing.rb
247
284
  - lib/ruby_smb/client/tree_connect.rb
248
285
  - lib/ruby_smb/client/utils.rb
286
+ - lib/ruby_smb/client/winreg.rb
287
+ - lib/ruby_smb/crypto.rb
249
288
  - lib/ruby_smb/dcerpc.rb
250
289
  - lib/ruby_smb/dcerpc/bind.rb
251
290
  - lib/ruby_smb/dcerpc/bind_ack.rb
@@ -256,9 +295,49 @@ files:
256
295
  - lib/ruby_smb/dcerpc/ptypes.rb
257
296
  - lib/ruby_smb/dcerpc/request.rb
258
297
  - lib/ruby_smb/dcerpc/response.rb
298
+ - lib/ruby_smb/dcerpc/rpc_security_attributes.rb
299
+ - lib/ruby_smb/dcerpc/rrp_unicode_string.rb
259
300
  - lib/ruby_smb/dcerpc/srvsvc.rb
260
301
  - lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all.rb
302
+ - lib/ruby_smb/dcerpc/svcctl.rb
303
+ - lib/ruby_smb/dcerpc/svcctl/change_service_config_w_request.rb
304
+ - lib/ruby_smb/dcerpc/svcctl/change_service_config_w_response.rb
305
+ - lib/ruby_smb/dcerpc/svcctl/close_service_handle_request.rb
306
+ - lib/ruby_smb/dcerpc/svcctl/close_service_handle_response.rb
307
+ - lib/ruby_smb/dcerpc/svcctl/control_service_request.rb
308
+ - lib/ruby_smb/dcerpc/svcctl/control_service_response.rb
309
+ - lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_request.rb
310
+ - lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_response.rb
311
+ - lib/ruby_smb/dcerpc/svcctl/open_service_w_request.rb
312
+ - lib/ruby_smb/dcerpc/svcctl/open_service_w_response.rb
313
+ - lib/ruby_smb/dcerpc/svcctl/query_service_config_w_request.rb
314
+ - lib/ruby_smb/dcerpc/svcctl/query_service_config_w_response.rb
315
+ - lib/ruby_smb/dcerpc/svcctl/query_service_status_request.rb
316
+ - lib/ruby_smb/dcerpc/svcctl/query_service_status_response.rb
317
+ - lib/ruby_smb/dcerpc/svcctl/service_status.rb
318
+ - lib/ruby_smb/dcerpc/svcctl/start_service_w_request.rb
319
+ - lib/ruby_smb/dcerpc/svcctl/start_service_w_response.rb
261
320
  - lib/ruby_smb/dcerpc/uuid.rb
321
+ - lib/ruby_smb/dcerpc/winreg.rb
322
+ - lib/ruby_smb/dcerpc/winreg/close_key_request.rb
323
+ - lib/ruby_smb/dcerpc/winreg/close_key_response.rb
324
+ - lib/ruby_smb/dcerpc/winreg/create_key_request.rb
325
+ - lib/ruby_smb/dcerpc/winreg/create_key_response.rb
326
+ - lib/ruby_smb/dcerpc/winreg/enum_key_request.rb
327
+ - lib/ruby_smb/dcerpc/winreg/enum_key_response.rb
328
+ - lib/ruby_smb/dcerpc/winreg/enum_value_request.rb
329
+ - lib/ruby_smb/dcerpc/winreg/enum_value_response.rb
330
+ - lib/ruby_smb/dcerpc/winreg/open_key_request.rb
331
+ - lib/ruby_smb/dcerpc/winreg/open_key_response.rb
332
+ - lib/ruby_smb/dcerpc/winreg/open_root_key_request.rb
333
+ - lib/ruby_smb/dcerpc/winreg/open_root_key_response.rb
334
+ - lib/ruby_smb/dcerpc/winreg/query_info_key_request.rb
335
+ - lib/ruby_smb/dcerpc/winreg/query_info_key_response.rb
336
+ - lib/ruby_smb/dcerpc/winreg/query_value_request.rb
337
+ - lib/ruby_smb/dcerpc/winreg/query_value_response.rb
338
+ - lib/ruby_smb/dcerpc/winreg/regsam.rb
339
+ - lib/ruby_smb/dcerpc/winreg/save_key_request.rb
340
+ - lib/ruby_smb/dcerpc/winreg/save_key_response.rb
262
341
  - lib/ruby_smb/dispatcher.rb
263
342
  - lib/ruby_smb/dispatcher/base.rb
264
343
  - lib/ruby_smb/dispatcher/socket.rb
@@ -324,7 +403,6 @@ files:
324
403
  - lib/ruby_smb/smb1/commands.rb
325
404
  - lib/ruby_smb/smb1/create_actions.rb
326
405
  - lib/ruby_smb/smb1/data_block.rb
327
- - lib/ruby_smb/smb1/dcerpc.rb
328
406
  - lib/ruby_smb/smb1/dialect.rb
329
407
  - lib/ruby_smb/smb1/file.rb
330
408
  - lib/ruby_smb/smb1/oplock_levels.rb
@@ -402,12 +480,13 @@ files:
402
480
  - lib/ruby_smb/smb2/bit_field/smb2_security_mode_single.rb
403
481
  - lib/ruby_smb/smb2/commands.rb
404
482
  - lib/ruby_smb/smb2/create_context.rb
405
- - lib/ruby_smb/smb2/dcerpc.rb
406
483
  - lib/ruby_smb/smb2/file.rb
407
484
  - lib/ruby_smb/smb2/info_type.rb
485
+ - lib/ruby_smb/smb2/negotiate_context.rb
408
486
  - lib/ruby_smb/smb2/packet.rb
409
487
  - lib/ruby_smb/smb2/packet/close_request.rb
410
488
  - lib/ruby_smb/smb2/packet/close_response.rb
489
+ - lib/ruby_smb/smb2/packet/compression_transform_header.rb
411
490
  - lib/ruby_smb/smb2/packet/create_request.rb
412
491
  - lib/ruby_smb/smb2/packet/create_response.rb
413
492
  - lib/ruby_smb/smb2/packet/echo_request.rb
@@ -427,6 +506,7 @@ files:
427
506
  - lib/ruby_smb/smb2/packet/session_setup_response.rb
428
507
  - lib/ruby_smb/smb2/packet/set_info_request.rb
429
508
  - lib/ruby_smb/smb2/packet/set_info_response.rb
509
+ - lib/ruby_smb/smb2/packet/transform_header.rb
430
510
  - lib/ruby_smb/smb2/packet/tree_connect_request.rb
431
511
  - lib/ruby_smb/smb2/packet/tree_connect_response.rb
432
512
  - lib/ruby_smb/smb2/packet/tree_disconnect_request.rb
@@ -439,16 +519,61 @@ files:
439
519
  - lib/ruby_smb/version.rb
440
520
  - ruby_smb.gemspec
441
521
  - spec/lib/ruby_smb/client_spec.rb
522
+ - spec/lib/ruby_smb/crypto_spec.rb
442
523
  - spec/lib/ruby_smb/dcerpc/bind_ack_spec.rb
443
524
  - spec/lib/ruby_smb/dcerpc/bind_spec.rb
525
+ - spec/lib/ruby_smb/dcerpc/ndr_spec.rb
444
526
  - spec/lib/ruby_smb/dcerpc/p_syntax_id_t_spec.rb
445
527
  - spec/lib/ruby_smb/dcerpc/pdu_header_spec.rb
446
528
  - spec/lib/ruby_smb/dcerpc/request_spec.rb
447
529
  - spec/lib/ruby_smb/dcerpc/response_spec.rb
530
+ - spec/lib/ruby_smb/dcerpc/rpc_security_attributes_spec.rb
531
+ - spec/lib/ruby_smb/dcerpc/rrp_unicode_string_spec.rb
448
532
  - spec/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all_spec.rb
533
+ - spec/lib/ruby_smb/dcerpc/srvsvc_spec.rb
534
+ - spec/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_request_spec.rb
535
+ - spec/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_response_spec.rb
536
+ - spec/lib/ruby_smb/dcerpc/svcctl/close_service_handle_request_spec.rb
537
+ - spec/lib/ruby_smb/dcerpc/svcctl/close_service_handle_response_spec.rb
538
+ - spec/lib/ruby_smb/dcerpc/svcctl/control_service_request_spec.rb
539
+ - spec/lib/ruby_smb/dcerpc/svcctl/control_service_response_spec.rb
540
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_request_spec.rb
541
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_response_spec.rb
542
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_service_w_request_spec.rb
543
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_service_w_response_spec.rb
544
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_request_spec.rb
545
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_response_spec.rb
546
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_status_request_spec.rb
547
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_status_response_spec.rb
548
+ - spec/lib/ruby_smb/dcerpc/svcctl/service_status_spec.rb
549
+ - spec/lib/ruby_smb/dcerpc/svcctl/start_service_w_request_spec.rb
550
+ - spec/lib/ruby_smb/dcerpc/svcctl/start_service_w_response_spec.rb
551
+ - spec/lib/ruby_smb/dcerpc/svcctl_spec.rb
449
552
  - spec/lib/ruby_smb/dcerpc/uuid_spec.rb
553
+ - spec/lib/ruby_smb/dcerpc/winreg/close_key_request_spec.rb
554
+ - spec/lib/ruby_smb/dcerpc/winreg/close_key_response_spec.rb
555
+ - spec/lib/ruby_smb/dcerpc/winreg/create_key_request_spec.rb
556
+ - spec/lib/ruby_smb/dcerpc/winreg/create_key_response_spec.rb
557
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_key_request_spec.rb
558
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_key_response_spec.rb
559
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_value_request_spec.rb
560
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_value_response_spec.rb
561
+ - spec/lib/ruby_smb/dcerpc/winreg/open_key_request_spec.rb
562
+ - spec/lib/ruby_smb/dcerpc/winreg/open_key_response_spec.rb
563
+ - spec/lib/ruby_smb/dcerpc/winreg/open_root_key_request_spec.rb
564
+ - spec/lib/ruby_smb/dcerpc/winreg/open_root_key_response_spec.rb
565
+ - spec/lib/ruby_smb/dcerpc/winreg/query_info_key_request_spec.rb
566
+ - spec/lib/ruby_smb/dcerpc/winreg/query_info_key_response_spec.rb
567
+ - spec/lib/ruby_smb/dcerpc/winreg/query_value_request_spec.rb
568
+ - spec/lib/ruby_smb/dcerpc/winreg/query_value_response_spec.rb
569
+ - spec/lib/ruby_smb/dcerpc/winreg/regsam_spec.rb
570
+ - spec/lib/ruby_smb/dcerpc/winreg/save_key_request_spec.rb
571
+ - spec/lib/ruby_smb/dcerpc/winreg/save_key_response_spec.rb
572
+ - spec/lib/ruby_smb/dcerpc/winreg_spec.rb
573
+ - spec/lib/ruby_smb/dcerpc_spec.rb
450
574
  - spec/lib/ruby_smb/dispatcher/base_spec.rb
451
575
  - spec/lib/ruby_smb/dispatcher/socket_spec.rb
576
+ - spec/lib/ruby_smb/error_spec.rb
452
577
  - spec/lib/ruby_smb/field/extended_attribute_flag_spec.rb
453
578
  - spec/lib/ruby_smb/field/file_time_spec.rb
454
579
  - spec/lib/ruby_smb/field/nt_status_spec.rb
@@ -560,8 +685,10 @@ files:
560
685
  - spec/lib/ruby_smb/smb2/bit_field/smb_secruity_mode_spec.rb
561
686
  - spec/lib/ruby_smb/smb2/create_context_spec.rb
562
687
  - spec/lib/ruby_smb/smb2/file_spec.rb
688
+ - spec/lib/ruby_smb/smb2/negotiate_context_spec.rb
563
689
  - spec/lib/ruby_smb/smb2/packet/close_request_spec.rb
564
690
  - spec/lib/ruby_smb/smb2/packet/close_response_spec.rb
691
+ - spec/lib/ruby_smb/smb2/packet/compression_transform_header_spec.rb
565
692
  - spec/lib/ruby_smb/smb2/packet/create_request_spec.rb
566
693
  - spec/lib/ruby_smb/smb2/packet/create_response_spec.rb
567
694
  - spec/lib/ruby_smb/smb2/packet/echo_request_spec.rb
@@ -580,6 +707,7 @@ files:
580
707
  - spec/lib/ruby_smb/smb2/packet/session_setup_response_spec.rb
581
708
  - spec/lib/ruby_smb/smb2/packet/set_info_request_spec.rb
582
709
  - spec/lib/ruby_smb/smb2/packet/set_info_response_spec.rb
710
+ - spec/lib/ruby_smb/smb2/packet/transform_header_spec.rb
583
711
  - spec/lib/ruby_smb/smb2/packet/tree_connect_request_spec.rb
584
712
  - spec/lib/ruby_smb/smb2/packet/tree_connect_response_spec.rb
585
713
  - spec/lib/ruby_smb/smb2/packet/tree_disconnect_request_spec.rb
@@ -605,7 +733,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
605
733
  requirements:
606
734
  - - ">="
607
735
  - !ruby/object:Gem::Version
608
- version: 2.2.0
736
+ version: '2.5'
609
737
  required_rubygems_version: !ruby/object:Gem::Requirement
610
738
  requirements:
611
739
  - - ">="
@@ -613,22 +741,67 @@ required_rubygems_version: !ruby/object:Gem::Requirement
613
741
  version: '0'
614
742
  requirements: []
615
743
  rubyforge_project:
616
- rubygems_version: 2.6.13
744
+ rubygems_version: 2.7.10
617
745
  signing_key:
618
746
  specification_version: 4
619
747
  summary: A pure Ruby implementation of the SMB Protocol Family
620
748
  test_files:
621
749
  - spec/lib/ruby_smb/client_spec.rb
750
+ - spec/lib/ruby_smb/crypto_spec.rb
622
751
  - spec/lib/ruby_smb/dcerpc/bind_ack_spec.rb
623
752
  - spec/lib/ruby_smb/dcerpc/bind_spec.rb
753
+ - spec/lib/ruby_smb/dcerpc/ndr_spec.rb
624
754
  - spec/lib/ruby_smb/dcerpc/p_syntax_id_t_spec.rb
625
755
  - spec/lib/ruby_smb/dcerpc/pdu_header_spec.rb
626
756
  - spec/lib/ruby_smb/dcerpc/request_spec.rb
627
757
  - spec/lib/ruby_smb/dcerpc/response_spec.rb
758
+ - spec/lib/ruby_smb/dcerpc/rpc_security_attributes_spec.rb
759
+ - spec/lib/ruby_smb/dcerpc/rrp_unicode_string_spec.rb
628
760
  - spec/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all_spec.rb
761
+ - spec/lib/ruby_smb/dcerpc/srvsvc_spec.rb
762
+ - spec/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_request_spec.rb
763
+ - spec/lib/ruby_smb/dcerpc/svcctl/change_service_config_w_response_spec.rb
764
+ - spec/lib/ruby_smb/dcerpc/svcctl/close_service_handle_request_spec.rb
765
+ - spec/lib/ruby_smb/dcerpc/svcctl/close_service_handle_response_spec.rb
766
+ - spec/lib/ruby_smb/dcerpc/svcctl/control_service_request_spec.rb
767
+ - spec/lib/ruby_smb/dcerpc/svcctl/control_service_response_spec.rb
768
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_request_spec.rb
769
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_sc_manager_w_response_spec.rb
770
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_service_w_request_spec.rb
771
+ - spec/lib/ruby_smb/dcerpc/svcctl/open_service_w_response_spec.rb
772
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_request_spec.rb
773
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_config_w_response_spec.rb
774
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_status_request_spec.rb
775
+ - spec/lib/ruby_smb/dcerpc/svcctl/query_service_status_response_spec.rb
776
+ - spec/lib/ruby_smb/dcerpc/svcctl/service_status_spec.rb
777
+ - spec/lib/ruby_smb/dcerpc/svcctl/start_service_w_request_spec.rb
778
+ - spec/lib/ruby_smb/dcerpc/svcctl/start_service_w_response_spec.rb
779
+ - spec/lib/ruby_smb/dcerpc/svcctl_spec.rb
629
780
  - spec/lib/ruby_smb/dcerpc/uuid_spec.rb
781
+ - spec/lib/ruby_smb/dcerpc/winreg/close_key_request_spec.rb
782
+ - spec/lib/ruby_smb/dcerpc/winreg/close_key_response_spec.rb
783
+ - spec/lib/ruby_smb/dcerpc/winreg/create_key_request_spec.rb
784
+ - spec/lib/ruby_smb/dcerpc/winreg/create_key_response_spec.rb
785
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_key_request_spec.rb
786
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_key_response_spec.rb
787
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_value_request_spec.rb
788
+ - spec/lib/ruby_smb/dcerpc/winreg/enum_value_response_spec.rb
789
+ - spec/lib/ruby_smb/dcerpc/winreg/open_key_request_spec.rb
790
+ - spec/lib/ruby_smb/dcerpc/winreg/open_key_response_spec.rb
791
+ - spec/lib/ruby_smb/dcerpc/winreg/open_root_key_request_spec.rb
792
+ - spec/lib/ruby_smb/dcerpc/winreg/open_root_key_response_spec.rb
793
+ - spec/lib/ruby_smb/dcerpc/winreg/query_info_key_request_spec.rb
794
+ - spec/lib/ruby_smb/dcerpc/winreg/query_info_key_response_spec.rb
795
+ - spec/lib/ruby_smb/dcerpc/winreg/query_value_request_spec.rb
796
+ - spec/lib/ruby_smb/dcerpc/winreg/query_value_response_spec.rb
797
+ - spec/lib/ruby_smb/dcerpc/winreg/regsam_spec.rb
798
+ - spec/lib/ruby_smb/dcerpc/winreg/save_key_request_spec.rb
799
+ - spec/lib/ruby_smb/dcerpc/winreg/save_key_response_spec.rb
800
+ - spec/lib/ruby_smb/dcerpc/winreg_spec.rb
801
+ - spec/lib/ruby_smb/dcerpc_spec.rb
630
802
  - spec/lib/ruby_smb/dispatcher/base_spec.rb
631
803
  - spec/lib/ruby_smb/dispatcher/socket_spec.rb
804
+ - spec/lib/ruby_smb/error_spec.rb
632
805
  - spec/lib/ruby_smb/field/extended_attribute_flag_spec.rb
633
806
  - spec/lib/ruby_smb/field/file_time_spec.rb
634
807
  - spec/lib/ruby_smb/field/nt_status_spec.rb
@@ -740,8 +913,10 @@ test_files:
740
913
  - spec/lib/ruby_smb/smb2/bit_field/smb_secruity_mode_spec.rb
741
914
  - spec/lib/ruby_smb/smb2/create_context_spec.rb
742
915
  - spec/lib/ruby_smb/smb2/file_spec.rb
916
+ - spec/lib/ruby_smb/smb2/negotiate_context_spec.rb
743
917
  - spec/lib/ruby_smb/smb2/packet/close_request_spec.rb
744
918
  - spec/lib/ruby_smb/smb2/packet/close_response_spec.rb
919
+ - spec/lib/ruby_smb/smb2/packet/compression_transform_header_spec.rb
745
920
  - spec/lib/ruby_smb/smb2/packet/create_request_spec.rb
746
921
  - spec/lib/ruby_smb/smb2/packet/create_response_spec.rb
747
922
  - spec/lib/ruby_smb/smb2/packet/echo_request_spec.rb
@@ -760,6 +935,7 @@ test_files:
760
935
  - spec/lib/ruby_smb/smb2/packet/session_setup_response_spec.rb
761
936
  - spec/lib/ruby_smb/smb2/packet/set_info_request_spec.rb
762
937
  - spec/lib/ruby_smb/smb2/packet/set_info_response_spec.rb
938
+ - spec/lib/ruby_smb/smb2/packet/transform_header_spec.rb
763
939
  - spec/lib/ruby_smb/smb2/packet/tree_connect_request_spec.rb
764
940
  - spec/lib/ruby_smb/smb2/packet/tree_connect_response_spec.rb
765
941
  - spec/lib/ruby_smb/smb2/packet/tree_disconnect_request_spec.rb