Skip to content

SMB Negoatiation times out using MS-WSP #318

@rtpt-romankarwacik

Description

@rtpt-romankarwacik

Hi, I tried to use the WSP implementation, but before I can use it the SMB Negotiation already fails.
I use the following code:

//

var connectionInfo = new Microsoft.Protocols.TestManager.WSPServerPlugin.DetectionInfo();
connectionInfo.ServerComputerName = "192.168.56.113";
connectionInfo.UserName = "vagrant";
connectionInfo.Password = "vagrant";
connectionInfo.DomainName = "";

var logger = new Microsoft.Protocols.TestManager.Detector.DetectLogger();
var wspDetector = new Microsoft.Protocols.TestManager.WSPServerPlugin.WspDetector(logger, connectionInfo);
wspDetector.DetectServerConnection(ref connectionInfo);
wspDetector.CheckUserLogon(connectionInfo);
wspDetector.CheckWspService(ref connectionInfo);

And it fails with:

$ dotnet run
Unhandled exception. System.TimeoutException: The operation has timed out.
   at Microsoft.Protocols.TestTools.StackSdk.FileAccessService.Smb2.ReceivedPackets.WaitPacket(UInt64 messageId) in /home/romkar/repos/WindowsProtocolTestSuites/ProtoSDK/MS-SMB2/Client/Smb2Client.cs:line 114
   at Microsoft.Protocols.TestTools.StackSdk.FileAccessService.Smb2.Smb2Client.ExpectPacket[T](UInt64 messageId) in /home/romkar/repos/WindowsProtocolTestSuites/ProtoSDK/MS-SMB2/Client/Smb2Client.cs:line 685
   at Microsoft.Protocols.TestTools.StackSdk.FileAccessService.Smb2.Smb2Client.SendPacketAndExpectResponse[T](Smb2Packet packet) in /home/romkar/repos/WindowsProtocolTestSuites/ProtoSDK/MS-SMB2/Client/Smb2Client.cs:line 625
   at Microsoft.Protocols.TestTools.StackSdk.FileAccessService.Smb2.Smb2Client.Negotiate(UInt16 creditCharge, UInt16 creditRequest, Packet_Header_Flags_Values flags, UInt64 messageId, DialectRevision[] dialects, SecurityMode_Values securityMode, Capabilities_Values capabilities, Guid clientGuid, DialectRevision& selectedDialect, Byte[]& gssToken, Smb2NegotiateRequestPacket& request, Smb2NegotiateResponsePacket& response, UInt16 channelSequence, PreauthIntegrityHashID[] preauthHashAlgs, EncryptionAlgorithm[] encryptionAlgs, CompressionAlgorithm[] compressionAlgorithms, Smb2RDMATransformId[] rdmaTransformIds, SMB2_COMPRESSION_CAPABILITIES_Flags compressionFlags, SMB2_NETNAME_NEGOTIATE_CONTEXT_ID netNameContext, Boolean addDefaultEncryption, SigningAlgorithm[] signingAlgorithms, Boolean addTransportCapabilities) in /home/romkar/repos/WindowsProtocolTestSuites/ProtoSDK/MS-SMB2/Client/Smb2Client.cs:line 1253
   at Microsoft.Protocols.TestTools.StackSdk.FileAccessService.Smb2.Smb2Client.Negotiate(UInt16 creditCharge, UInt16 creditRequest, Packet_Header_Flags_Values flags, UInt64 messageId, DialectRevision[] dialects, SecurityMode_Values securityMode, Capabilities_Values capabilities, Guid clientGuid, DialectRevision& selectedDialect, Byte[]& gssToken, Packet_Header& responseHeader, NEGOTIATE_Response& responsePayload, UInt16 channelSequence, PreauthIntegrityHashID[] preauthHashAlgs, EncryptionAlgorithm[] encryptionAlgs, CompressionAlgorithm[] compressionAlgorithms, Smb2RDMATransformId[] rdmaTransformIds, SMB2_COMPRESSION_CAPABILITIES_Flags compressionFlags, SMB2_NETNAME_NEGOTIATE_CONTEXT_ID netNameContext, Boolean addDefaultEncryption, SigningAlgorithm[] signingAlgorithms, Boolean addTransportCapabilities) in /home/romkar/repos/WindowsProtocolTestSuites/ProtoSDK/MS-SMB2/Client/Smb2Client.cs:line 1328
   at Microsoft.Protocols.TestManager.WSPServerPlugin.WspDetector.UserLogon(DetectionInfo info, Smb2Client client, UInt64& messageId, UInt64& sessionId, Packet_Header_Flags_Values& defaultFlags, NEGOTIATE_Response& negotiateResp, Boolean& treeConnectSigningRequired) in /home/romkar/repos/WindowsProtocolTestSuites/TestSuites/MS-WSP/src/Plugin/WSPServerPlugin/WspDetector.cs:line 209
   at Microsoft.Protocols.TestManager.WSPServerPlugin.WspDetector.CheckUserLogon(DetectionInfo info) in /home/romkar/repos/WindowsProtocolTestSuites/TestSuites/MS-WSP/src/Plugin/WSPServerPlugin/WspDetector.cs:line 129
   at Program.<Main>$(String[] args) in /home/romkar/repos/WSPAuth/Program.cs:line 13

After the negotiation the connection is closed by the dotnet application, even though it reports that the operation has timed out:

Image

How do I properly use the assembly, login using credentials and make an example GetCPMCreateQuery request (e.g. like in CheckWspService)

I use Fedora 41 with dotnet 8.0.111, and the Server is Windows 10.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions