/// <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); }
/// <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); }
/// <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); }
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; } } }
/// <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); }