/// <summary> /// Update SMB_COM_TREE_CONNECT_ANDX request. /// </summary> /// <param name="connection">It represents the SMB connection.</param> /// <param name="smbRequest">It represents the SMB request.</param> public static void UpdateTreeConnectRequest(SmbConnection connection, SmbRequest smbRequest) { connection.SutSendSequenceNumber.Add(smbRequest.messageId); connection.sentRequest.Add(smbRequest.messageId, smbRequest); }
/// <summary> /// Update SMB_COM_WRITE_ANDX request. /// </summary> /// <param name="connection">It represents the SMB connection.</param> /// <param name="request">It represents the SMB request.</param> public static void UpdateWriteRequest(SmbConnection connection, SmbRequest request) { connection.SutSendSequenceNumber.Add(request.messageId); connection.sentRequest.Add(request.messageId, request); }
/// <summary> /// Update SMB_COM_SESSION_SETUP request for non-extended security mode. /// </summary> /// <param name="connection">It represents the SMB connection.</param> /// <param name="smbRequest">It represents the SMB request.</param> public static void UpdateNonExtSessionSetupRequest(SmbConnection connection, SmbRequest smbRequest) { NonExtendedSessionSetupRequest req = smbRequest as NonExtendedSessionSetupRequest; connection.SutSendSequenceNumber.Add(smbRequest.messageId); connection.sentRequest.Add(smbRequest.messageId, smbRequest); connection.clientCapabilities = req.capabilities; connection.accountType = req.accountType; }
/// <summary> /// Update SMB_COM_SESSION_SETUP request. /// </summary> /// <param name="connection">It represents the SMB connection.</param> /// <param name="smbRequest">It represents the SMB request.</param> public static void UpdateSessionSetupRequestAdditional(SmbConnection connection, SmbRequest smbRequest) { SessionSetupRequestAdditional req = smbRequest as SessionSetupRequestAdditional; connection.SutSendSequenceNumber.Add(smbRequest.messageId); connection.sentRequest.Add(smbRequest.messageId, smbRequest); connection.clientCapabilities = req.capabilities; connection.accountType = req.accountType; }
public static void WriteRequest( int messageId, int sessionId, int treeId, int fId, ShareType shareType, bool isSigned, int synchronize) { Condition.IsTrue(synchronize == 0); Checker.CheckWriteRequest(smbConnection, messageId, sessionId, treeId, fId, shareType, isSigned, smbState); smbRequest = new WriteRequest(messageId, sessionId, treeId, shareType, isSigned); Update.UpdateWriteRequest(smbConnection, smbRequest); }
/// <summary> /// Update SMB_COM_NEGOTIATE request. /// </summary> /// <param name="connection">It represents the SMB connection.</param> /// <param name="smbRequest">It represents the SMB request.</param> public static void UpdateNegotiateRequest(SmbConnection connection, SmbRequest smbRequest) { NegotiateRequest req = smbRequest as NegotiateRequest; connection.SutSendSequenceNumber.Add(smbRequest.messageId); connection.sentRequest.Add(smbRequest.messageId, smbRequest); connection.clientSignState = req.signState; connection.isNegotiateSent = true; connection.isClientSupportExtSecurity = req.isSupportExtSecurity; }
public static void CreateRequest( int messageId, int sessionId, int treeId, [Domain("DesiredAccess")] int desiredAccess, CreateDisposition createDisposition, [Domain("ImpersonationLevel")] int impersonationLevel, [Domain("FileDomain")] string fileName, ShareType shareType, bool isSigned, bool isOpenByFileId, bool isDirectoryFile, bool isMaximumAllowedSet) { smbRequest = new CreateRequest( messageId, sessionId, treeId, desiredAccess, createDisposition, impersonationLevel, fileName, shareType, isSigned, isOpenByFileId, isDirectoryFile); Checker.CheckCreateRequest( smbConnection, messageId, sessionId, treeId, isSigned, shareType, fileName, smbState, isOpenByFileId, isDirectoryFile); if (shareType == ShareType.NamedPipe) { Condition.IsTrue((createDisposition == CreateDisposition.FileOpen) || (createDisposition == CreateDisposition.FileCreate) || (createDisposition == CreateDisposition.FileOpenIf)); } // Save the client state when setting the max allowed, to cover the requirement. isClientMaxAllowedSet = isMaximumAllowedSet; Update.UpdateCreateRequest(smbConnection, smbRequest); }
public static void TreeMultipleConnectRequest( int messageId, int sessionId, bool isTidDisconnectionSet, bool isRequestExtSignature, bool isRequestExtResponse, string share, ShareType shareType, bool isSigned) { Checker.CheckTreeMultipleConnectRequest( smbConnection, messageId, sessionId, smbState, isSigned, share, shareType); smbRequest = new TreeConnectRequest( messageId, sessionId, isTidDisconnectionSet, isRequestExtSignature, isRequestExtResponse, share, shareType); Update.UpdateTreeConnectRequest(smbConnection, smbRequest); smbState = SmbState.TreeConnectSent; }
public static void SessionSetupRequestAdditional( AccountType accountType, int messageId, int sessionId, int securitySignature, bool isRequireSign, [Domain("ClientCapabilities")] Set<Capabilities> capabilities, bool isSendBufferSizeExceeds, bool isWriteBufferSizeExceeds, bool flag2, bool isGSSTokenValid, bool isUserIdValid) { Condition.IsTrue(flag2); Checker.CheckSessionSetupRequest( smbConnection, messageId, sessionId, smbState, isRequireSign, capabilities, isSendBufferSizeExceeds, isWriteBufferSizeExceeds); smbRequest = new SessionSetupRequestAdditional( accountType, messageId, sessionId, securitySignature, isRequireSign, capabilities, isGSSTokenValid, isUserIdValid); Update.UpdateSessionSetupRequestAdditional(smbConnection, smbRequest); smbState = SmbState.SessionSetupSent; }
public static void SessionSetupRequest( AccountType account, int messageId, int sessionId, int securitySignature, bool isRequireSign, [Domain("ClientCapabilities")] Set<Capabilities> capabilities, bool isSendBufferSizeExceeds, bool isWriteBufferSizeExceeds, bool flag2) { Condition.IsTrue(flag2); Checker.CheckSessionSetupRequest( smbConnection, messageId, sessionId, smbState, isRequireSign, capabilities, isSendBufferSizeExceeds, isWriteBufferSizeExceeds); if (capabilities.Contains(Capabilities.CapExtendedSecurity)) { ModelHelper.CaptureRequirement( 8388, "[In Sequence Diagram] Session Setup Roundtrip: If the CAP_EXTENDED_SECURITY bit is set " + "(0x80000000), then the SMB the SUT does support extended security."); } smbRequest = new SessionSetupRequest( account, messageId, sessionId, securitySignature, isRequireSign, capabilities); Update.UpdateSessionSetupRequest(smbConnection, smbRequest); smbState = SmbState.SessionSetupSent; }
public static void ReadRequest( int messageId, int sessionId, int treeId, int fid, ShareType shareType, bool isSigned) { Checker.CheckReadRequest(smbConnection, messageId, sessionId, treeId, fid, shareType, isSigned, smbState); smbRequest = new ReadRequest(messageId, sessionId, treeId, fid, shareType, isSigned); Update.UpdateReadRequest(smbConnection, smbRequest); }
public static void NegotiateRequest( int messageId, bool isSupportExtSecurity, SignState clientSignState, Sequence<Dialect> dialectName) { Checker.CheckNegotiateRequest(smbConnection, messageId, smbState, clientSignState, dialectName); smbRequest = new NegotiateRequest(messageId, isSupportExtSecurity, clientSignState, dialectName); Update.UpdateNegotiateRequest(smbConnection, smbRequest); smbState = SmbState.NegotiateSent; }
public static void FsctlBadCommandRequest( int messageId, int sessionId, int treeId, bool isSigned, int fid, FsctlInvalidCommand command) { Condition.IsTrue(smbConnection.openedFiles.ContainsKey(fid)); Condition.IsTrue(smbConnection.openedFiles[fid].treeId == treeId); Checker.CheckRequest(smbConnection, messageId, sessionId, treeId, isSigned, smbState); if (Parameter.sutPlatform != Platform.Win2K8R2 && Parameter.sutPlatform != Platform.NonWindows) { Condition.IsTrue(command == FsctlInvalidCommand.FsctlRequestOplockLevle1 || command == FsctlInvalidCommand.FsctlRequestOplockLevel2 || command == FsctlInvalidCommand.FsctlRequestBatchOplock || command == FsctlInvalidCommand.FsctlOplockBreakAcknowledge || command == FsctlInvalidCommand.FsctlOpBatchAckClosePending || command == FsctlInvalidCommand.FsctlOpLockBreakNotify || command == FsctlInvalidCommand.FsctlMoveFile || command == FsctlInvalidCommand.FsctlMarkHandle || command == FsctlInvalidCommand.FsctlQueryRetrievalPointers || command == FsctlInvalidCommand.FsctlPipeAssignEvent || command == FsctlInvalidCommand.FsctlGetVolumeBitmap || command == FsctlInvalidCommand.FsctlGetNtfsFileRecord || command == FsctlInvalidCommand.FsctlInvalidateVolumes || command == FsctlInvalidCommand.FsctlReadUsnJournal || command == FsctlInvalidCommand.FsctlCreateUsnJournal || command == FsctlInvalidCommand.FsctlQueryUsnJournal || command == FsctlInvalidCommand.FsctlDeleteUsnJournal || command == FsctlInvalidCommand.FsctlEnumUsnData); } smbRequest = new FSCTLBadCommandRequest(messageId, command); Update.UpdateRequest(smbConnection, smbRequest); // Store the bad command value. badCommand = command; }