SMB1: Renamed ServerCapabilities to Capabilities

This commit is contained in:
Tal Aloni 2017-09-05 22:21:48 +03:00
parent c458af1944
commit b70caac445
10 changed files with 34 additions and 34 deletions

View file

@ -154,7 +154,7 @@ namespace SMBLibrary.Client
SessionSetupAndXRequest request = new SessionSetupAndXRequest(); SessionSetupAndXRequest request = new SessionSetupAndXRequest();
request.MaxBufferSize = MaxBufferSize; request.MaxBufferSize = MaxBufferSize;
request.MaxMpxCount = MaxMpxCount; request.MaxMpxCount = MaxMpxCount;
request.Capabilities = ServerCapabilities.Unicode | ServerCapabilities.NTStatusCode; request.Capabilities = Capabilities.Unicode | Capabilities.NTStatusCode;
request.AccountName = userName; request.AccountName = userName;
request.PrimaryDomain = domainName; request.PrimaryDomain = domainName;
byte[] clientChallenge = new byte[8]; byte[] clientChallenge = new byte[8];
@ -195,7 +195,7 @@ namespace SMBLibrary.Client
SessionSetupAndXRequestExtended request = new SessionSetupAndXRequestExtended(); SessionSetupAndXRequestExtended request = new SessionSetupAndXRequestExtended();
request.MaxBufferSize = MaxBufferSize; request.MaxBufferSize = MaxBufferSize;
request.MaxMpxCount = MaxMpxCount; request.MaxMpxCount = MaxMpxCount;
request.Capabilities = ServerCapabilities.Unicode | ServerCapabilities.NTStatusCode; request.Capabilities = Capabilities.Unicode | Capabilities.NTStatusCode;
request.SecurityBlob = NTLMAuthenticationHelper.GetNegotiateMessage(m_securityBlob, domainName, authenticationMethod); request.SecurityBlob = NTLMAuthenticationHelper.GetNegotiateMessage(m_securityBlob, domainName, authenticationMethod);
TrySendMessage(request); TrySendMessage(request);
@ -209,7 +209,7 @@ namespace SMBLibrary.Client
request = new SessionSetupAndXRequestExtended(); request = new SessionSetupAndXRequestExtended();
request.MaxBufferSize = MaxBufferSize; request.MaxBufferSize = MaxBufferSize;
request.MaxMpxCount = MaxMpxCount; request.MaxMpxCount = MaxMpxCount;
request.Capabilities = ServerCapabilities.Unicode | ServerCapabilities.NTStatusCode | ServerCapabilities.ExtendedSecurity; request.Capabilities = Capabilities.Unicode | Capabilities.NTStatusCode | Capabilities.ExtendedSecurity;
request.SecurityBlob = NTLMAuthenticationHelper.GetAuthenticateMessage(response.SecurityBlob, domainName, userName, password, authenticationMethod, out m_sessionKey); request.SecurityBlob = NTLMAuthenticationHelper.GetAuthenticateMessage(response.SecurityBlob, domainName, userName, password, authenticationMethod, out m_sessionKey);
TrySendMessage(request); TrySendMessage(request);

View file

@ -25,7 +25,7 @@ namespace SMBLibrary.SMB1
public uint MaxBufferSize; public uint MaxBufferSize;
public uint MaxRawSize; public uint MaxRawSize;
public uint SessionKey; public uint SessionKey;
public ServerCapabilities Capabilities; public Capabilities Capabilities;
public DateTime SystemTime; public DateTime SystemTime;
public short ServerTimeZone; public short ServerTimeZone;
private byte ChallengeLength; private byte ChallengeLength;
@ -50,7 +50,7 @@ namespace SMBLibrary.SMB1
MaxBufferSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 7); MaxBufferSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 7);
MaxRawSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 11); MaxRawSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 11);
SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 15); SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 15);
Capabilities = (ServerCapabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 19); Capabilities = (Capabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 19);
SystemTime = FileTimeHelper.ReadFileTime(this.SMBParameters, 23); SystemTime = FileTimeHelper.ReadFileTime(this.SMBParameters, 23);
ServerTimeZone = LittleEndianConverter.ToInt16(this.SMBParameters, 31); ServerTimeZone = LittleEndianConverter.ToInt16(this.SMBParameters, 31);
ChallengeLength = ByteReader.ReadByte(this.SMBParameters, 33); ChallengeLength = ByteReader.ReadByte(this.SMBParameters, 33);

