public override byte[] GetBytes(bool isUnicode) { ChallengeLength = (byte)Challenge.Length; SMBParameters = new byte[ParametersLength]; LittleEndianWriter.WriteUInt16(SMBParameters, 0, DialectIndex); ByteWriter.WriteByte(SMBParameters, 2, (byte)SecurityMode); LittleEndianWriter.WriteUInt16(SMBParameters, 3, MaxMpxCount); LittleEndianWriter.WriteUInt16(SMBParameters, 5, MaxNumberVcs); LittleEndianWriter.WriteUInt32(SMBParameters, 7, MaxBufferSize); LittleEndianWriter.WriteUInt32(SMBParameters, 11, MaxRawSize); LittleEndianWriter.WriteUInt32(SMBParameters, 15, SessionKey); LittleEndianWriter.WriteUInt32(SMBParameters, 19, (uint)Capabilities); FileTimeHelper.WriteFileTime(SMBParameters, 23, SystemTime); LittleEndianWriter.WriteInt16(SMBParameters, 31, ServerTimeZone); ByteWriter.WriteByte(SMBParameters, 33, ChallengeLength); // [MS-CIFS] <90> Padding is not added before DomainName // DomainName and ServerName are always in Unicode SMBData = new byte[Challenge.Length + (DomainName.Length + 1) * 2 + (ServerName.Length + 1) * 2]; int offset = 0; ByteWriter.WriteBytes(SMBData, ref offset, Challenge); SMB1Helper.WriteSMBString(SMBData, ref offset, true, DomainName); SMB1Helper.WriteSMBString(SMBData, ref offset, true, ServerName); return(base.GetBytes(isUnicode)); }
public QueryFSVolumeInfo(byte[] buffer, int offset) { VolumeCreationTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + 0); SerialNumber = LittleEndianConverter.ToUInt32(buffer, offset + 8); VolumeLabelSize = LittleEndianConverter.ToUInt32(buffer, offset + 12); Reserved = LittleEndianConverter.ToUInt16(buffer, offset + 16); VolumeLabel = ByteReader.ReadUTF16String(buffer, offset + 18, (int)VolumeLabelSize); }
public SetFileBasicInfo(byte[] buffer, int offset) { CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + 0); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + 8); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + 16); LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + 24); ExtFileAttributes = (ExtendedFileAttributes)LittleEndianConverter.ToUInt32(buffer, offset + 32); Reserved = LittleEndianConverter.ToUInt32(buffer, offset + 36); }
public QueryFileBasicInfo(byte[] buffer, int offset) { CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset); Reserved = LittleEndianReader.ReadUInt32(buffer, ref offset); }
public override byte[] GetBytes() { byte[] buffer = new byte[Length]; FileTimeHelper.WriteFileTime(buffer, 0, CreationTime); FileTimeHelper.WriteFileTime(buffer, 8, LastAccessTime); FileTimeHelper.WriteFileTime(buffer, 16, LastWriteTime); FileTimeHelper.WriteFileTime(buffer, 24, LastChangeTime); LittleEndianWriter.WriteUInt32(buffer, 32, (uint)ExtFileAttributes); LittleEndianWriter.WriteUInt32(buffer, 36, Reserved); return(buffer); }
public NTLMv2ClientChallenge(byte[] buffer, int offset) { CurrentVersion = ByteReader.ReadByte(buffer, offset + 0); MaximumSupportedVersion = ByteReader.ReadByte(buffer, offset + 1); Reserved1 = LittleEndianConverter.ToUInt16(buffer, offset + 2); Reserved2 = LittleEndianConverter.ToUInt32(buffer, offset + 4); TimeStamp = FileTimeHelper.ReadFileTime(buffer, offset + 8); ClientChallenge = ByteReader.ReadBytes(buffer, offset + 16, 8); Reserved3 = LittleEndianConverter.ToUInt32(buffer, offset + 24); AVPairs = AVPairUtils.ReadAVPairSequence(buffer, offset + 28); }
public override byte[] GetBytes(bool isUnicode) { VolumeLabelSize = (uint)(VolumeLabel.Length * 2); byte[] buffer = new byte[this.Length]; FileTimeHelper.WriteFileTime(buffer, 0, VolumeCreationTime); LittleEndianWriter.WriteUInt32(buffer, 8, SerialNumber); LittleEndianWriter.WriteUInt32(buffer, 12, VolumeLabelSize); LittleEndianWriter.WriteUInt16(buffer, 16, Reserved); ByteWriter.WriteUTF16String(buffer, 18, VolumeLabel); return(buffer); }
public override void WriteCommandBytes(byte[] buffer, int offset) { LittleEndianWriter.WriteUInt16(buffer, offset + 0, StructureSize); LittleEndianWriter.WriteUInt16(buffer, offset + 2, (ushort)Flags); LittleEndianWriter.WriteUInt32(buffer, offset + 4, Reserved); FileTimeHelper.WriteFileTime(buffer, offset + 8, CreationTime); FileTimeHelper.WriteFileTime(buffer, offset + 16, LastAccessTime); FileTimeHelper.WriteFileTime(buffer, offset + 24, LastWriteTime); FileTimeHelper.WriteFileTime(buffer, offset + 32, ChangeTime); LittleEndianWriter.WriteInt64(buffer, offset + 40, AllocationSize); LittleEndianWriter.WriteInt64(buffer, offset + 48, EndofFile); LittleEndianWriter.WriteUInt32(buffer, offset + 56, (uint)FileAttributes); }
public override byte[] GetBytes() { byte[] buffer = new byte[Length]; int offset = 0; FileTimeHelper.WriteFileTime(buffer, ref offset, CreationTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastAccessTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastWriteTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastChangeTime); LittleEndianWriter.WriteUInt32(buffer, ref offset, (uint)ExtFileAttributes); LittleEndianWriter.WriteUInt32(buffer, ref offset, Reserved); return(buffer); }
public CloseResponse(byte[] buffer, int offset) : base(buffer, offset) { StructureSize = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 0); Flags = (CloseFlags)LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 2); Reserved = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 4); CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 8); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 16); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 24); ChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 32); AllocationSize = LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 40); EndofFile = LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 48); FileAttributes = (FileAttributes)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 56); }
public FindFileDirectoryInfo(byte[] buffer, int offset, bool isUnicode) : base() { NextEntryOffset = LittleEndianReader.ReadUInt32(buffer, ref offset); FileIndex = LittleEndianReader.ReadUInt32(buffer, ref offset); CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastAttrChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); EndOfFile = LittleEndianReader.ReadInt64(buffer, ref offset); AllocationSize = LittleEndianReader.ReadInt64(buffer, ref offset); ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset); uint fileNameLength = LittleEndianReader.ReadUInt32(buffer, ref offset); FileName = SMB1Helper.ReadFixedLengthString(buffer, ref offset, isUnicode, (int)fileNameLength); }
public byte[] GetBytes() { byte[] sequenceBytes = AVPairUtils.GetAVPairSequenceBytes(AVPairs); byte[] buffer = new byte[28 + sequenceBytes.Length]; ByteWriter.WriteByte(buffer, 0, CurrentVersion); ByteWriter.WriteByte(buffer, 1, MaximumSupportedVersion); LittleEndianWriter.WriteUInt16(buffer, 2, Reserved1); LittleEndianWriter.WriteUInt32(buffer, 4, Reserved2); FileTimeHelper.WriteFileTime(buffer, 8, TimeStamp); ByteWriter.WriteBytes(buffer, 16, ClientChallenge, 8); LittleEndianWriter.WriteUInt32(buffer, 24, Reserved3); ByteWriter.WriteBytes(buffer, 28, sequenceBytes); return(buffer); }
public override void WriteBytes(byte[] buffer, ref int offset, bool isUnicode) { uint fileNameLength = (byte)(isUnicode ? FileName.Length * 2 : FileName.Length); LittleEndianWriter.WriteUInt32(buffer, ref offset, NextEntryOffset); LittleEndianWriter.WriteUInt32(buffer, ref offset, FileIndex); FileTimeHelper.WriteFileTime(buffer, ref offset, CreationTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastAccessTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastWriteTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastAttrChangeTime); LittleEndianWriter.WriteInt64(buffer, ref offset, EndOfFile); LittleEndianWriter.WriteInt64(buffer, ref offset, AllocationSize); LittleEndianWriter.WriteUInt32(buffer, ref offset, (uint)ExtFileAttributes); LittleEndianWriter.WriteUInt32(buffer, ref offset, fileNameLength); SMB1Helper.WriteSMBString(buffer, ref offset, isUnicode, FileName); }
public NegotiateResponseExtended(byte[] buffer, int offset) : base(buffer, offset, false) { DialectIndex = LittleEndianConverter.ToUInt16(this.SMBParameters, 0); SecurityMode = (SecurityMode)ByteReader.ReadByte(this.SMBParameters, 2); MaxMpxCount = LittleEndianConverter.ToUInt16(this.SMBParameters, 3); MaxNumberVcs = LittleEndianConverter.ToUInt16(this.SMBParameters, 5); MaxBufferSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 7); MaxRawSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 11); SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 15); Capabilities = (Capabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 19); SystemTime = FileTimeHelper.ReadFileTime(this.SMBParameters, 23); ServerTimeZone = LittleEndianConverter.ToInt16(this.SMBParameters, 31); ChallengeLength = ByteReader.ReadByte(this.SMBParameters, 33); ServerGuid = LittleEndianConverter.ToGuid(this.SMBData, 0); SecurityBlob = ByteReader.ReadBytes(this.SMBData, 16, this.SMBData.Length - 16); }
public QueryFileAllInfo(byte[] buffer, int offset) { CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset); Reserved1 = LittleEndianReader.ReadUInt32(buffer, ref offset); AllocationSize = LittleEndianReader.ReadInt64(buffer, ref offset); EndOfFile = LittleEndianReader.ReadInt64(buffer, ref offset); NumberOfLinks = LittleEndianReader.ReadUInt32(buffer, ref offset); DeletePending = (ByteReader.ReadByte(buffer, ref offset) > 0); Directory = (ByteReader.ReadByte(buffer, ref offset) > 0); Reserved2 = LittleEndianReader.ReadUInt16(buffer, ref offset); EaSize = LittleEndianReader.ReadUInt32(buffer, ref offset); uint fileNameLength = LittleEndianReader.ReadUInt32(buffer, ref offset); FileName = ByteReader.ReadUTF16String(buffer, ref offset, (int)(fileNameLength / 2)); }
public override byte[] GetBytes(bool isUnicode) { SMBParameters = new byte[ParametersLength]; int parametersOffset = 4; ByteWriter.WriteByte(SMBParameters, ref parametersOffset, (byte)OpLockLevel); LittleEndianWriter.WriteUInt16(SMBParameters, ref parametersOffset, FID); LittleEndianWriter.WriteUInt32(SMBParameters, ref parametersOffset, (uint)CreateDisposition); FileTimeHelper.WriteFileTime(SMBParameters, ref parametersOffset, CreateTime); FileTimeHelper.WriteFileTime(SMBParameters, ref parametersOffset, LastAccessTime); FileTimeHelper.WriteFileTime(SMBParameters, ref parametersOffset, LastWriteTime); FileTimeHelper.WriteFileTime(SMBParameters, ref parametersOffset, LastChangeTime); LittleEndianWriter.WriteUInt32(SMBParameters, ref parametersOffset, (uint)ExtFileAttributes); LittleEndianWriter.WriteInt64(SMBParameters, ref parametersOffset, AllocationSize); LittleEndianWriter.WriteInt64(SMBParameters, ref parametersOffset, EndOfFile); LittleEndianWriter.WriteUInt16(SMBParameters, ref parametersOffset, (ushort)ResourceType); NMPipeStatus.WriteBytes(SMBParameters, ref parametersOffset); ByteWriter.WriteByte(SMBParameters, ref parametersOffset, Convert.ToByte(Directory)); return(base.GetBytes(isUnicode)); }
public FindFileBothDirectoryInfo(byte[] buffer, ref int offset, bool isUnicode) : base(false) { NextEntryOffset = LittleEndianReader.ReadUInt32(buffer, ref offset); FileIndex = LittleEndianReader.ReadUInt32(buffer, ref offset); CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset); EndOfFile = LittleEndianReader.ReadInt64(buffer, ref offset); AllocationSize = LittleEndianReader.ReadInt64(buffer, ref offset); ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset); uint fileNameLength = LittleEndianReader.ReadUInt32(buffer, ref offset); EASize = LittleEndianReader.ReadUInt32(buffer, ref offset); byte shortNameLength = ByteReader.ReadByte(buffer, ref offset); Reserved = ByteReader.ReadByte(buffer, ref offset); ShortName = ByteReader.ReadUTF16String(buffer, ref offset, 12); ShortName = ShortName.Substring(0, shortNameLength); FileName = SMB1Helper.ReadFixedLengthString(buffer, ref offset, isUnicode, (int)fileNameLength); }
public NegotiateResponse(byte[] buffer, int offset) : base(buffer, offset) { DialectIndex = LittleEndianConverter.ToUInt16(SMBParameters, 0); SecurityMode = (SecurityMode)ByteReader.ReadByte(SMBParameters, 2); MaxMpxCount = LittleEndianConverter.ToUInt16(SMBParameters, 3); MaxNumberVcs = LittleEndianConverter.ToUInt16(SMBParameters, 5); MaxBufferSize = LittleEndianConverter.ToUInt32(SMBParameters, 7); MaxRawSize = LittleEndianConverter.ToUInt32(SMBParameters, 11); SessionKey = LittleEndianConverter.ToUInt32(SMBParameters, 15); Capabilities = (Capabilities)LittleEndianConverter.ToUInt32(SMBParameters, 19); SystemTime = FileTimeHelper.ReadFileTime(SMBParameters, 23); ServerTimeZone = LittleEndianConverter.ToInt16(SMBParameters, 31); ChallengeLength = ByteReader.ReadByte(SMBParameters, 33); int dataOffset = 0; Challenge = ByteReader.ReadBytes(SMBData, ref dataOffset, ChallengeLength); // [MS-CIFS] <90> Padding is not added before DomainName // DomainName and ServerName are always in Unicode DomainName = SMB1Helper.ReadSMBString(SMBData, ref dataOffset, true); ServerName = SMB1Helper.ReadSMBString(SMBData, ref dataOffset, true); }
public NTCreateAndXResponseExtended(byte[] buffer, int offset) : base(buffer, offset, false) { int parametersOffset = 4; OpLockLevel = (OpLockLevel)ByteReader.ReadByte(this.SMBParameters, ref parametersOffset); FID = LittleEndianReader.ReadUInt16(this.SMBParameters, ref parametersOffset); CreateDisposition = (CreateDisposition)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset); CreateTime = FileTimeHelper.ReadNullableFileTime(this.SMBParameters, ref parametersOffset); LastAccessTime = FileTimeHelper.ReadNullableFileTime(this.SMBParameters, ref parametersOffset); LastWriteTime = FileTimeHelper.ReadNullableFileTime(this.SMBParameters, ref parametersOffset); LastChangeTime = FileTimeHelper.ReadNullableFileTime(this.SMBParameters, ref parametersOffset); ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset); AllocationSize = LittleEndianReader.ReadInt64(this.SMBParameters, ref parametersOffset); EndOfFile = LittleEndianReader.ReadInt64(this.SMBParameters, ref parametersOffset); ResourceType = (ResourceType)LittleEndianReader.ReadUInt16(this.SMBParameters, ref parametersOffset); NMPipeStatus_or_FileStatusFlags = LittleEndianReader.ReadUInt16(this.SMBParameters, ref parametersOffset); Directory = (ByteReader.ReadByte(this.SMBParameters, ref parametersOffset) > 0); VolumeGuid = LittleEndianReader.ReadGuid(this.SMBParameters, ref parametersOffset); FileID = LittleEndianReader.ReadUInt64(this.SMBParameters, ref parametersOffset); MaximalAccessRights = (AccessMask)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset); GuestMaximalAccessRights = (AccessMask)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset); }
public CreateResponse(byte[] buffer, int offset) : base(buffer, offset) { StructureSize = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 0); OplockLevel = (OplockLevel)ByteReader.ReadByte(buffer, offset + SMB2Header.Length + 2); Flags = (CreateResponseFlags)ByteReader.ReadByte(buffer, offset + SMB2Header.Length + 3); CreateAction = (CreateAction)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 4); CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 8); LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 16); LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 24); ChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 32); AllocationSize = LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 40); EndofFile = LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 48); FileAttributes = (FileAttributes)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 56); Reserved2 = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 60); FileId = new FileID(buffer, offset + SMB2Header.Length + 64); CreateContextsOffsets = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 80); CreateContextsLength = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 84); if (CreateContextsLength > 0) { CreateContexts = CreateContext.ReadCreateContextList(buffer, offset + (int)CreateContextsOffsets); } }
public override void WriteCommandBytes(byte[] buffer, int offset) { LittleEndianWriter.WriteUInt16(buffer, offset + 0, StructureSize); ByteWriter.WriteByte(buffer, offset + 2, (byte)OplockLevel); ByteWriter.WriteByte(buffer, offset + 3, (byte)Flags); LittleEndianWriter.WriteUInt32(buffer, offset + 4, (uint)CreateAction); FileTimeHelper.WriteFileTime(buffer, offset + 8, CreationTime); FileTimeHelper.WriteFileTime(buffer, offset + 16, LastAccessTime); FileTimeHelper.WriteFileTime(buffer, offset + 24, LastWriteTime); FileTimeHelper.WriteFileTime(buffer, offset + 32, ChangeTime); LittleEndianWriter.WriteInt64(buffer, offset + 40, AllocationSize); LittleEndianWriter.WriteInt64(buffer, offset + 48, EndofFile); LittleEndianWriter.WriteUInt32(buffer, offset + 56, (uint)FileAttributes); LittleEndianWriter.WriteUInt32(buffer, offset + 60, Reserved2); FileId.WriteBytes(buffer, offset + 64); CreateContextsOffsets = 0; CreateContextsLength = (uint)CreateContext.GetCreateContextListLength(CreateContexts); if (CreateContexts.Count > 0) { CreateContextsOffsets = SMB2Header.Length + 88; CreateContext.WriteCreateContextList(buffer, 88, CreateContexts); } }
public override byte[] GetBytes(bool isUnicode) { ChallengeLength = 0; this.SMBParameters = new byte[ParametersLength]; LittleEndianWriter.WriteUInt16(this.SMBParameters, 0, DialectIndex); ByteWriter.WriteByte(this.SMBParameters, 2, (byte)SecurityMode); LittleEndianWriter.WriteUInt16(this.SMBParameters, 3, MaxMpxCount); LittleEndianWriter.WriteUInt16(this.SMBParameters, 5, MaxNumberVcs); LittleEndianWriter.WriteUInt32(this.SMBParameters, 7, MaxBufferSize); LittleEndianWriter.WriteUInt32(this.SMBParameters, 11, MaxRawSize); LittleEndianWriter.WriteUInt32(this.SMBParameters, 15, SessionKey); LittleEndianWriter.WriteUInt32(this.SMBParameters, 19, (uint)Capabilities); FileTimeHelper.WriteFileTime(this.SMBParameters, 23, SystemTime); LittleEndianWriter.WriteInt16(this.SMBParameters, 31, ServerTimeZone); ByteWriter.WriteByte(this.SMBParameters, 33, ChallengeLength); this.SMBData = new byte[16 + SecurityBlob.Length]; LittleEndianWriter.WriteGuid(this.SMBData, 0, ServerGuid); ByteWriter.WriteBytes(this.SMBData, 16, SecurityBlob); return(base.GetBytes(isUnicode)); }
public override byte[] GetBytes(bool isUnicode) { this.SMBParameters = new byte[ParametersLength]; int parametersOffset = 4; ByteWriter.WriteByte(this.SMBParameters, ref parametersOffset, (byte)OpLockLevel); LittleEndianWriter.WriteUInt16(this.SMBParameters, ref parametersOffset, FID); LittleEndianWriter.WriteUInt32(this.SMBParameters, ref parametersOffset, (uint)CreateDisposition); FileTimeHelper.WriteFileTime(this.SMBParameters, ref parametersOffset, CreateTime); FileTimeHelper.WriteFileTime(this.SMBParameters, ref parametersOffset, LastAccessTime); FileTimeHelper.WriteFileTime(this.SMBParameters, ref parametersOffset, LastWriteTime); FileTimeHelper.WriteFileTime(this.SMBParameters, ref parametersOffset, LastChangeTime); LittleEndianWriter.WriteUInt32(this.SMBParameters, ref parametersOffset, (uint)ExtFileAttributes); LittleEndianWriter.WriteInt64(this.SMBParameters, ref parametersOffset, AllocationSize); LittleEndianWriter.WriteInt64(this.SMBParameters, ref parametersOffset, EndOfFile); LittleEndianWriter.WriteUInt16(this.SMBParameters, ref parametersOffset, (ushort)ResourceType); LittleEndianWriter.WriteUInt16(this.SMBParameters, ref parametersOffset, NMPipeStatus_or_FileStatusFlags); ByteWriter.WriteByte(this.SMBParameters, ref parametersOffset, Convert.ToByte(Directory)); LittleEndianWriter.WriteGuidBytes(this.SMBParameters, ref parametersOffset, VolumeGuid); LittleEndianWriter.WriteUInt64(this.SMBParameters, ref parametersOffset, FileID); LittleEndianWriter.WriteUInt32(this.SMBParameters, ref parametersOffset, (uint)MaximalAccessRights); LittleEndianWriter.WriteUInt32(this.SMBParameters, ref parametersOffset, (uint)GuestMaximalAccessRights); return(base.GetBytes(isUnicode)); }
public override byte[] GetBytes() { uint fileNameLength = (uint)(FileName.Length * 2); byte[] buffer = new byte[FixedLength + fileNameLength]; int offset = 0; FileTimeHelper.WriteFileTime(buffer, ref offset, CreationTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastAccessTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastWriteTime); FileTimeHelper.WriteFileTime(buffer, ref offset, LastChangeTime); LittleEndianWriter.WriteUInt32(buffer, ref offset, (uint)ExtFileAttributes); LittleEndianWriter.WriteUInt32(buffer, ref offset, Reserved1); LittleEndianWriter.WriteInt64(buffer, ref offset, AllocationSize); LittleEndianWriter.WriteInt64(buffer, ref offset, EndOfFile); LittleEndianWriter.WriteUInt32(buffer, ref offset, NumberOfLinks); ByteWriter.WriteByte(buffer, ref offset, Convert.ToByte(DeletePending)); ByteWriter.WriteByte(buffer, ref offset, Convert.ToByte(Directory)); LittleEndianWriter.WriteUInt16(buffer, ref offset, Reserved2); LittleEndianWriter.WriteUInt32(buffer, ref offset, EaSize); LittleEndianWriter.WriteUInt32(buffer, ref offset, fileNameLength); ByteWriter.WriteUTF16String(buffer, ref offset, FileName); return(buffer); }