ruby_smb 0.0.18 → 0.0.19
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.tar.gz.sig +0 -0
- data/README.md +247 -7
- data/examples/anonymous_auth.rb +6 -3
- data/examples/append_file.rb +40 -0
- data/examples/authenticate.rb +12 -7
- data/examples/delete_file.rb +40 -0
- data/examples/list_directory.rb +45 -0
- data/examples/negotiate.rb +0 -1
- data/examples/negotiate_with_netbios_service.rb +36 -0
- data/examples/net_share_enum_all.rb +30 -0
- data/examples/read_file.rb +39 -0
- data/examples/rename_file.rb +41 -0
- data/examples/tree_connect.rb +2 -4
- data/examples/write_file.rb +40 -0
- data/lib/ruby_smb.rb +5 -0
- data/lib/ruby_smb/client.rb +196 -43
- data/lib/ruby_smb/client/authentication.rb +89 -48
- data/lib/ruby_smb/client/echo.rb +1 -4
- data/lib/ruby_smb/client/negotiation.rb +46 -45
- data/lib/ruby_smb/client/signing.rb +9 -16
- data/lib/ruby_smb/client/tree_connect.rb +8 -13
- data/lib/ruby_smb/client/utils.rb +79 -0
- data/lib/ruby_smb/dcerpc.rb +30 -0
- data/lib/ruby_smb/dcerpc/bind.rb +60 -0
- data/lib/ruby_smb/dcerpc/handle.rb +60 -0
- data/lib/ruby_smb/dcerpc/ndr.rb +41 -0
- data/lib/ruby_smb/dcerpc/request.rb +43 -0
- data/lib/ruby_smb/dcerpc/response.rb +46 -0
- data/lib/ruby_smb/dcerpc/srvsvc.rb +17 -0
- data/lib/ruby_smb/dcerpc/srvsvc/net_share_enum_all.rb +93 -0
- data/lib/ruby_smb/dcerpc/uuid.rb +28 -0
- data/lib/ruby_smb/dispatcher.rb +7 -3
- data/lib/ruby_smb/dispatcher/base.rb +23 -14
- data/lib/ruby_smb/dispatcher/socket.rb +71 -51
- data/lib/ruby_smb/dispositions.rb +32 -0
- data/lib/ruby_smb/error.rb +24 -18
- data/lib/ruby_smb/field.rb +5 -2
- data/lib/ruby_smb/field/extended_attribute_flag.rb +1 -1
- data/lib/ruby_smb/field/file_time.rb +3 -1
- data/lib/ruby_smb/field/security_descriptor.rb +6 -6
- data/lib/ruby_smb/field/smb2_fileid.rb +11 -0
- data/lib/ruby_smb/field/smb_fea.rb +3 -3
- data/lib/ruby_smb/field/smb_fea_list.rb +3 -3
- data/lib/ruby_smb/field/smb_gea.rb +12 -0
- data/lib/ruby_smb/field/smb_gea_list.rb +13 -0
- data/lib/ruby_smb/field/string16.rb +14 -0
- data/lib/ruby_smb/field/stringz16.rb +3 -7
- data/lib/ruby_smb/field/utime.rb +11 -10
- data/lib/ruby_smb/fscc.rb +12 -0
- data/lib/ruby_smb/fscc/control_codes.rb +26 -0
- data/lib/ruby_smb/{field → fscc}/ea_info_array.rb +12 -14
- data/lib/ruby_smb/fscc/file_attributes.rb +29 -0
- data/lib/ruby_smb/{field → fscc}/file_full_ea_info.rb +5 -5
- data/lib/ruby_smb/fscc/file_information.rb +60 -0
- data/lib/ruby_smb/fscc/file_information/file_both_directory_information.rb +29 -0
- data/lib/ruby_smb/fscc/file_information/file_directory_information.rb +25 -0
- data/lib/ruby_smb/fscc/file_information/file_disposition_information.rb +15 -0
- data/lib/ruby_smb/fscc/file_information/file_full_directory_information.rb +26 -0
- data/lib/ruby_smb/fscc/file_information/file_id_both_directory_information.rb +31 -0
- data/lib/ruby_smb/fscc/file_information/file_id_full_directory_information.rb +28 -0
- data/lib/ruby_smb/fscc/file_information/file_names_information.rb +18 -0
- data/lib/ruby_smb/fscc/file_information/file_rename_information.rb +44 -0
- data/lib/ruby_smb/generic_packet.rb +40 -18
- data/lib/ruby_smb/gss.rb +49 -56
- data/lib/ruby_smb/impersonation_levels.rb +7 -2
- data/lib/ruby_smb/nbss.rb +16 -0
- data/lib/ruby_smb/nbss/negative_session_response.rb +30 -0
- data/lib/ruby_smb/nbss/session_header.rb +13 -0
- data/lib/ruby_smb/nbss/session_request.rb +13 -0
- data/lib/ruby_smb/smb1.rb +20 -17
- data/lib/ruby_smb/smb1/bit_field.rb +3 -0
- data/lib/ruby_smb/smb1/bit_field/create_options.rb +5 -5
- data/lib/ruby_smb/smb1/bit_field/file_status_flags.rb +18 -0
- data/lib/ruby_smb/smb1/bit_field/open2_access_mode.rb +11 -11
- data/lib/ruby_smb/smb1/bit_field/open2_open_mode.rb +1 -1
- data/lib/ruby_smb/smb1/bit_field/optional_support.rb +0 -1
- data/lib/ruby_smb/smb1/bit_field/security_flags.rb +15 -0
- data/lib/ruby_smb/smb1/bit_field/share_access.rb +2 -3
- data/lib/ruby_smb/smb1/bit_field/smb_ext_file_attributes.rb +21 -24
- data/lib/ruby_smb/smb1/bit_field/smb_file_attributes.rb +1 -1
- data/lib/ruby_smb/smb1/commands.rb +5 -0
- data/lib/ruby_smb/smb1/create_actions.rb +3 -5
- data/lib/ruby_smb/smb1/file.rb +289 -0
- data/lib/ruby_smb/smb1/oplock_levels.rb +2 -4
- data/lib/ruby_smb/smb1/packet.rb +10 -0
- data/lib/ruby_smb/smb1/packet/close_request.rb +31 -0
- data/lib/ruby_smb/smb1/packet/close_response.rb +28 -0
- data/lib/ruby_smb/smb1/packet/echo_request.rb +5 -7
- data/lib/ruby_smb/smb1/packet/echo_response.rb +5 -7
- data/lib/ruby_smb/smb1/packet/empty_packet.rb +1 -2
- data/lib/ruby_smb/smb1/packet/logoff_request.rb +1 -4
- data/lib/ruby_smb/smb1/packet/logoff_response.rb +1 -4
- data/lib/ruby_smb/smb1/packet/negotiate_response.rb +22 -0
- data/lib/ruby_smb/smb1/packet/negotiate_response_extended.rb +22 -0
- data/lib/ruby_smb/smb1/packet/nt_create_andx_request.rb +62 -0
- data/lib/ruby_smb/smb1/packet/nt_create_andx_response.rb +66 -0
- data/lib/ruby_smb/smb1/packet/nt_trans.rb +1 -2
- data/lib/ruby_smb/smb1/packet/nt_trans/create_request.rb +19 -13
- data/lib/ruby_smb/smb1/packet/nt_trans/create_response.rb +8 -10
- data/lib/ruby_smb/smb1/packet/nt_trans/request.rb +11 -11
- data/lib/ruby_smb/smb1/packet/nt_trans/response.rb +10 -10
- data/lib/ruby_smb/smb1/packet/nt_trans/subcommands.rb +8 -1
- data/lib/ruby_smb/smb1/packet/read_andx_request.rb +84 -0
- data/lib/ruby_smb/smb1/packet/read_andx_response.rb +47 -0
- data/lib/ruby_smb/smb1/packet/session_setup_legacy_request.rb +2 -6
- data/lib/ruby_smb/smb1/packet/session_setup_legacy_response.rb +1 -4
- data/lib/ruby_smb/smb1/packet/session_setup_request.rb +1 -6
- data/lib/ruby_smb/smb1/packet/session_setup_response.rb +2 -4
- data/lib/ruby_smb/smb1/packet/trans2.rb +8 -2
- data/lib/ruby_smb/smb1/packet/trans2/data_block.rb +6 -7
- data/lib/ruby_smb/smb1/packet/trans2/find_first2_request.rb +77 -0
- data/lib/ruby_smb/smb1/packet/trans2/find_first2_response.rb +87 -0
- data/lib/ruby_smb/smb1/packet/trans2/find_information_level.rb +32 -0
- data/lib/ruby_smb/smb1/packet/trans2/find_information_level/find_file_full_directory_info.rb +45 -0
- data/lib/ruby_smb/smb1/packet/trans2/find_next2_request.rb +77 -0
- data/lib/ruby_smb/smb1/packet/trans2/find_next2_response.rb +86 -0
- data/lib/ruby_smb/smb1/packet/trans2/open2_request.rb +10 -10
- data/lib/ruby_smb/smb1/packet/trans2/open2_response.rb +10 -12
- data/lib/ruby_smb/smb1/packet/trans2/request.rb +15 -17
- data/lib/ruby_smb/smb1/packet/trans2/request_secondary.rb +8 -10
- data/lib/ruby_smb/smb1/packet/trans2/response.rb +11 -13
- data/lib/ruby_smb/smb1/packet/trans2/set_file_information_request.rb +66 -0
- data/lib/ruby_smb/smb1/packet/trans2/set_file_information_response.rb +57 -0
- data/lib/ruby_smb/smb1/packet/trans2/subcommands.rb +5 -2
- data/lib/ruby_smb/smb1/packet/tree_connect_request.rb +4 -6
- data/lib/ruby_smb/smb1/packet/tree_connect_response.rb +5 -7
- data/lib/ruby_smb/smb1/packet/tree_disconnect_request.rb +2 -4
- data/lib/ruby_smb/smb1/packet/tree_disconnect_response.rb +2 -4
- data/lib/ruby_smb/smb1/packet/write_andx_request.rb +68 -0
- data/lib/ruby_smb/smb1/packet/write_andx_response.rb +35 -0
- data/lib/ruby_smb/smb1/resource_type.rb +18 -0
- data/lib/ruby_smb/smb1/tree.rb +188 -5
- data/lib/ruby_smb/smb2.rb +16 -11
- data/lib/ruby_smb/smb2/bit_field.rb +1 -0
- data/lib/ruby_smb/smb2/bit_field/file_access_mask.rb +1 -1
- data/lib/ruby_smb/smb2/bit_field/session_flags.rb +1 -2
- data/lib/ruby_smb/smb2/bit_field/share_flags.rb +4 -6
- data/lib/ruby_smb/smb2/create_context.rb +29 -0
- data/lib/ruby_smb/smb2/file.rb +251 -0
- data/lib/ruby_smb/smb2/info_type.rb +21 -0
- data/lib/ruby_smb/smb2/packet.rb +16 -0
- data/lib/ruby_smb/smb2/packet/close_request.rb +22 -0
- data/lib/ruby_smb/smb2/packet/close_response.rb +29 -0
- data/lib/ruby_smb/smb2/packet/create_request.rb +54 -0
- data/lib/ruby_smb/smb2/packet/create_response.rb +35 -0
- data/lib/ruby_smb/smb2/packet/echo_request.rb +1 -3
- data/lib/ruby_smb/smb2/packet/echo_response.rb +1 -3
- data/lib/ruby_smb/smb2/packet/error_packet.rb +1 -3
- data/lib/ruby_smb/smb2/packet/ioctl_request.rb +54 -0
- data/lib/ruby_smb/smb2/packet/ioctl_response.rb +39 -0
- data/lib/ruby_smb/smb2/packet/logoff_request.rb +1 -4
- data/lib/ruby_smb/smb2/packet/logoff_response.rb +1 -4
- data/lib/ruby_smb/smb2/packet/negotiate_request.rb +1 -1
- data/lib/ruby_smb/smb2/packet/negotiate_response.rb +1 -1
- data/lib/ruby_smb/smb2/packet/query_directory_request.rb +35 -0
- data/lib/ruby_smb/smb2/packet/query_directory_response.rb +45 -0
- data/lib/ruby_smb/smb2/packet/read_request.rb +30 -0
- data/lib/ruby_smb/smb2/packet/read_response.rb +26 -0
- data/lib/ruby_smb/smb2/packet/session_setup_request.rb +2 -5
- data/lib/ruby_smb/smb2/packet/session_setup_response.rb +4 -7
- data/lib/ruby_smb/smb2/packet/set_info_request.rb +58 -0
- data/lib/ruby_smb/smb2/packet/set_info_response.rb +20 -0
- data/lib/ruby_smb/smb2/packet/tree_connect_request.rb +3 -4
- data/lib/ruby_smb/smb2/packet/tree_connect_response.rb +5 -9
- data/lib/ruby_smb/smb2/packet/tree_disconnect_request.rb +1 -4
- data/lib/ruby_smb/smb2/packet/tree_disconnect_response.rb +1 -4
- data/lib/ruby_smb/smb2/packet/write_request.rb +29 -0
- data/lib/ruby_smb/smb2/packet/write_response.rb +26 -0
- data/lib/ruby_smb/smb2/tree.rb +163 -7
- data/lib/ruby_smb/version.rb +1 -1
- data/spec/lib/ruby_smb/client_spec.rb +459 -120
- data/spec/lib/ruby_smb/dcerpc/bind_spec.rb +14 -0
- data/spec/lib/ruby_smb/dcerpc/handle_spec.rb +31 -0
- data/spec/lib/ruby_smb/dcerpc/request_spec.rb +21 -0
- data/spec/lib/ruby_smb/dcerpc/response_spec.rb +15 -0
- data/spec/lib/ruby_smb/dcerpc/srvsvc_spec.rb +13 -0
- data/spec/lib/ruby_smb/dcerpc/uuid_spec.rb +12 -0
- data/spec/lib/ruby_smb/dispatcher/base_spec.rb +26 -0
- data/spec/lib/ruby_smb/dispatcher/socket_spec.rb +118 -18
- data/spec/lib/ruby_smb/field/extended_attribute_flag_spec.rb +0 -3
- data/spec/lib/ruby_smb/field/file_time_spec.rb +4 -2
- data/spec/lib/ruby_smb/field/security_descriptor.rb +0 -1
- data/spec/lib/ruby_smb/field/smb2_fileid_spec.rb +10 -0
- data/spec/lib/ruby_smb/field/smb_fea_list_spec.rb +3 -5
- data/spec/lib/ruby_smb/field/smb_gea_list_spec.rb +37 -0
- data/spec/lib/ruby_smb/field/smb_gea_spec.rb +22 -0
- data/spec/lib/ruby_smb/field/stringz16_spec.rb +7 -9
- data/spec/lib/ruby_smb/field/utime_spec.rb +4 -2
- data/spec/lib/ruby_smb/{field → fscc}/ea_info_array_spec.rb +7 -9
- data/spec/lib/ruby_smb/{field → fscc}/file_full_ea_info_spec.rb +2 -3
- data/spec/lib/ruby_smb/fscc/file_information/file_both_directory_information_spec.rb +71 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_directory_information_spec.rb +68 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_disposition_information_spec.rb +26 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_full_directory_information_spec.rb +69 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_id_both_directory_information_spec.rb +72 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_id_full_directory_information_spec.rb +70 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_names_information_spec.rb +41 -0
- data/spec/lib/ruby_smb/fscc/file_information/file_rename_information_spec.rb +133 -0
- data/spec/lib/ruby_smb/fscc/fscc_file_attributes_spec.rb +143 -0
- data/spec/lib/ruby_smb/generic_packet_spec.rb +46 -21
- data/spec/lib/ruby_smb/nbss/negative_session_response_spec.rb +29 -0
- data/spec/lib/ruby_smb/nbss/session_header_spec.rb +30 -0
- data/spec/lib/ruby_smb/nbss/session_request_spec.rb +30 -0
- data/spec/lib/ruby_smb/smb1/bit_field/create_options_spec.rb +9 -1
- data/spec/lib/ruby_smb/smb1/bit_field/directory_access_mask_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb1/bit_field/file_access_mask_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb1/bit_field/file_status_flags_spec.rb +35 -0
- data/spec/lib/ruby_smb/smb1/bit_field/open2_access_mode_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb1/bit_field/open2_flags_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb1/bit_field/open2_open_mode_spec.rb +0 -1
- data/spec/lib/ruby_smb/smb1/bit_field/optional_support_spec.rb +0 -1
- data/spec/lib/ruby_smb/smb1/bit_field/security_flags_spec.rb +26 -0
- data/spec/lib/ruby_smb/smb1/bit_field/share_access_spec.rb +0 -3
- data/spec/lib/ruby_smb/smb1/bit_field/smb_ext_file_attributes_spec.rb +20 -39
- data/spec/lib/ruby_smb/smb1/bit_field/smb_file_attributes_spec.rb +0 -6
- data/spec/lib/ruby_smb/smb1/bit_field/smb_nmpipe_status_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb1/bit_field/trans2_flags_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb1/bit_field/tree_connect_flags_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb1/file_spec.rb +469 -0
- data/spec/lib/ruby_smb/smb1/packet/close_request_spec.rb +54 -0
- data/spec/lib/ruby_smb/smb1/packet/close_response_spec.rb +45 -0
- data/spec/lib/ruby_smb/smb1/packet/echo_request_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/echo_response_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/error_packet_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb1/packet/logoff_request_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/logoff_response_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/negotiate_request_spec.rb +1 -1
- data/spec/lib/ruby_smb/smb1/packet/negotiate_response_extended_spec.rb +37 -0
- data/spec/lib/ruby_smb/smb1/packet/negotiate_response_spec.rb +37 -0
- data/spec/lib/ruby_smb/smb1/packet/nt_create_andx_request_spec.rb +151 -0
- data/spec/lib/ruby_smb/smb1/packet/nt_create_andx_response_spec.rb +157 -0
- data/spec/lib/ruby_smb/smb1/packet/nt_trans/create_request_spec.rb +13 -6
- data/spec/lib/ruby_smb/smb1/packet/nt_trans/create_response_spec.rb +1 -7
- data/spec/lib/ruby_smb/smb1/packet/nt_trans/request_spec.rb +1 -6
- data/spec/lib/ruby_smb/smb1/packet/nt_trans/response_spec.rb +1 -5
- data/spec/lib/ruby_smb/smb1/packet/read_andx_request_spec.rb +149 -0
- data/spec/lib/ruby_smb/smb1/packet/read_andx_response_spec.rb +93 -0
- data/spec/lib/ruby_smb/smb1/packet/session_setup_legacy_request_spec.rb +1 -5
- data/spec/lib/ruby_smb/smb1/packet/session_setup_legacy_response_spec.rb +1 -5
- data/spec/lib/ruby_smb/smb1/packet/session_setup_request_spec.rb +3 -8
- data/spec/lib/ruby_smb/smb1/packet/session_setup_response_spec.rb +2 -4
- data/spec/lib/ruby_smb/smb1/packet/trans2/find_first2_request_spec.rb +180 -0
- data/spec/lib/ruby_smb/smb1/packet/trans2/find_first2_response_spec.rb +104 -0
- data/spec/lib/ruby_smb/smb1/packet/trans2/find_information_level/find_file_full_directory_info_spec.rb +128 -0
- data/spec/lib/ruby_smb/smb1/packet/trans2/find_next2_request_spec.rb +174 -0
- data/spec/lib/ruby_smb/smb1/packet/trans2/find_next2_response_spec.rb +102 -0
- data/spec/lib/ruby_smb/smb1/packet/trans2/open2_request_spec.rb +1 -6
- data/spec/lib/ruby_smb/smb1/packet/trans2/open2_response_spec.rb +2 -7
- data/spec/lib/ruby_smb/smb1/packet/trans2/request_secondary_spec.rb +1 -5
- data/spec/lib/ruby_smb/smb1/packet/trans2/request_spec.rb +1 -5
- data/spec/lib/ruby_smb/smb1/packet/trans2/response_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/trans2/set_file_information_request_spec.rb +98 -0
- data/spec/lib/ruby_smb/smb1/packet/trans2/set_file_information_response_spec.rb +56 -0
- data/spec/lib/ruby_smb/smb1/packet/tree_connect_request_spec.rb +1 -5
- data/spec/lib/ruby_smb/smb1/packet/tree_connect_response_spec.rb +1 -6
- data/spec/lib/ruby_smb/smb1/packet/tree_disconnect_request_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/tree_disconnect_response_spec.rb +1 -4
- data/spec/lib/ruby_smb/smb1/packet/write_andx_request_spec.rb +148 -0
- data/spec/lib/ruby_smb/smb1/packet/write_andx_response_spec.rb +54 -0
- data/spec/lib/ruby_smb/smb1/tree_spec.rb +409 -7
- data/spec/lib/ruby_smb/smb2/bit_field/directory_access_mask_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb2/bit_field/file_access_mask_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb2/bit_field/session_flags_spec.rb +1 -1
- data/spec/lib/ruby_smb/smb2/bit_field/share_capabilities_spec.rb +0 -1
- data/spec/lib/ruby_smb/smb2/bit_field/share_flags_spec.rb +0 -2
- data/spec/lib/ruby_smb/smb2/create_context_spec.rb +42 -0
- data/spec/lib/ruby_smb/smb2/file_spec.rb +233 -0
- data/spec/lib/ruby_smb/smb2/packet/close_request_spec.rb +40 -0
- data/spec/lib/ruby_smb/smb2/packet/close_response_spec.rb +40 -0
- data/spec/lib/ruby_smb/smb2/packet/create_request_spec.rb +101 -0
- data/spec/lib/ruby_smb/smb2/packet/create_response_spec.rb +64 -0
- data/spec/lib/ruby_smb/smb2/packet/echo_request_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb2/packet/echo_response_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb2/packet/ioctl_request_spec.rb +48 -0
- data/spec/lib/ruby_smb/smb2/packet/logoff_request_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb2/packet/logoff_response_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb2/packet/query_directory_request_spec.rb +80 -0
- data/spec/lib/ruby_smb/smb2/packet/query_directory_response_spec.rb +64 -0
- data/spec/lib/ruby_smb/smb2/packet/read_request_spec.rb +43 -0
- data/spec/lib/ruby_smb/smb2/packet/read_response_spec.rb +50 -0
- data/spec/lib/ruby_smb/smb2/packet/session_setup_request_spec.rb +3 -4
- data/spec/lib/ruby_smb/smb2/packet/session_setup_response_spec.rb +2 -3
- data/spec/lib/ruby_smb/smb2/packet/set_info_request_spec.rb +205 -0
- data/spec/lib/ruby_smb/smb2/packet/set_info_response_spec.rb +32 -0
- data/spec/lib/ruby_smb/smb2/packet/tree_connect_request_spec.rb +3 -5
- data/spec/lib/ruby_smb/smb2/packet/tree_connect_response_spec.rb +1 -2
- data/spec/lib/ruby_smb/smb2/packet/tree_disconnect_request_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb2/packet/tree_disconnect_response_spec.rb +1 -3
- data/spec/lib/ruby_smb/smb2/packet/write_request_spec.rb +51 -0
- data/spec/lib/ruby_smb/smb2/packet/write_response_spec.rb +38 -0
- data/spec/lib/ruby_smb/smb2/tree_spec.rb +191 -5
- data/spec/spec_helper.rb +1 -1
- metadata +195 -12
- metadata.gz.sig +0 -0
- data/lib/ruby_smb/smb1/dispositions.rb +0 -36
- data/spec/lib/ruby_smb/dispatcher/dispatcher_base_spec.rb +0 -22
@@ -2,16 +2,15 @@ module RubySMB
|
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
4
|
module Trans2
|
5
|
-
|
6
5
|
# This class represents an SMB1 Trans2 Open2 Response Packet as defined in
|
7
6
|
# [2.2.6.1.2 Response](https://msdn.microsoft.com/en-us/library/ee441545.aspx)
|
8
7
|
class Open2Response < RubySMB::GenericPacket
|
9
|
-
|
10
8
|
class ParameterBlock < RubySMB::SMB1::Packet::Trans2::Response::ParameterBlock
|
11
9
|
end
|
12
10
|
|
11
|
+
# The Trans2 Parameter Block for this particular Subcommand
|
13
12
|
class Trans2Parameters < BinData::Record
|
14
|
-
endian
|
13
|
+
endian :little
|
15
14
|
uint8 :fid, label: 'File ID'
|
16
15
|
smb_file_attributes :file_attributes, label: 'File Attributes'
|
17
16
|
utime :creation_time, label: 'Creation Time'
|
@@ -19,7 +18,7 @@ module RubySMB
|
|
19
18
|
uint16 :resource_type, label: 'Resource Type'
|
20
19
|
smb_nmpipe_status :nmpipe_status, label: 'Named Pipe Status'
|
21
20
|
|
22
|
-
struct
|
21
|
+
struct :action_taken do
|
23
22
|
endian :little
|
24
23
|
bit6 :reserved, label: 'Reserved Space'
|
25
24
|
bit2 :open_result, label: 'Open Result'
|
@@ -35,15 +34,16 @@ module RubySMB
|
|
35
34
|
# Returns the length of the Trans2Parameters struct
|
36
35
|
# in number of bytes
|
37
36
|
def length
|
38
|
-
|
37
|
+
do_num_bytes
|
39
38
|
end
|
40
39
|
end
|
41
40
|
|
41
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
42
42
|
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
43
|
-
string :pad1, length:
|
43
|
+
string :pad1, length: -> { pad1_length }
|
44
44
|
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
45
|
-
string :pad2, length:
|
46
|
-
string :trans2_data, label: 'Trans2 Data',
|
45
|
+
string :pad2, length: -> { pad2_length }
|
46
|
+
string :trans2_data, label: 'Trans2 Data', length: 0
|
47
47
|
end
|
48
48
|
|
49
49
|
smb_header :smb_header
|
@@ -52,14 +52,12 @@ module RubySMB
|
|
52
52
|
|
53
53
|
def initialize_instance
|
54
54
|
super
|
55
|
-
smb_header.command
|
55
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
56
56
|
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::OPEN2
|
57
57
|
smb_header.flags.reply = 1
|
58
58
|
end
|
59
|
-
|
60
|
-
|
61
59
|
end
|
62
60
|
end
|
63
61
|
end
|
64
62
|
end
|
65
|
-
end
|
63
|
+
end
|
@@ -2,36 +2,36 @@ module RubySMB
|
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
4
|
module Trans2
|
5
|
-
|
6
5
|
# This class represents a generic SMB1 Trans2 Request Packet as defined in
|
7
6
|
# [2.2.4.46.1 Request](https://msdn.microsoft.com/en-us/library/ee442192.aspx)
|
8
7
|
class Request < RubySMB::GenericPacket
|
9
|
-
|
8
|
+
# The {RubySMB::SMB1::ParameterBlock} specific to this packet type.
|
10
9
|
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
10
|
uint16 :total_parameter_count, label: 'Total Parameter Count(bytes)'
|
12
11
|
uint16 :total_data_count, label: 'Total Data Count(bytes)'
|
13
12
|
uint16 :max_parameter_count, label: 'Max Parameter Count(bytes)'
|
14
13
|
uint16 :max_data_count, label: 'Max Data Count(bytes)'
|
15
14
|
uint8 :max_setup_count, label: 'Max Setup Count'
|
16
|
-
uint8 :reserved, label: 'Reserved Space',
|
15
|
+
uint8 :reserved, label: 'Reserved Space', initial_value: 0x00
|
17
16
|
trans2_flags :flags
|
18
|
-
uint32 :timeout, label: 'Timeout',
|
19
|
-
uint16 :reserved2, label: 'Reserved Space',
|
20
|
-
uint16 :parameter_count, label: 'Parameter Count(bytes)',
|
21
|
-
uint16 :parameter_offset, label: 'Parameter Offset',
|
22
|
-
uint16 :data_count, label: 'Data Count(bytes)',
|
23
|
-
uint16 :data_offset, label: 'Data Offset',
|
24
|
-
uint8 :setup_count, label: 'Setup Count',
|
25
|
-
uint8 :reserved3, label: 'Reserved Space',
|
17
|
+
uint32 :timeout, label: 'Timeout', initial_value: 0x00000000
|
18
|
+
uint16 :reserved2, label: 'Reserved Space', initial_value: 0x00
|
19
|
+
uint16 :parameter_count, label: 'Parameter Count(bytes)', initial_value: -> { parent.data_block.trans2_parameters.length }
|
20
|
+
uint16 :parameter_offset, label: 'Parameter Offset', initial_value: -> { parent.data_block.trans2_parameters.abs_offset }
|
21
|
+
uint16 :data_count, label: 'Data Count(bytes)', initial_value: -> { parent.data_block.trans2_data.length }
|
22
|
+
uint16 :data_offset, label: 'Data Offset', initial_value: -> { parent.data_block.trans2_data.abs_offset }
|
23
|
+
uint8 :setup_count, label: 'Setup Count', initial_value: -> { setup.length }
|
24
|
+
uint8 :reserved3, label: 'Reserved Space', initial_value: 0x00
|
26
25
|
|
27
26
|
array :setup, type: :uint16, initial_length: 0
|
28
27
|
end
|
29
28
|
|
29
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
30
30
|
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
31
|
-
uint8 :name, label: 'Name',
|
32
|
-
string :pad1, length:
|
31
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
32
|
+
string :pad1, length: -> { pad1_length }
|
33
33
|
string :trans2_parameters, label: 'Trans2 Parameters'
|
34
|
-
string :pad2, length:
|
34
|
+
string :pad2, length: -> { pad2_length }
|
35
35
|
string :trans2_data, label: 'Trans2 Data'
|
36
36
|
end
|
37
37
|
|
@@ -43,10 +43,8 @@ module RubySMB
|
|
43
43
|
super
|
44
44
|
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
45
45
|
end
|
46
|
-
|
47
|
-
|
48
46
|
end
|
49
47
|
end
|
50
48
|
end
|
51
49
|
end
|
52
|
-
end
|
50
|
+
end
|
@@ -2,23 +2,23 @@ module RubySMB
|
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
4
|
module Trans2
|
5
|
-
|
6
5
|
# This class represents a generic SMB1 Trans2 Secondary Request Packet as defined in
|
7
6
|
# [2.2.4.47.1 Request](https://msdn.microsoft.com/en-us/library/ee442105.aspx)
|
8
7
|
class RequestSecondary < RubySMB::GenericPacket
|
9
|
-
|
8
|
+
# The {RubySMB::SMB1::ParameterBlock} specific to this packet type.
|
10
9
|
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
|
-
uint16
|
10
|
+
uint16 :total_parameter_count, label: 'Total Parameter Count(bytes)'
|
12
11
|
uint16 :total_data_count, label: 'Total Data Count(bytes)'
|
13
|
-
uint16 :parameter_count, label: 'Parameter Count(bytes)', initial_value:
|
14
|
-
uint16 :parameter_offset, label: 'Parameter Offset', initial_value:
|
12
|
+
uint16 :parameter_count, label: 'Parameter Count(bytes)', initial_value: -> { parent.data_block.trans2_parameters.length }
|
13
|
+
uint16 :parameter_offset, label: 'Parameter Offset', initial_value: -> { parent.data_block.trans2_parameters.abs_offset }
|
15
14
|
uint16 :parameter_displacement, label: 'Parameter Displacement'
|
16
|
-
uint16 :data_count, label: 'Data Count(bytes)', initial_value:
|
17
|
-
uint16 :data_offset, label: 'Data Offset', initial_value:
|
15
|
+
uint16 :data_count, label: 'Data Count(bytes)', initial_value: -> { parent.data_block.trans2_data.length }
|
16
|
+
uint16 :data_offset, label: 'Data Offset', initial_value: -> { parent.data_block.trans2_data.abs_offset }
|
18
17
|
uint16 :data_displacement, label: 'Data Displacement'
|
19
18
|
uint16 :fid, label: 'FileID'
|
20
19
|
end
|
21
20
|
|
21
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
22
22
|
class DataBlock < RubySMB::SMB1::Packet::Trans2::Request::DataBlock
|
23
23
|
end
|
24
24
|
|
@@ -30,10 +30,8 @@ module RubySMB
|
|
30
30
|
super
|
31
31
|
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2_SECONDARY
|
32
32
|
end
|
33
|
-
|
34
|
-
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
39
|
-
end
|
37
|
+
end
|
@@ -2,31 +2,31 @@ module RubySMB
|
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
4
|
module Trans2
|
5
|
-
|
6
5
|
# This class represents a generic SMB1 Trans2 Response Packet as defined in
|
7
6
|
# [2.2.4.46.2 Response](https://msdn.microsoft.com/en-us/library/ee441550.aspx)
|
8
7
|
class Response < RubySMB::GenericPacket
|
9
|
-
|
8
|
+
# The {RubySMB::SMB1::ParameterBlock} specific to this packet type.
|
10
9
|
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
|
-
uint16
|
10
|
+
uint16 :total_parameter_count, label: 'Total Parameter Count(bytes)'
|
12
11
|
uint16 :total_data_count, label: 'Total Data Count(bytes)'
|
13
12
|
uint16 :reserved, label: 'Reserved Space', initial_value: 0x00
|
14
|
-
uint16 :parameter_count, label: 'Parameter Count(bytes)', initial_value:
|
15
|
-
uint16 :parameter_offset, label: 'Parameter Offset', initial_value:
|
13
|
+
uint16 :parameter_count, label: 'Parameter Count(bytes)', initial_value: -> { parent.data_block.trans2_parameters.length }
|
14
|
+
uint16 :parameter_offset, label: 'Parameter Offset', initial_value: -> { parent.data_block.trans2_parameters.abs_offset }
|
16
15
|
uint16 :parameter_displacement, label: 'Parameter Displacement'
|
17
|
-
uint16 :data_count, label: 'Data Count(bytes)', initial_value:
|
18
|
-
uint16 :data_offset, label: 'Data Offset', initial_value:
|
16
|
+
uint16 :data_count, label: 'Data Count(bytes)', initial_value: -> { parent.data_block.trans2_data.length }
|
17
|
+
uint16 :data_offset, label: 'Data Offset', initial_value: -> { parent.data_block.trans2_data.abs_offset }
|
19
18
|
uint16 :data_displacement, label: 'Data Displacement'
|
20
|
-
uint8 :setup_count, label: 'Setup Count', initial_value:
|
19
|
+
uint8 :setup_count, label: 'Setup Count', initial_value: -> { setup.length }
|
21
20
|
uint8 :reserved2, label: 'Reserved Space', initial_value: 0x00
|
22
21
|
|
23
22
|
array :setup, type: :uint16, initial_length: 0
|
24
23
|
end
|
25
24
|
|
25
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
26
26
|
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
27
|
-
string :pad1, length:
|
27
|
+
string :pad1, length: -> { pad1_length }
|
28
28
|
string :trans2_parameters, label: 'Trans2 Parameters'
|
29
|
-
string :pad2, length:
|
29
|
+
string :pad2, length: -> { pad2_length }
|
30
30
|
string :trans2_data, label: 'Trans2 Data'
|
31
31
|
end
|
32
32
|
|
@@ -39,10 +39,8 @@ module RubySMB
|
|
39
39
|
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
40
40
|
smb_header.flags.reply = 1
|
41
41
|
end
|
42
|
-
|
43
|
-
|
44
42
|
end
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
48
|
-
end
|
46
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# A Trans2 SET_FILE_INFORMATION Request Packet as defined in
|
6
|
+
# [2.2.6.9.1 Request](https://msdn.microsoft.com/en-us/library/ee441527.aspx)
|
7
|
+
class SetFileInformationRequest < RubySMB::GenericPacket
|
8
|
+
class ParameterBlock < RubySMB::SMB1::Packet::Trans2::Request::ParameterBlock
|
9
|
+
end
|
10
|
+
|
11
|
+
# The Trans2 Parameter Block for this particular Subcommand
|
12
|
+
class Trans2Parameters < BinData::Record
|
13
|
+
endian :little
|
14
|
+
|
15
|
+
uint16 :fid, label: 'FID'
|
16
|
+
uint16 :information_level, label: 'Information Level'
|
17
|
+
uint16 :reserved, label: 'Reserved Space'
|
18
|
+
|
19
|
+
# Returns the length of the Trans2Parameters struct
|
20
|
+
# in number of bytes
|
21
|
+
def length
|
22
|
+
do_num_bytes
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# The Trans2 Data Block for this particular Subcommand
|
27
|
+
class Trans2Data < BinData::Record
|
28
|
+
include RubySMB::Fscc::FileInformation
|
29
|
+
|
30
|
+
choice :info_level_struct, selection: -> { parent.trans2_parameters.information_level } do
|
31
|
+
# It supports new pass-through Information Level capabilities, as specified in
|
32
|
+
# [2.2.2.3.5 Pass-through Information Level Codes](https://msdn.microsoft.com/en-us/library/ff470158.aspx)
|
33
|
+
file_disposition_information (FILE_DISPOSITION_INFORMATION + SMB_INFO_PASSTHROUGH), label: 'File Disposition Information'
|
34
|
+
file_rename_information (FILE_RENAME_INFORMATION + SMB_INFO_PASSTHROUGH), label: 'File Rename Information'
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns the length of the Trans2Data struct
|
38
|
+
# in number of bytes
|
39
|
+
def length
|
40
|
+
do_num_bytes
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
45
|
+
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
46
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
47
|
+
string :pad1, length: -> { pad1_length }
|
48
|
+
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
49
|
+
string :pad2, length: -> { pad2_length }
|
50
|
+
trans2_data :trans2_data, label: 'Trans2 Data'
|
51
|
+
end
|
52
|
+
|
53
|
+
smb_header :smb_header
|
54
|
+
parameter_block :parameter_block
|
55
|
+
data_block :data_block
|
56
|
+
|
57
|
+
def initialize_instance
|
58
|
+
super
|
59
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
60
|
+
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::SET_FILE_INFORMATION
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# A Trans2 SET_FILE_INFORMATION Response Packet as defined in
|
6
|
+
# [2.2.6.9.2 Response](https://msdn.microsoft.com/en-us/library/ff469853.aspx)
|
7
|
+
class SetFileInformationResponse < RubySMB::GenericPacket
|
8
|
+
class ParameterBlock < RubySMB::SMB1::Packet::Trans2::Response::ParameterBlock
|
9
|
+
end
|
10
|
+
|
11
|
+
# The Trans2 Parameter Block for this particular Subcommand
|
12
|
+
class Trans2Parameters < BinData::Record
|
13
|
+
endian :little
|
14
|
+
|
15
|
+
uint16 :ea_error_offset, label: 'Extended Attribute Error Offset'
|
16
|
+
|
17
|
+
# Returns the length of the Trans2Parameters struct
|
18
|
+
# in number of bytes
|
19
|
+
def length
|
20
|
+
do_num_bytes
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# The Trans2 Data Block for this particular Subcommand
|
25
|
+
class Trans2Data < BinData::Record
|
26
|
+
|
27
|
+
# Returns the length of the Trans2Data struct
|
28
|
+
# in number of bytes
|
29
|
+
def length
|
30
|
+
do_num_bytes
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
35
|
+
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
36
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
37
|
+
string :pad1, length: -> { pad1_length }
|
38
|
+
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
39
|
+
string :pad2, length: -> { pad2_length }
|
40
|
+
trans2_data :trans2_data, label: 'Trans2 Data'
|
41
|
+
end
|
42
|
+
|
43
|
+
smb_header :smb_header
|
44
|
+
parameter_block :parameter_block
|
45
|
+
data_block :data_block
|
46
|
+
|
47
|
+
def initialize_instance
|
48
|
+
super
|
49
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
50
|
+
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::SET_FILE_INFORMATION
|
51
|
+
smb_header.flags.reply = 1
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
|
-
|
5
4
|
# This class represents an SMB1 TreeConnect Request Packet as defined in
|
6
5
|
# [2.2.4.7.1 Client Request Extensions](https://msdn.microsoft.com/en-us/library/cc246330.aspx)
|
7
6
|
class TreeConnectRequest < RubySMB::GenericPacket
|
8
|
-
|
9
7
|
# A SMB1 Parameter Block as defined by the {TreeConnectRequest}
|
10
8
|
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
9
|
and_x_block :andx_block
|
@@ -13,10 +11,11 @@ module RubySMB
|
|
13
11
|
uint16 :password_length, label: 'Password Length', initial_value: 0x01
|
14
12
|
end
|
15
13
|
|
14
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
16
15
|
class DataBlock < RubySMB::SMB1::DataBlock
|
17
|
-
stringz
|
16
|
+
stringz :password, label: 'Password Field', initial_value: '', length: -> { parent.parameter_block.password_length }
|
18
17
|
stringz :path, label: 'Resource Path'
|
19
|
-
stringz :service, label: 'Resource Type',
|
18
|
+
stringz :service, label: 'Resource Type', initial_value: '?????'
|
20
19
|
end
|
21
20
|
|
22
21
|
smb_header :smb_header
|
@@ -27,8 +26,7 @@ module RubySMB
|
|
27
26
|
super
|
28
27
|
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TREE_CONNECT
|
29
28
|
end
|
30
|
-
|
31
29
|
end
|
32
30
|
end
|
33
31
|
end
|
34
|
-
end
|
32
|
+
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
|
-
|
5
4
|
# A SMB1 TreeConnect Response Packet as defined in
|
6
5
|
# [2.2.4.7.2 Server Response Extensions](https://msdn.microsoft.com/en-us/library/cc246331.aspx)
|
7
6
|
class TreeConnectResponse < RubySMB::GenericPacket
|
8
|
-
|
9
7
|
# A SMB1 Parameter Block as defined by the {SessionSetupResponse}
|
10
8
|
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
9
|
and_x_block :andx_block
|
@@ -38,9 +36,9 @@ module RubySMB
|
|
38
36
|
# @return [RubySMB::SMB1::BitField::FileAccessMask] if anything else was connected to
|
39
37
|
def access_rights
|
40
38
|
if is_directory?
|
41
|
-
|
39
|
+
parameter_block.access_rights
|
42
40
|
else
|
43
|
-
mask =
|
41
|
+
mask = parameter_block.access_rights.to_binary_s
|
44
42
|
RubySMB::SMB1::BitField::FileAccessMask.read(mask)
|
45
43
|
end
|
46
44
|
end
|
@@ -53,9 +51,9 @@ module RubySMB
|
|
53
51
|
# @return [RubySMB::SMB1::BitField::FileAccessMask] if anything else was connected to
|
54
52
|
def guest_access_rights
|
55
53
|
if is_directory?
|
56
|
-
|
54
|
+
parameter_block.guest_access_rights
|
57
55
|
else
|
58
|
-
mask =
|
56
|
+
mask = parameter_block.guest_access_rights.to_binary_s
|
59
57
|
RubySMB::SMB1::BitField::FileAccessMask.read(mask)
|
60
58
|
end
|
61
59
|
end
|
@@ -66,7 +64,7 @@ module RubySMB
|
|
66
64
|
# @return [TrueClass] if service is 'A:'
|
67
65
|
# @return [FalseClass] if service is NOT 'A:'
|
68
66
|
def is_directory?
|
69
|
-
|
67
|
+
data_block.service == 'A:'
|
70
68
|
end
|
71
69
|
end
|
72
70
|
end
|
@@ -1,12 +1,11 @@
|
|
1
1
|
module RubySMB
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
|
-
|
5
4
|
# This class represents an SMB1 TreeDisonnect Request Packet as defined in
|
6
5
|
# [2.2.4.51.1 Request](https://msdn.microsoft.com/en-us/library/ee441622.aspx)
|
7
6
|
class TreeDisconnectRequest < RubySMB::GenericPacket
|
8
|
-
|
9
7
|
# The Parameter Block for this packet is empty save the Word Count
|
8
|
+
# The {RubySMB::SMB1::ParameterBlock} specific to this packet type.
|
10
9
|
class ParameterBlock < RubySMB::SMB1::ParameterBlock
|
11
10
|
end
|
12
11
|
|
@@ -22,8 +21,7 @@ module RubySMB
|
|
22
21
|
super
|
23
22
|
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TREE_DISCONNECT
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
27
25
|
end
|
28
26
|
end
|
29
|
-
end
|
27
|
+
end
|