/// <summary>
 /// Encode the struct of NtTransParameters into the byte array in SmbData.NT_Trans_Parameters
 /// </summary>
 protected override void EncodeNtTransParameters()
 {
     this.smbData.NT_Trans_Parameters =
         CifsMessageUtils.ToBytes <NT_TRANSACT_QUERY_SECURITY_DESC_Request_NT_Trans_Parameters>(
             this.ntTransParameters);
 }
 /// <summary>
 /// Encode the struct of SMB_COM_TRANSACTION_ErrorResponse_SMB_Data into the struct of SmbData
 /// </summary>
 protected override void EncodeData()
 {
     this.smbDataBlock = TypeMarshal.ToStruct <SmbData>(
         CifsMessageUtils.ToBytes <SMB_COM_TRANSACTION_InterimResponse_SMB_Data>(this.SmbData));
 }
 /// <summary>
 /// Encode the struct of SMB_COM_OPEN_ANDX_Response_SMB_Parameters into the struct of SmbParameters
 /// </summary>
 protected override void EncodeParameters()
 {
     this.smbParametersBlock = CifsMessageUtils.ToStuct <SmbParameters>(
         CifsMessageUtils.ToBytes <SMB_COM_OPEN_ANDX_Response_SMB_Parameters>(this.smbParameters));
 }
 /// <summary>
 /// Encode the struct of SMB_COM_WRITE_MPX_Request_SMB_Parameters into the struct of SmbParameters
 /// </summary>
 protected override void EncodeParameters()
 {
     this.smbParametersBlock = CifsMessageUtils.ToStuct <SmbParameters>(
         CifsMessageUtils.ToBytes <SMB_COM_WRITE_MPX_Request_SMB_Parameters>(this.smbParameters));
 }
 /// <summary>
 /// Encode the struct of TransData into the byte array in SmbData.Trans_Data
 /// </summary>
 protected override void EncodeTransData()
 {
     this.smbData.Trans_Data = CifsMessageUtils.ToBytes <ushort>(this.transData.OperationStatus);
 }
 /// <summary>
 /// Encode the struct of SMB_COM_CLOSE_Request_SMB_Data into the struct of SmbData
 /// </summary>
 protected override void EncodeData()
 {
     this.smbDataBlock = TypeMarshal.ToStruct <SmbData>(
         CifsMessageUtils.ToBytes <SMB_COM_CLOSE_Request_SMB_Data>(this.SmbData));
 }
 /// <summary>
 /// Encode the struct of Trans2Parameters into the byte array in SmbData.Trans2_Parameters
 /// </summary>
 protected override void EncodeTrans2Parameters()
 {
     this.smbData.Trans2_Parameters =
         CifsMessageUtils.ToBytes <TRANS2_QUERY_FILE_INFORMATION_Request_Trans2_Parameters>(
             this.trans2Parameters);
 }
예제 #8
0
 /// <summary>
 /// Encode the struct of SMB_COM_QUERY_INFORMATION_Response_SMB_Data into the struct of SmbData
 /// </summary>
 protected override void EncodeData()
 {
     this.smbDataBlock = TypeMarshal.ToStruct <SmbData>(
         CifsMessageUtils.ToBytes <SMB_COM_QUERY_INFORMATION_Response_SMB_Data>(this.SmbData));
 }
 /// <summary>
 /// Encode the struct of SMB_COM_LOCK_BYTE_RANGE_Response_SMB_Parameters into the struct of SmbParameters
 /// </summary>
 protected override void EncodeParameters()
 {
     this.smbParametersBlock = TypeMarshal.ToStruct <SmbParameters>(
         CifsMessageUtils.ToBytes <SMB_COM_LOCK_BYTE_RANGE_Response_SMB_Parameters>(this.smbParameters));
 }
 /// <summary>
 /// Encode the struct of Trans2Parameters into the byte array in SmbData.Trans2_Parameters
 /// </summary>
 protected override void EncodeTrans2Parameters()
 {
     this.smbData.Trans2_Parameters = CifsMessageUtils.ToBytes <
         TRANS2_SET_PATH_INFORMATION_Response_Trans2_Parameters>(this.trans2Parameters);
 }
예제 #11
0
 /// <summary>
 /// Encode the struct of SMB_COM_QUERY_INFORMATION_Response_SMB_Parameters into the struct of SmbParameters
 /// </summary>
 protected override void EncodeParameters()
 {
     this.smbParametersBlock = TypeMarshal.ToStruct <SmbParameters>(
         CifsMessageUtils.ToBytes <SMB_COM_QUERY_INFORMATION_Response_SMB_Parameters>(this.smbParameters));
 }
 /// <summary>
 /// Encode the struct of TransParameters into the byte array in SmbData.Trans_Parameters
 /// </summary>
 protected override void EncodeTransParameters()
 {
     this.smbData.Trans_Parameters = CifsMessageUtils.ToBytes <TRANS_QUERY_NMPIPE_INFO_Request_Trans_Parameters>(
         this.transParameters);
 }
예제 #13
0
        protected override void DecodeTrans2Data()
        {
            if (this.smbData.Trans2_Data != null && this.smbData.Trans2_Data.Length > 0)
            {
                switch (this.informationLevel)
                {
                case QueryInformationLevel.SMB_INFO_STANDARD:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_INFO_STANDARD_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_INFO_QUERY_EA_SIZE:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_INFO_QUERY_EA_SIZE_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_INFO_QUERY_EAS_FROM_LIST:
                    if (this.smbData.Trans2_Data != null && this.smbData.Trans2_Data.Length > 0)
                    {
                        using (MemoryStream memoryStream = new MemoryStream(this.smbData.Trans2_Data))
                        {
                            using (Channel channel = new Channel(null, memoryStream))
                            {
                                SMB_INFO_QUERY_EAS_FROM_LIST_OF_TRANS2_QUERY_PATH_INFORMATION data = new
                                                                                                     SMB_INFO_QUERY_EAS_FROM_LIST_OF_TRANS2_QUERY_PATH_INFORMATION();
                                data.SizeOfListInBytes = channel.Read <uint>();
                                uint           sizeOfListInBytes = data.SizeOfListInBytes - sizeOfListInBytesLength;
                                List <SMB_FEA> attributeList     = new List <SMB_FEA>();

                                while (sizeOfListInBytes > 0)
                                {
                                    SMB_FEA smbEa = channel.Read <SMB_FEA>();
                                    attributeList.Add(smbEa);
                                    sizeOfListInBytes -= (uint)(EA.SMB_EA_FIXED_SIZE + smbEa.AttributeName.Length +
                                                                smbEa.ValueName.Length);
                                }
                                data.ExtendedAttributeList = attributeList.ToArray();
                                this.trans2Data.Data       = data;
                            }
                        }
                    }
                    break;

                case QueryInformationLevel.SMB_INFO_QUERY_ALL_EAS:
                    if (this.smbData.Trans2_Data != null && this.smbData.Trans2_Data.Length > 0)
                    {
                        using (MemoryStream memoryStream = new MemoryStream(this.smbData.Trans2_Data))
                        {
                            using (Channel channel = new Channel(null, memoryStream))
                            {
                                SMB_INFO_QUERY_ALL_EAS_OF_TRANS2_QUERY_PATH_INFORMATION easData = new
                                                                                                  SMB_INFO_QUERY_ALL_EAS_OF_TRANS2_QUERY_PATH_INFORMATION();
                                easData.SizeOfListInBytes = channel.Read <uint>();
                                uint           sizeOfList = easData.SizeOfListInBytes - sizeOfListInBytesLength;
                                List <SMB_FEA> eaList     = new List <SMB_FEA>();

                                while (sizeOfList > 0)
                                {
                                    SMB_FEA smbEa = channel.Read <SMB_FEA>();
                                    eaList.Add(smbEa);
                                    sizeOfList -= (uint)(EA.SMB_EA_FIXED_SIZE + smbEa.AttributeName.Length +
                                                         smbEa.ValueName.Length);
                                }
                                easData.ExtendedAttributeList = eaList.ToArray();
                                this.trans2Data.Data          = easData;
                            }
                        }
                    }
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_BASIC_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_BASIC_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_STANDARD_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_STANDARD_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_EA_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_EA_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_NAME_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_ALL_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_ALL_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_ALT_NAME_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_ALT_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_STREAM_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_STREAM_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;

                case QueryInformationLevel.SMB_QUERY_FILE_COMPRESSION_INFO:
                    this.trans2Data.Data = CifsMessageUtils.ToStuct <
                        SMB_QUERY_FILE_COMPRESSION_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(this.smbData.Trans2_Data);
                    break;
                }
            }
        }
