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