View file

@ -25,7 +25,7 @@ namespace SMBLibrary.SMB1
public uint MaxBufferSize; public uint MaxBufferSize;
public uint MaxRawSize; public uint MaxRawSize;
public uint SessionKey; public uint SessionKey;
public ServerCapabilities Capabilities; public Capabilities Capabilities;
public DateTime SystemTime; public DateTime SystemTime;
public short ServerTimeZone; public short ServerTimeZone;
private byte ChallengeLength; // MUST be set to 0 private byte ChallengeLength; // MUST be set to 0
@ -47,7 +47,7 @@ namespace SMBLibrary.SMB1
MaxBufferSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 7); MaxBufferSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 7);
MaxRawSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 11); MaxRawSize = LittleEndianConverter.ToUInt32(this.SMBParameters, 11);
SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 15); SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 15);
Capabilities = (ServerCapabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 19); Capabilities = (Capabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 19);
SystemTime = FileTimeHelper.ReadFileTime(this.SMBParameters, 23); SystemTime = FileTimeHelper.ReadFileTime(this.SMBParameters, 23);
ServerTimeZone = LittleEndianConverter.ToInt16(this.SMBParameters, 31); ServerTimeZone = LittleEndianConverter.ToInt16(this.SMBParameters, 31);
ChallengeLength = ByteReader.ReadByte(this.SMBParameters, 33); ChallengeLength = ByteReader.ReadByte(this.SMBParameters, 33);

View file