예제 #14
0
        /// <summary>
        /// Encode the struct of Trans2Data into the byte array in SmbData.Trans2_Data
        /// </summary>
        protected override void EncodeTrans2Data()
        {
            if (this.trans2Data.Data != null)
            {
                Type type = this.trans2Data.Data.GetType();

                if (type == typeof(SMB_INFO_STANDARD_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_INFO_STANDARD_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_INFO_STANDARD_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_INFO_QUERY_EA_SIZE_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_INFO_QUERY_EA_SIZE_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_INFO_QUERY_EA_SIZE_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_INFO_QUERY_EAS_FROM_LIST_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    SMB_INFO_QUERY_EAS_FROM_LIST_OF_TRANS2_QUERY_PATH_INFORMATION data =
                        (SMB_INFO_QUERY_EAS_FROM_LIST_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data;

                    if (data.ExtendedAttributeList != null)
                    {
                        this.smbData.Trans2_Data = new byte[data.SizeOfListInBytes];
                        using (MemoryStream memoryStream = new MemoryStream(this.smbData.Trans2_Data))
                        {
                            using (Channel channel = new Channel(null, memoryStream))
                            {
                                channel.BeginWriteGroup();
                                channel.Write <uint>(data.SizeOfListInBytes);

                                foreach (SMB_FEA smbEa in data.ExtendedAttributeList)
                                {
                                    channel.Write <SMB_FEA>(smbEa);
                                }
                                channel.EndWriteGroup();
                            }
                        }
                    }
                }

                else if (type == typeof(SMB_INFO_QUERY_ALL_EAS_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    SMB_INFO_QUERY_ALL_EAS_OF_TRANS2_QUERY_PATH_INFORMATION easData =
                        (SMB_INFO_QUERY_ALL_EAS_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data;

                    if (easData.ExtendedAttributeList != null)
                    {
                        this.smbData.Trans2_Data = new byte[easData.SizeOfListInBytes];
                        using (MemoryStream memoryStream = new MemoryStream(this.smbData.Trans2_Data))
                        {
                            using (Channel channel = new Channel(null, memoryStream))
                            {
                                channel.BeginWriteGroup();
                                channel.Write <uint>(easData.SizeOfListInBytes);

                                foreach (SMB_FEA smbEa in easData.ExtendedAttributeList)
                                {
                                    channel.Write <SMB_FEA>(smbEa);
                                }
                                channel.EndWriteGroup();
                            }
                        }
                    }
                }

                else if (type == typeof(SMB_QUERY_FILE_BASIC_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_BASIC_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_BASIC_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_STANDARD_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_STANDARD_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_STANDARD_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_EA_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_EA_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_EA_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_ALL_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_ALL_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_ALL_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_ALT_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_ALT_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_ALT_NAME_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_STREAM_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_STREAM_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_STREAM_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else if (type == typeof(SMB_QUERY_FILE_COMPRESSION_INFO_OF_TRANS2_QUERY_PATH_INFORMATION))
                {
                    this.smbData.Trans2_Data = CifsMessageUtils.ToBytes <
                        SMB_QUERY_FILE_COMPRESSION_INFO_OF_TRANS2_QUERY_PATH_INFORMATION>(
                        (SMB_QUERY_FILE_COMPRESSION_INFO_OF_TRANS2_QUERY_PATH_INFORMATION)this.trans2Data.Data);
                }

                else
                {
                    // Branch for negative testing.
                }
            }
            else
            {
                this.smbData.Trans2_Data = new byte[0];
            }
        }
 /// <summary>
 /// Encode the struct of TransParameters into the byte array in SmbData.Trans_Parameters
 /// </summary>
 protected override void EncodeTransParameters()
 {
     this.smbData.Trans_Parameters =
         CifsMessageUtils.ToBytes <TRANS_PEEK_NMPIPE_Response_Trans_Parameters>(this.transParameters);
 }
 /// <summary>
 /// Encode the struct of SMB_COM_LOCK_BYTE_RANGE_Response_SMB_Data into the struct of SmbData
 /// </summary>
 protected override void EncodeData()
 {
     this.smbDataBlock = TypeMarshal.ToStruct <SmbData>(
         CifsMessageUtils.ToBytes <SMB_COM_LOCK_BYTE_RANGE_Response_SMB_Data>(this.SmbData));
 }
 /// <summary>
 /// Encode the struct of SMB_COM_CLOSE_Request_SMB_Parameters into the struct of SmbParameters
 /// </summary>
 protected override void EncodeParameters()
 {
     this.smbParametersBlock = TypeMarshal.ToStruct <SmbParameters>(
         CifsMessageUtils.ToBytes <SMB_COM_CLOSE_Request_SMB_Parameters>(this.smbParameters));
 }
 /// <summary>
 /// Encode the struct of TransParameters into the byte array in SmbData.Trans_Parameters
 /// </summary>
 protected override void EncodeTransParameters()
 {
     this.smbData.Trans_Parameters = CifsMessageUtils.ToBytes <TRANS_SET_NMPIPE_STATE_RequestTransParameters>(
         this.transParameters);
 }
 /// <summary>
 /// Encode the struct of SMB_COM_TRANSACTION2_FinalResponse_SMB_Parameters into the struct of SmbParameters
 /// </summary>
 protected override void EncodeParameters()
 {
     this.smbParametersBlock = TypeMarshal.ToStruct <SmbParameters>(
         CifsMessageUtils.ToBytes <SMB_COM_TRANSACTION2_FinalResponse_SMB_Parameters>(this.smbParameters));
 }
 /// <summary>
 /// to decode the NtTrans data: from the general NtTransDada to the concrete NtTrans Data.
 /// </summary>
 protected override void DecodeNtTransData()
 {
     this.NtTransData =
         CifsMessageUtils.ToStuct <NT_TRANSACT_COPY_CHUNK_Response_NT_Trans_Data>(this.smbData.Data);
 }