Exemple #1
0
        private void ShowSessionID(AccessTokenHandle hToken)
        {
            var sessionId = AccessTokenSessionId.FromTokenHandle(hToken);

            console.WriteLine("[SESSION ID]");
            console.WriteLine("");
            console.WriteLine(sessionId.ToOutputString());
            console.WriteLine("");
        }
        private void InnerSetSameSessionId()
        {
            var hCurrent       = AccessTokenHandle.GetCurrentProcessTokenHandle();
            var currentSession = AccessTokenSessionId.FromTokenHandle(hCurrent);
            var targetSession  = AccessTokenSessionId.FromTokenHandle(this.TokenHandle);

            if (currentSession.SessionId != targetSession.SessionId)
            {
                AccessTokenSessionId.SetTokenSessionId(currentSession, this.TokenHandle);
            }

            var tmp = AccessTokenSessionId.FromTokenHandle(TokenHandle);

            if (tmp.SessionId != currentSession.SessionId)
            {
                Logger.GetInstance().Error($"Failed to set session id for token. {currentSession.SessionId} vs {tmp.SessionId}");
            }
        }
Exemple #3
0
 public AccessTokenInformation(AccessTokenHandle handle)
 {
     try
     {
         this._groups = AccessTokenGroups.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._logonSid = AccessTokenLogonSid.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._owner = AccessTokenOwner.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._primaryGroup = AccessTokenPrimaryGroup.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._primaryGroup = AccessTokenPrimaryGroup.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._privileges = AccessTokenPrivileges.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._sessionId = AccessTokenSessionId.FromTokenHandle(handle);
     }
     catch { }
     try
     {
         this._user = AccessTokenUser.FromTokenHandle(handle);
     }
     catch { }
 }
Exemple #4
0
        private void InnerPrintProcesses(List <TMProcess> processes)
        {
            List <Tuple <string, string, string, string> > processesInfo = new List <Tuple <string, string, string, string> >();

            foreach (var p in processes)
            {
                var    sessionId = "";
                string username  = "";
                try
                {
                    var pHandle     = TMProcessHandle.FromProcess(p, ProcessAccessFlags.QueryInformation);
                    var tHandle     = AccessTokenHandle.FromProcessHandle(pHandle, TokenAccess.TOKEN_QUERY);
                    var userInfo    = AccessTokenUser.FromTokenHandle(tHandle);
                    var sessionInfo = AccessTokenSessionId.FromTokenHandle(tHandle);
                    username  = userInfo.Domain + "\\" + userInfo.Username;
                    sessionId = sessionInfo.SessionId.ToString();
                }
                catch (Exception)
                {
                }
                processesInfo.Add(new Tuple <string, string, string, string>(p.ProcessId.ToString(), p.ProcessName, username, sessionId));
            }

            StringBuilder output     = new StringBuilder();
            int           padding    = 2;
            int           maxName    = 0;
            int           maxPid     = 0;
            int           maxUser    = 0;
            int           maxSession = 0;

            foreach (var p in processesInfo)
            {
                maxPid     = Math.Max(maxPid, p.Item1.Length);
                maxName    = Math.Max(maxName, p.Item2.Length);
                maxUser    = Math.Max(maxUser, p.Item3.Length);
                maxSession = Math.Max(maxSession, p.Item4.Length);
            }

            string name    = "PROCESS";
            string pid     = "PID";
            string user    = "******";
            string session = "SESSION";

            output.Append(pid + "," + generateSpaces(maxPid + padding - pid.Length));
            output.Append(name + "," + generateSpaces(maxName + padding - name.Length));
            output.Append(user + generateSpaces(maxUser + padding - user.Length));
            output.Append(session + "\n");

            var sorted = processesInfo.OrderBy(x => x.Item1).ToList();

            foreach (var p in sorted)
            {
                string line = "";
                line += p.Item1 + ",";
                line += generateSpaces(maxPid + padding - p.Item1.Length);
                line += p.Item2 + ",";
                line += generateSpaces(maxName + padding - p.Item2.Length);
                line += p.Item3;
                line += generateSpaces(maxUser + padding - p.Item3.Length);
                line += p.Item4;
                output.Append(line + "\n");
            }

            console.Write(output.ToString());
        }