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
@@ -0,0 +1,77 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# A Trans2 FIND_FIRST2 Request Packet as defined in
|
6
|
+
# [2.2.6.2.1](https://msdn.microsoft.com/en-us/library/ee441987.aspx)
|
7
|
+
class FindFirst2Request < 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
|
+
smb_file_attributes :search_attributes, label: 'File Attributes'
|
15
|
+
uint16 :search_count, label: 'Search Count'
|
16
|
+
|
17
|
+
struct :flags do
|
18
|
+
bit3 :reserved, label: 'Reserved Space'
|
19
|
+
bit1 :backup, label: 'With Backup Intent'
|
20
|
+
bit1 :continue, label: 'Continue From Last'
|
21
|
+
bit1 :resume_keys, label: 'Return Resume Keys'
|
22
|
+
bit1 :close_eos, label: 'Close at End of Search'
|
23
|
+
bit1 :close, label: 'Close Search After This Request'
|
24
|
+
|
25
|
+
bit8 :reserved2, label: 'Reserved Space'
|
26
|
+
end
|
27
|
+
|
28
|
+
uint16 :information_level, label: 'Information Level'
|
29
|
+
uint32 :storage_type, label: 'Search Storage type'
|
30
|
+
|
31
|
+
choice :filename, :copy_on_change => true, selection: -> { self.smb_header.flags2.unicode } do
|
32
|
+
stringz16 1, label: 'FileName'
|
33
|
+
stringz 0, label: 'FileName'
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns the length of the Trans2Parameters struct
|
37
|
+
# in number of bytes
|
38
|
+
def length
|
39
|
+
do_num_bytes
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# The Trans2 Data Blcok for this particular Subcommand
|
44
|
+
class Trans2Data < BinData::Record
|
45
|
+
smb_gea_list :extended_attribute_list, label: 'Get Extended Attribute List',
|
46
|
+
onlyif: -> { parent.trans2_parameters.information_level == FindInformationLevel::SMB_INFO_QUERY_EAS_FROM_LIST}
|
47
|
+
|
48
|
+
# Returns the length of the Trans2Data struct
|
49
|
+
# in number of bytes
|
50
|
+
def length
|
51
|
+
do_num_bytes
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
56
|
+
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
57
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
58
|
+
string :pad1, length: -> { pad1_length }
|
59
|
+
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
60
|
+
string :pad2, length: -> { pad2_length }
|
61
|
+
trans2_data :trans2_data, label: 'Trans2 Data'
|
62
|
+
end
|
63
|
+
|
64
|
+
smb_header :smb_header
|
65
|
+
parameter_block :parameter_block
|
66
|
+
data_block :data_block
|
67
|
+
|
68
|
+
def initialize_instance
|
69
|
+
super
|
70
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
71
|
+
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::FIND_FIRST2
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# This class represents an SMB1 Trans2 FIND_FIRST2 Response Packet as defined in
|
6
|
+
# [2.2.6.2.2 Response](https://msdn.microsoft.com/en-us/library/ee441704.aspx)
|
7
|
+
class FindFirst2Response < 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 :sid, label: 'Search ID'
|
16
|
+
uint16 :search_count, label: 'Search Count'
|
17
|
+
uint16 :eos, label: 'End of Search'
|
18
|
+
uint16 :ea_error_offset, label: 'Offset to EA Error'
|
19
|
+
uint16 :last_name_offset, label: 'Last Name Offset'
|
20
|
+
|
21
|
+
# Returns the length of the Trans2Parameters struct
|
22
|
+
# in number of bytes
|
23
|
+
def length
|
24
|
+
do_num_bytes
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# The Trans2 Data Blcok for this particular Subcommand
|
29
|
+
class Trans2Data < BinData::Record
|
30
|
+
rest :buffer, label: 'Results Buffer'
|
31
|
+
|
32
|
+
# Returns the length of the Trans2Data struct
|
33
|
+
# in number of bytes
|
34
|
+
def length
|
35
|
+
do_num_bytes
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
40
|
+
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
41
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
42
|
+
string :pad1, length: -> { pad1_length }
|
43
|
+
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
44
|
+
string :pad2, length: -> { pad2_length }
|
45
|
+
trans2_data :trans2_data, label: 'Trans2 Data', length: 0
|
46
|
+
end
|
47
|
+
|
48
|
+
smb_header :smb_header
|
49
|
+
parameter_block :parameter_block
|
50
|
+
data_block :data_block
|
51
|
+
|
52
|
+
def initialize_instance
|
53
|
+
super
|
54
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
55
|
+
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::FIND_FIRST2
|
56
|
+
smb_header.flags.reply = 1
|
57
|
+
end
|
58
|
+
|
59
|
+
# Returns the File Information in an array of appropriate
|
60
|
+
# structs for the given FileInformationClass. Pulled out of
|
61
|
+
# the string buffer.
|
62
|
+
#
|
63
|
+
# @param klass [Class] the FileInformationClass class to read the data as
|
64
|
+
# @return [array<BinData::Record>] An array of structs holding the requested information
|
65
|
+
def results(klass, unicode:)
|
66
|
+
information_classes = []
|
67
|
+
blob = data_block.trans2_data.buffer.to_binary_s.dup
|
68
|
+
until blob.empty?
|
69
|
+
length = blob[0, 4].unpack('V').first
|
70
|
+
|
71
|
+
data = if length.zero?
|
72
|
+
blob.slice!(0, blob.length)
|
73
|
+
else
|
74
|
+
blob.slice!(0, length)
|
75
|
+
end
|
76
|
+
|
77
|
+
file_info = klass.new
|
78
|
+
file_info.unicode = unicode
|
79
|
+
information_classes << file_info.read(data)
|
80
|
+
end
|
81
|
+
information_classes
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# FIND information levels are used in TRANS2_FIND_FIRST2 (section 2.2.6.2) and
|
6
|
+
# TRANS2_FIND_NEXT2 (section 2.2.6.3) subcommand requests to indicate the level
|
7
|
+
# of information that a server MUST respond with for each file matching the
|
8
|
+
# request's search criteria.
|
9
|
+
module FindInformationLevel
|
10
|
+
# Return creation, access, and last write timestamps, size and file attributes along with the file name.
|
11
|
+
SMB_INFO_STANDARD = 0x0001
|
12
|
+
# Return the SMB_INFO_STANDARD data along with the size of a file's extended attributes (EAs).
|
13
|
+
SMB_INFO_QUERY_EA_SIZE = 0x0002
|
14
|
+
# Return the SMB_INFO_QUERY_EA_SIZE data along with a specific list of a file's EAs. The requested EAs are provided in the Trans2_Data block of the request.
|
15
|
+
SMB_INFO_QUERY_EAS_FROM_LIST = 0x0003
|
16
|
+
# Return 64-bit format versions of: creation, access, last write, and last attribute change timestamps; size. In addition, return extended file attributes and file name.
|
17
|
+
SMB_FIND_FILE_DIRECTORY_INFO = 0x0101
|
18
|
+
# Returns the SMB_FIND_FILE_DIRECTORY_INFO data along with the size of a file's EAs.
|
19
|
+
SMB_FIND_FILE_FULL_DIRECTORY_INFO = 0x0102
|
20
|
+
# Returns the name(s) of the file(s).
|
21
|
+
SMB_FIND_FILE_NAMES_INFO = 0x0103
|
22
|
+
# Returns a combination of the data from SMB_FIND_FILE_FULL_DIRECTORY_INFO and SMB_FIND_FILE_NAMES_INFO.
|
23
|
+
SMB_FIND_FILE_BOTH_DIRECTORY_INFO = 0x0104
|
24
|
+
|
25
|
+
|
26
|
+
require 'ruby_smb/smb1/packet/trans2/find_information_level/find_file_full_directory_info'
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
module FindInformationLevel
|
6
|
+
# The SMB_FIND_FILE_FULL_DIRECTORY_INFO class as defined in
|
7
|
+
# [2.2.8.1.5 SMB_FIND_FILE_FULL_DIRECTORY_INFO](https://msdn.microsoft.com/en-us/library/ff470042.aspx)
|
8
|
+
class FindFileFullDirectoryInfo < BinData::Record
|
9
|
+
CLASS_LEVEL = FindInformationLevel::SMB_FIND_FILE_FULL_DIRECTORY_INFO
|
10
|
+
|
11
|
+
endian :little
|
12
|
+
|
13
|
+
uint32 :next_offset, label: 'Next Entry Offset'
|
14
|
+
uint32 :file_index, label: 'File Index'
|
15
|
+
file_time :create_time, label: 'Create Time'
|
16
|
+
file_time :last_access, label: 'Last Accessed Time'
|
17
|
+
file_time :last_write, label: 'Last Write Time'
|
18
|
+
file_time :last_change, label: 'Last Attribute Change Time'
|
19
|
+
uint64 :end_of_file, label: 'End of File'
|
20
|
+
uint64 :allocation_size, label: 'Allocated Size'
|
21
|
+
smb_ext_file_attributes :ext_file_attributes, label: 'Extended File Attributes'
|
22
|
+
uint32 :file_name_length, label: 'File Name Length', initial_value: -> { file_name.do_num_bytes }
|
23
|
+
uint32 :ea_size, label: 'Extended Attributes Size'
|
24
|
+
|
25
|
+
choice :file_name, :copy_on_change => true, selection: -> { unicode } do
|
26
|
+
string16 true, label: 'File Name', read_length: -> { file_name_length }
|
27
|
+
stringz false, label: 'File Name', read_length: -> { file_name_length }
|
28
|
+
end
|
29
|
+
|
30
|
+
# Set unicode encoding for filename
|
31
|
+
# @!attribute [rw] unicode
|
32
|
+
# @return [Boolean]
|
33
|
+
attr_accessor :unicode
|
34
|
+
|
35
|
+
def initialize_instance
|
36
|
+
super
|
37
|
+
@unicode = false
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# A Trans2 FIND_NEXT2 Request Packet as defined in
|
6
|
+
# [2.2.6.3.1 Request](https://msdn.microsoft.com/en-us/library/ee441844.aspx)
|
7
|
+
class FindNext2Request < 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 :sid, label: 'Search ID'
|
16
|
+
uint16 :search_count, label: 'Search Count'
|
17
|
+
uint16 :information_level, label: 'Information Level'
|
18
|
+
uint32 :resume_key, label: 'Resume Key'
|
19
|
+
|
20
|
+
struct :flags do
|
21
|
+
bit3 :reserved, label: 'Reserved Space'
|
22
|
+
bit1 :backup, label: 'With Backup Intent'
|
23
|
+
bit1 :continue, label: 'Continue From Last'
|
24
|
+
bit1 :resume_keys, label: 'Return Resume Keys'
|
25
|
+
bit1 :close_eos, label: 'Close at End of Search'
|
26
|
+
bit1 :close, label: 'Close Search After This Request'
|
27
|
+
|
28
|
+
bit8 :reserved2, label: 'Reserved Space'
|
29
|
+
end
|
30
|
+
|
31
|
+
choice :filename, :copy_on_change => true, selection: -> { @obj.parent.parent.parent.smb_header.flags2.unicode } do
|
32
|
+
stringz16 1, label: 'FileName'
|
33
|
+
stringz 0, label: 'FileName'
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns the length of the Trans2Parameters struct
|
37
|
+
# in number of bytes
|
38
|
+
def length
|
39
|
+
do_num_bytes
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# The Trans2 Data Blcok for this particular Subcommand
|
44
|
+
class Trans2Data < BinData::Record
|
45
|
+
smb_gea_list :extended_attribute_list, label: 'Get Extended Attribute List',
|
46
|
+
onlyif: -> { parent.trans2_parameters.information_level == FindInformationLevel::SMB_INFO_QUERY_EAS_FROM_LIST}
|
47
|
+
|
48
|
+
# Returns the length of the Trans2Data struct
|
49
|
+
# in number of bytes
|
50
|
+
def length
|
51
|
+
do_num_bytes
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
56
|
+
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
57
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
58
|
+
string :pad1, length: -> { pad1_length }
|
59
|
+
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
60
|
+
string :pad2, length: -> { pad2_length }
|
61
|
+
trans2_data :trans2_data, label: 'Trans2 Data'
|
62
|
+
end
|
63
|
+
|
64
|
+
smb_header :smb_header
|
65
|
+
parameter_block :parameter_block
|
66
|
+
data_block :data_block
|
67
|
+
|
68
|
+
def initialize_instance
|
69
|
+
super
|
70
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
71
|
+
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::FIND_NEXT2
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module RubySMB
|
2
|
+
module SMB1
|
3
|
+
module Packet
|
4
|
+
module Trans2
|
5
|
+
# This class represents an SMB1 Trans2 FIND_NEXT2 Response Packet as defined in
|
6
|
+
# [2.2.6.3.2 Response](https://msdn.microsoft.com/en-us/library/ee441871.aspx)
|
7
|
+
class FindNext2Response < 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 :search_count, label: 'Search Count'
|
16
|
+
uint16 :eos, label: 'End of Search'
|
17
|
+
uint16 :ea_error_offset, label: 'Offset to EA Error'
|
18
|
+
uint16 :last_name_offset, label: 'Last Name Offset'
|
19
|
+
|
20
|
+
# Returns the length of the Trans2Parameters struct
|
21
|
+
# in number of bytes
|
22
|
+
def length
|
23
|
+
do_num_bytes
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# The Trans2 Data Blcok for this particular Subcommand
|
28
|
+
class Trans2Data < BinData::Record
|
29
|
+
rest :buffer, label: 'Results Buffer'
|
30
|
+
|
31
|
+
# Returns the length of the Trans2Data struct
|
32
|
+
# in number of bytes
|
33
|
+
def length
|
34
|
+
do_num_bytes
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
39
|
+
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
40
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
41
|
+
string :pad1, length: -> { pad1_length }
|
42
|
+
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
43
|
+
string :pad2, length: -> { pad2_length }
|
44
|
+
trans2_data :trans2_data, label: 'Trans2 Data', length: 0
|
45
|
+
end
|
46
|
+
|
47
|
+
smb_header :smb_header
|
48
|
+
parameter_block :parameter_block
|
49
|
+
data_block :data_block
|
50
|
+
|
51
|
+
def initialize_instance
|
52
|
+
super
|
53
|
+
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|
54
|
+
parameter_block.setup << RubySMB::SMB1::Packet::Trans2::Subcommands::FIND_NEXT2
|
55
|
+
smb_header.flags.reply = 1
|
56
|
+
end
|
57
|
+
|
58
|
+
# Returns the File Information in an array of appropriate
|
59
|
+
# structs for the given FileInformationClass. Pulled out of
|
60
|
+
# the string buffer.
|
61
|
+
#
|
62
|
+
# @param klass [Class] the FileInformationClass class to read the data as
|
63
|
+
# @return [array<BinData::Record>] An array of structs holding the requested information
|
64
|
+
def results(klass, unicode:)
|
65
|
+
information_classes = []
|
66
|
+
blob = data_block.trans2_data.buffer.to_binary_s.dup
|
67
|
+
until blob.empty?
|
68
|
+
length = blob[0, 4].unpack('V').first
|
69
|
+
|
70
|
+
data = if length.zero?
|
71
|
+
blob.slice!(0, blob.length)
|
72
|
+
else
|
73
|
+
blob.slice!(0, length)
|
74
|
+
end
|
75
|
+
|
76
|
+
file_info = klass.new
|
77
|
+
file_info.unicode = unicode
|
78
|
+
information_classes << file_info.read(data)
|
79
|
+
end
|
80
|
+
information_classes
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -2,14 +2,13 @@ module RubySMB
|
|
2
2
|
module SMB1
|
3
3
|
module Packet
|
4
4
|
module Trans2
|
5
|
-
|
6
5
|
# A Trans2 OPEN2 Request Packet as defined in
|
7
6
|
# [2.2.6.1.1 Request](https://msdn.microsoft.com/en-us/library/ee441733.aspx)
|
8
7
|
class Open2Request < RubySMB::GenericPacket
|
9
|
-
|
10
8
|
class ParameterBlock < RubySMB::SMB1::Packet::Trans2::Request::ParameterBlock
|
11
9
|
end
|
12
10
|
|
11
|
+
# The Trans2 Parameter Block for this particular Subcommand
|
13
12
|
class Trans2Parameters < BinData::Record
|
14
13
|
endian :little
|
15
14
|
open2_flags :flags, label: 'Flags'
|
@@ -19,27 +18,29 @@ module RubySMB
|
|
19
18
|
utime :creation_time, label: 'Creation Time'
|
20
19
|
open2_open_mode :open_mode, label: 'Open Mode'
|
21
20
|
uint32 :allocation_size, label: 'Allocation Size'
|
22
|
-
array :reserved2,
|
21
|
+
array :reserved2, initial_length: 5 do
|
23
22
|
uint16 initial_value: 0x0000
|
24
23
|
end
|
25
|
-
stringz
|
24
|
+
stringz :filename, label: 'Filename'
|
26
25
|
|
27
26
|
# Returns the length of the Trans2Parameters struct
|
28
27
|
# in number of bytes
|
29
28
|
def length
|
30
|
-
|
29
|
+
do_num_bytes
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
33
|
+
# The Trans2 Data Blcok for this particular Subcommand
|
34
34
|
class Trans2Data < BinData::Record
|
35
|
-
smb_fea_list
|
35
|
+
smb_fea_list :extended_attribute_list, label: 'Extended Attribute List'
|
36
36
|
end
|
37
37
|
|
38
|
+
# The {RubySMB::SMB1::DataBlock} specific to this packet type.
|
38
39
|
class DataBlock < RubySMB::SMB1::Packet::Trans2::DataBlock
|
39
|
-
uint8 :name, label: 'Name',
|
40
|
-
string :pad1, length:
|
40
|
+
uint8 :name, label: 'Name', initial_value: 0x00
|
41
|
+
string :pad1, length: -> { pad1_length }
|
41
42
|
trans2_parameters :trans2_parameters, label: 'Trans2 Parameters'
|
42
|
-
string :pad2, length:
|
43
|
+
string :pad2, length: -> { pad2_length }
|
43
44
|
trans2_data :trans2_data, label: 'Trans2 Data'
|
44
45
|
end
|
45
46
|
|
@@ -47,7 +48,6 @@ module RubySMB
|
|
47
48
|
parameter_block :parameter_block
|
48
49
|
data_block :data_block
|
49
50
|
|
50
|
-
|
51
51
|
def initialize_instance
|
52
52
|
super
|
53
53
|
smb_header.command = RubySMB::SMB1::Commands::SMB_COM_TRANSACTION2
|