Exemple #1
0
        public void Disconnect()
        {
            TreeDisconnectRequest request = new TreeDisconnectRequest();

            SendCommand(request);
            SMB2Command response = WaitForCommand(request.MessageID);

            response.IsSuccessElseThrow();
        }
Exemple #2
0
        public void CloseFile(NtHandle handle)
        {
            CloseRequest request = new CloseRequest
            {
                FileId = (FileID)handle
            };

            SendCommand(request);
            SMB2Command?response = WaitForCommand(request.MessageID);

            if (response.Header.Status != NTStatus.STATUS_FILE_CLOSED)
            {
                response?.IsSuccessElseThrow();
            }
        }
Exemple #3
0
        public void SetFileInformation(NtHandle handle, FileInformation information)
        {
            SetInfoRequest request = new SetInfoRequest
            {
                InfoType             = InfoType.File,
                FileInformationClass = information.FileInformationClass,
                FileId = (FileID)handle
            };

            request.SetFileInformation(information);

            SendCommand(request);
            SMB2Command response = WaitForCommand(request.MessageID);

            response.IsSuccessElseThrow();
        }
Exemple #4
0
        public void GetSecurityInformation(out SecurityDescriptor?result, NtHandle handle, SecurityInformation securityInformation)
        {
            result = null;

            QueryInfoRequest request = new QueryInfoRequest
            {
                InfoType            = InfoType.Security,
                SecurityInformation = securityInformation,
                OutputBufferLength  = 4096,
                FileId = (FileID)handle
            };

            SendCommand(request);
            SMB2Command response = WaitForCommand(request.MessageID);

            response.IsSuccessElseThrow();

            if (response is QueryInfoResponse queryInfoResponse)
            {
                result = queryInfoResponse.GetSecurityInformation();
            }
        }