/// <summary> /// Update SMB_COM_SESSION_SETUP response. /// </summary> /// <param name="connection">It represents the SMB connection.</param> /// <param name="sessionId"> /// Set this value to 0 to request a new session setup, or set this value to a previously established session /// identifier to request the re-authentication of an existing session. /// </param> /// <param name="messageId">This is used to associate a response with a request.</param> public static void UpdateSessionSetupResponseAdditional( SmbConnection connection, int messageId, int sessionId) { SessionSetupRequestAdditional request = (SessionSetupRequestAdditional)connection.sentRequest[messageId]; connection.sessionList.Add(sessionId, new SmbSession(sessionId, SessionState.Valid)); connection.sessionId++; connection.SutNextReceiveSequenceNumber++; if (connection.isSignEnable(connection.clientSignState, connection.sutSignState)) { if (request.accountType == AccountType.Admin) { connection.isSigningActive = true; } else if (request.accountType == AccountType.Guest) { connection.isSigningActive = false; } } connection.SutSendSequenceNumber.Remove(messageId); connection.sentRequest.Remove(messageId); }
/// <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; }