@ -370,8 +370,8 @@ namespace SMBLibrary.SMB1
// Both NegotiateResponse and NegotiateResponseExtended have WordCount set to 17 // Both NegotiateResponse and NegotiateResponseExtended have WordCount set to 17
if (wordCount * 2 == NegotiateResponse.ParametersLength) if (wordCount * 2 == NegotiateResponse.ParametersLength)
{ {
ServerCapabilities capabilities = (ServerCapabilities)LittleEndianConverter.ToUInt32(buffer, offset + 20); Capabilities capabilities = (Capabilities)LittleEndianConverter.ToUInt32(buffer, offset + 20);
if ((capabilities & ServerCapabilities.ExtendedSecurity) > 0) if ((capabilities & Capabilities.ExtendedSecurity) > 0)
{ {
return new NegotiateResponseExtended(buffer, offset); return new NegotiateResponseExtended(buffer, offset);
} }

View file

@ -25,7 +25,7 @@ namespace SMBLibrary.SMB1
private ushort OEMPasswordLength; private ushort OEMPasswordLength;
private ushort UnicodePasswordLength; private ushort UnicodePasswordLength;
public uint Reserved; public uint Reserved;
public ServerCapabilities Capabilities; public Capabilities Capabilities;
// Data: // Data:
public byte[] OEMPassword; public byte[] OEMPassword;
public byte[] UnicodePassword; public byte[] UnicodePassword;
@ -52,7 +52,7 @@ namespace SMBLibrary.SMB1
OEMPasswordLength = LittleEndianConverter.ToUInt16(this.SMBParameters, 14); OEMPasswordLength = LittleEndianConverter.ToUInt16(this.SMBParameters, 14);
UnicodePasswordLength = LittleEndianConverter.ToUInt16(this.SMBParameters, 16); UnicodePasswordLength = LittleEndianConverter.ToUInt16(this.SMBParameters, 16);
Reserved = LittleEndianConverter.ToUInt32(this.SMBParameters, 18); Reserved = LittleEndianConverter.ToUInt32(this.SMBParameters, 18);
Capabilities = (ServerCapabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 22); Capabilities = (Capabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 22);
OEMPassword = ByteReader.ReadBytes(this.SMBData, 0, OEMPasswordLength); OEMPassword = ByteReader.ReadBytes(this.SMBData, 0, OEMPasswordLength);
UnicodePassword = ByteReader.ReadBytes(this.SMBData, OEMPasswordLength, UnicodePasswordLength); UnicodePassword = ByteReader.ReadBytes(this.SMBData, OEMPasswordLength, UnicodePasswordLength);
@ -73,7 +73,7 @@ namespace SMBLibrary.SMB1
public override byte[] GetBytes(bool isUnicode) public override byte[] GetBytes(bool isUnicode)
{ {
Capabilities &= ~ServerCapabilities.ExtendedSecurity; Capabilities &= ~Capabilities.ExtendedSecurity;
OEMPasswordLength = (ushort)OEMPassword.Length; OEMPasswordLength = (ushort)OEMPassword.Length;
UnicodePasswordLength = (ushort)UnicodePassword.Length; UnicodePasswordLength = (ushort)UnicodePassword.Length;

View file

@ -24,7 +24,7 @@ namespace SMBLibrary.SMB1
public uint SessionKey; public uint SessionKey;
private ushort SecurityBlobLength; private ushort SecurityBlobLength;
public uint Reserved; public uint Reserved;
public ServerCapabilities Capabilities; public Capabilities Capabilities;
// Data: // Data:
public byte[] SecurityBlob; public byte[] SecurityBlob;
public string NativeOS; // SMB_STRING (If Unicode, this field MUST be aligned to start on a 2-byte boundary from the start of the SMB header) public string NativeOS; // SMB_STRING (If Unicode, this field MUST be aligned to start on a 2-byte boundary from the start of the SMB header)
@ -44,7 +44,7 @@ namespace SMBLibrary.SMB1
SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 10); SessionKey = LittleEndianConverter.ToUInt32(this.SMBParameters, 10);
SecurityBlobLength = LittleEndianConverter.ToUInt16(this.SMBParameters, 14); SecurityBlobLength = LittleEndianConverter.ToUInt16(this.SMBParameters, 14);
Reserved = LittleEndianConverter.ToUInt32(this.SMBParameters, 16); Reserved = LittleEndianConverter.ToUInt32(this.SMBParameters, 16);
Capabilities = (ServerCapabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 20); Capabilities = (Capabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 20);
SecurityBlob = ByteReader.ReadBytes(this.SMBData, 0, SecurityBlobLength); SecurityBlob = ByteReader.ReadBytes(this.SMBData, 0, SecurityBlobLength);
@ -62,7 +62,7 @@ namespace SMBLibrary.SMB1
public override byte[] GetBytes(bool isUnicode) public override byte[] GetBytes(bool isUnicode)
{ {
Capabilities |= ServerCapabilities.ExtendedSecurity; Capabilities |= Capabilities.ExtendedSecurity;
SecurityBlobLength = (ushort)SecurityBlob.Length; SecurityBlobLength = (ushort)SecurityBlob.Length;
this.SMBParameters = new byte[ParametersLength]; this.SMBParameters = new byte[ParametersLength];

View file

@ -3,7 +3,7 @@ using System;
namespace SMBLibrary.SMB1 namespace SMBLibrary.SMB1
{ {
[Flags] [Flags]
public enum ServerCapabilities : uint public enum Capabilities : uint
{ {
RawMode = 0x00000001, // CAP_RAW_MODE RawMode = 0x00000001, // CAP_RAW_MODE
MPXMode = 0x00000002, // SMB_COM_READ_MPX MPXMode = 0x00000002, // SMB_COM_READ_MPX

View file

@ -366,8 +366,8 @@
<Compile Include="SMB1\Enums\HeaderFlags.cs" /> <Compile Include="SMB1\Enums\HeaderFlags.cs" />
<Compile Include="SMB1\Enums\HeaderFlags2.cs" /> <Compile Include="SMB1\Enums\HeaderFlags2.cs" />
<Compile Include="SMB1\Enums\Locking\LockType.cs" /> <Compile Include="SMB1\Enums\Locking\LockType.cs" />
<Compile Include="SMB1\Enums\Negotiate\Capabilities.cs" />
<Compile Include="SMB1\Enums\Negotiate\SecurityMode.cs" /> <Compile Include="SMB1\Enums\Negotiate\SecurityMode.cs" />
<Compile Include="SMB1\Enums\Negotiate\ServerCapabilities.cs" />
<Compile Include="SMB1\Enums\NTCreate\FileStatusFlags.cs" /> <Compile Include="SMB1\Enums\NTCreate\FileStatusFlags.cs" />
<Compile Include="SMB1\Enums\NTCreate\ImpersonationLevel.cs" /> <Compile Include="SMB1\Enums\NTCreate\ImpersonationLevel.cs" />
<Compile Include="SMB1\Enums\NTCreate\NTCreateFlags.cs" /> <Compile Include="SMB1\Enums\NTCreate\NTCreateFlags.cs" />

View file

@ -29,13 +29,13 @@ namespace SMBLibrary.Server.SMB1
response.MaxNumberVcs = 1; response.MaxNumberVcs = 1;
response.MaxBufferSize = 16644; response.MaxBufferSize = 16644;
response.MaxRawSize = 65536; response.MaxRawSize = 65536;
response.Capabilities = ServerCapabilities.Unicode | response.Capabilities = Capabilities.Unicode |
ServerCapabilities.LargeFiles | Capabilities.LargeFiles |
ServerCapabilities.NTSMB | Capabilities.NTSMB |
ServerCapabilities.NTStatusCode | Capabilities.NTStatusCode |
ServerCapabilities.NTFind | Capabilities.NTFind |
ServerCapabilities.LargeRead | Capabilities.LargeRead |
ServerCapabilities.LargeWrite; Capabilities.LargeWrite;
response.SystemTime = DateTime.UtcNow; response.SystemTime = DateTime.UtcNow;
response.ServerTimeZone = (short)-TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes; response.ServerTimeZone = (short)-TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes;
NegotiateMessage negotiateMessage = CreateNegotiateMessage(); NegotiateMessage negotiateMessage = CreateNegotiateMessage();
@ -60,14 +60,14 @@ namespace SMBLibrary.Server.SMB1
response.MaxNumberVcs = 1; response.MaxNumberVcs = 1;
response.MaxBufferSize = 16644; response.MaxBufferSize = 16644;
response.MaxRawSize = 65536; response.MaxRawSize = 65536;
response.Capabilities = ServerCapabilities.Unicode | response.Capabilities = Capabilities.Unicode |
ServerCapabilities.LargeFiles | Capabilities.LargeFiles |
ServerCapabilities.NTSMB | Capabilities.NTSMB |
ServerCapabilities.NTStatusCode | Capabilities.NTStatusCode |
ServerCapabilities.NTFind | Capabilities.NTFind |
ServerCapabilities.LargeRead | Capabilities.LargeRead |
ServerCapabilities.LargeWrite | Capabilities.LargeWrite |
ServerCapabilities.ExtendedSecurity; Capabilities.ExtendedSecurity;
response.SystemTime = DateTime.UtcNow; response.SystemTime = DateTime.UtcNow;
response.ServerTimeZone = (short)-TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes; response.ServerTimeZone = (short)-TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes;
response.ServerGuid = serverGuid; response.ServerGuid = serverGuid;

View file

@ -58,11 +58,11 @@ namespace SMBLibrary.Server.SMB1
header.UID = session.UserID; header.UID = session.UserID;
response.PrimaryDomain = request.PrimaryDomain; response.PrimaryDomain = request.PrimaryDomain;
if ((request.Capabilities & ServerCapabilities.LargeRead) > 0) if ((request.Capabilities & Capabilities.LargeRead) > 0)
{ {
state.LargeRead = true; state.LargeRead = true;
} }
if ((request.Capabilities & ServerCapabilities.LargeWrite) > 0) if ((request.Capabilities & Capabilities.LargeWrite) > 0)
{ {
state.LargeWrite = true; state.LargeWrite = true;
} }