mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-07-15 13:55:03 +02:00
SMB1: Renamed ServerCapabilities to Capabilities
This commit is contained in:
parent
c458af1944
commit
b70caac445
10 changed files with 34 additions and 34 deletions
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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
|
|
@ -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" />
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue