Beispiel #1
0
        private void DisableUser_Click(object sender, EventArgs e)
        {
            String           sSelectedUserName = "";
            PrincipalContext pctxLocalMachine;
            UserPrincipal    usrpSelectedUser;

            try
            {
                sSelectedUserName        = cmbUserList.SelectedItem.ToString();
                pctxLocalMachine         = new PrincipalContext(ContextType.Machine);
                usrpSelectedUser         = UserPrincipal.FindByIdentity(pctxLocalMachine, IdentityType.SamAccountName, sSelectedUserName);
                usrpSelectedUser.Enabled = false;

                usrpSelectedUser.Save();

                cmbSunFromTime.Enabled = false;
                cmbSunToTime.Enabled   = false;
                cmbMonFromTime.Enabled = false;
                cmbMonToTime.Enabled   = false;
                cmbTueFromTime.Enabled = false;
                cmbTueToTime.Enabled   = false;
                cmbWedFromTime.Enabled = false;
                cmbWedToTime.Enabled   = false;
                cmbThuFromTime.Enabled = false;
                cmbThuToTime.Enabled   = false;
                cmbFriFromTime.Enabled = false;
                cmbFriToTime.Enabled   = false;
                cmbSatFromTime.Enabled = false;
                cmbSatToTime.Enabled   = false;
                btnSave.Enabled        = false;

                // Disable triggers for scheduled tasks in the Task Scheduler
                using (TaskService ts = new TaskService(@"\"))
                {
                    TaskFolder myFolder = ts.GetFolder("Karthik's Custom Tasks");

                    var myTasks = myFolder.Tasks.Where(t => t.Name.Equals(sSelectedUserName + " Force Logoff", StringComparison.OrdinalIgnoreCase));
                    Microsoft.Win32.TaskScheduler.Task myTask = myTasks.ElementAt(0);
                    //myTask.Enabled = false;
                    myTask.Definition.Settings.Enabled = false;
                    myTask.RegisterChanges();
                }

                MessageBox.Show(sSelectedUserName + " has been disabled now!");
                usrpSelectedUser.Dispose();
                pctxLocalMachine.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.WriteLine(ex.StackTrace);
            }
            btnEnableUser.Enabled  = true;
            btnDisableUser.Enabled = false;
        }
Beispiel #2
0
        /// <summary>
        /// Handles the Click event of the okBtn control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        /// <remarks>Changed in release 1.8.4 so that when a user cancels the password dialog, it no longer throws an exception but rather displays an error.</remarks>
        private void okBtn_Click(object sender, System.EventArgs e)
        {
            if (TaskDefinition.Actions.Count == 0)
            {
                MessageBox.Show(EditorProperties.Resources.TaskMustHaveActionsError, null, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (TaskDefinition.Settings.DeleteExpiredTaskAfter != TimeSpan.Zero && !ValidateOneTriggerExpires())
            {
                MessageBox.Show(EditorProperties.Resources.Error_TaskDeleteMustHaveExpiringTrigger, null, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (TaskDefinition.LowestSupportedVersion > TaskDefinition.Settings.Compatibility)
            {
                MessageBox.Show(EditorProperties.Resources.Error_TaskPropertiesIncompatibleSimple, null, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (RegisterTaskOnAccept)
            {
                if (Task != null && !TaskDefinition.Principal.RequiresPassword())
                {
                    Task.RegisterChanges();
                }
                else
                {
                    var user = TaskDefinition.Principal.ToString();
                    user = string.IsNullOrEmpty(user) ? WindowsIdentity.GetCurrent().Name : user;
                    string     pwd = null;
                    TaskFolder fld = TaskService.GetFolder(TaskFolder);
                    if (TaskDefinition.Principal.RequiresPassword())
                    {
                        pwd = InvokeCredentialDialog(user, this);
                        if (pwd == null)
                        {
                            //throw new System.Security.Authentication.AuthenticationException(EditorProperties.Resources.UserAuthenticationError);
                            MessageBox.Show(EditorProperties.Resources.Error_PasswordMustBeProvided, null, MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                    Task = fld.RegisterTaskDefinition(taskPropertiesControl1.TaskName, TaskDefinition, TaskCreation.CreateOrUpdate,
                                                      user, pwd, TaskDefinition.Principal.LogonType);
                }
            }
            DialogResult = DialogResult.OK;
            Close();
        }
        static void Main(string[] args)
        {
            /*string sUserName = "******";
             * PrincipalContext pctx;
             * UserPrincipal usr;
             *
             * pctx = new PrincipalContext(ContextType.Machine);
             * usr = UserPrincipal.FindByIdentity(pctx, IdentityType.SamAccountName, sUserName);
             *
             * var myUserLogonTimes = PermittedLogonTimes.GetLogonTimes(usr.PermittedLogonTimes, TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName));
             * for (int iIndex = 0; iIndex < myUserLogonTimes.Count; iIndex++)
             * {
             *  LogonTime lExtractedTime = myUserLogonTimes.ElementAt(iIndex);
             *  Console.WriteLine("Day ="+lExtractedTime.DayOfWeek.ToString()+"; Begin="+lExtractedTime.BeginTime.ToShortTimeString()+
             *      "; End="+lExtractedTime.EndTime.ToShortTimeString()+"!");
             * }
             * for( int iIndex = 0; iIndex < usr.PermittedLogonTimes.Length; iIndex++ )
             * {
             *  Console.WriteLine(iIndex+": "+usr.PermittedLogonTimes.ElementAt(iIndex));
             * }*/

            //var zone = TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName);

            /*var times = new List<MyParentalControlSoftware.LogonTime>();
             *
             * var Suntime = new LogonTime(DayOfWeek.Sunday, new DateTime(2011, 1, 1, 0, 0, 0), new DateTime(2011, 1, 1, 1, 0, 0));
             * times.Add(Suntime);
             *
             * var Montime = new LogonTime(DayOfWeek.Monday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0));
             * times.Add(Montime);
             *
             * var Tuetime = new LogonTime(DayOfWeek.Tuesday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0));
             * times.Add(Tuetime);
             *
             * var Wedtime = new LogonTime(DayOfWeek.Wednesday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0));
             * times.Add(Wedtime);
             *
             * var Thutime = new LogonTime(DayOfWeek.Thursday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0));
             * times.Add(Thutime);
             *
             * var Fritime = new LogonTime(DayOfWeek.Friday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0));
             * times.Add(Fritime);
             *
             * var Sattime = new LogonTime(DayOfWeek.Saturday, new DateTime(2011, 1, 1, 23, 0, 0), new DateTime(2011, 1, 2, 0, 0, 0));
             * times.Add(Sattime);
             *
             * var mask = PermittedLogonTimes.GetByteMask(times);
             *
             * foreach( byte byteVal in mask)
             * {
             *  Console.WriteLine("{0}", byteVal);
             * }*/

            // Access the Task Scheduler and change the trigger times for the Logoff Tasks for both Advik and Adhrit
            using (TaskService ts = new TaskService(@"\"))
            {
                TaskFolder myFolder = ts.GetFolder("Karthik's Custom Tasks");

                var myTasks = myFolder.Tasks.Where(t => t.Name.Equals("Force Advik's User Logoff", StringComparison.OrdinalIgnoreCase));
                Microsoft.Win32.TaskScheduler.Task myTask = myTasks.ElementAt(0);
                myTask.Definition.Triggers.Clear();
                WeeklyTrigger myWeekdayTrigger = new WeeklyTrigger
                {
                    StartBoundary = DateTime.Parse("4:59:30 PM"),
                    DaysOfWeek    = DaysOfTheWeek.Monday | DaysOfTheWeek.Tuesday | DaysOfTheWeek.Wednesday | DaysOfTheWeek.Thursday | DaysOfTheWeek.Friday,
                    WeeksInterval = 1
                };
                myTask.Definition.Triggers.Add(myWeekdayTrigger);

                myTask.RegisterChanges();
            }
            Console.ReadLine();
        }
Beispiel #4
0
        private void Save_Click(object sender, EventArgs e)
        {
            DateTime         dtSunFromTime, dtMonFromTime, dtTueFromTime, dtWedFromTime, dtThuFromTime, dtFriFromTime, dtSatFromTime;
            DateTime         dtSunToTime, dtMonToTime, dtTueToTime, dtWedToTime, dtThuToTime, dtFriToTime, dtSatToTime;
            String           sSelectedUserName = "", sFromTime = "", sToTime = "";
            LogonTime        lSunLogonTime, lMonLogonTime, lTueLogonTime, lWedLogonTime;
            LogonTime        lThuLogonTime, lFriLogonTime, lSatLogonTime;
            List <LogonTime> lstLogonTimes = new List <LogonTime>();
            PrincipalContext pctxLocalMachine;
            UserPrincipal    usrpSelectedUser;

            sSelectedUserName = cmbUserList.SelectedItem.ToString();
            // Testing to see if I can use the WMI API for Windows Parental Controls
            pctxLocalMachine = new PrincipalContext(ContextType.Machine);
            usrpSelectedUser = UserPrincipal.FindByIdentity(pctxLocalMachine, IdentityType.SamAccountName, sSelectedUserName);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbSunFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbSunToTime.SelectedItem.ToString();
            dtSunFromTime = DateTime.Parse(sFromTime);
            dtSunToTime   = DateTime.Parse(sToTime);
            lSunLogonTime = new LogonTime(System.DayOfWeek.Sunday, dtSunFromTime, dtSunToTime);
            lstLogonTimes.Add(lSunLogonTime);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbMonFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbMonToTime.SelectedItem.ToString();
            dtMonFromTime = DateTime.Parse(sFromTime);
            dtMonToTime   = DateTime.Parse(sToTime);
            lMonLogonTime = new LogonTime(System.DayOfWeek.Monday, dtMonFromTime, dtMonToTime);
            lstLogonTimes.Add(lMonLogonTime);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbTueFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbTueToTime.SelectedItem.ToString();
            dtTueFromTime = DateTime.Parse(sFromTime);
            dtTueToTime   = DateTime.Parse(sToTime);
            lTueLogonTime = new LogonTime(System.DayOfWeek.Tuesday, dtTueFromTime, dtTueToTime);
            lstLogonTimes.Add(lTueLogonTime);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbWedFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbWedToTime.SelectedItem.ToString();
            dtWedFromTime = DateTime.Parse(sFromTime);
            dtWedToTime   = DateTime.Parse(sToTime);
            lWedLogonTime = new LogonTime(System.DayOfWeek.Wednesday, dtWedFromTime, dtWedToTime);
            lstLogonTimes.Add(lWedLogonTime);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbThuFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbThuToTime.SelectedItem.ToString();
            dtThuFromTime = DateTime.Parse(sFromTime);
            dtThuToTime   = DateTime.Parse(sToTime);
            lThuLogonTime = new LogonTime(System.DayOfWeek.Thursday, dtThuFromTime, dtThuToTime);
            lstLogonTimes.Add(lThuLogonTime);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbFriFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbFriToTime.SelectedItem.ToString();
            dtFriFromTime = DateTime.Parse(sFromTime);
            dtFriToTime   = DateTime.Parse(sToTime);
            lFriLogonTime = new LogonTime(System.DayOfWeek.Friday, dtFriFromTime, dtFriToTime);
            lstLogonTimes.Add(lFriLogonTime);

            sFromTime     = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " ";
            sFromTime     = sFromTime + cmbSatFromTime.SelectedItem.ToString();
            sToTime       = sToTime + cmbSatToTime.SelectedItem.ToString();
            dtSatFromTime = DateTime.Parse(sFromTime);
            dtSatToTime   = DateTime.Parse(sToTime);
            lSatLogonTime = new LogonTime(System.DayOfWeek.Saturday, dtSatFromTime, dtSatToTime);
            lstLogonTimes.Add(lSatLogonTime);

            // Access the Task Scheduler and change the trigger times for the Logoff Tasks for both Advik and Adhrit
            using (TaskService ts = new TaskService(@"\"))
            {
                TaskFolder myFolder = ts.GetFolder("Karthik's Custom Tasks");

                if (myFolder.Tasks.Count > 0)
                {
                    var myTasks = myFolder.Tasks.Where(t => t.Name.Equals(sSelectedUserName + " Force Logoff", StringComparison.OrdinalIgnoreCase));
                    Microsoft.Win32.TaskScheduler.Task myTask = myTasks.ElementAt(0);
                    myTask.Definition.Triggers.Clear();

                    if (dtMonToTime.ToShortTimeString() == dtTueToTime.ToShortTimeString() &&
                        dtTueToTime.ToShortTimeString() == dtWedToTime.ToShortTimeString() &&
                        dtWedToTime.ToShortTimeString() == dtThuToTime.ToShortTimeString() &&
                        dtThuToTime.ToShortTimeString() == dtFriToTime.ToShortTimeString())
                    {
                        var myWeekdayTrigger = new WeeklyTrigger
                        {
                            StartBoundary = dtMonToTime.AddSeconds(-30),
                            DaysOfWeek    = DaysOfTheWeek.Monday | DaysOfTheWeek.Tuesday | DaysOfTheWeek.Wednesday | DaysOfTheWeek.Thursday | DaysOfTheWeek.Friday,
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myWeekdayTrigger);
                    }
                    else
                    {
                        var myMondayTrigger = new WeeklyTrigger(DaysOfTheWeek.Monday)
                        {
                            StartBoundary = dtMonToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myMondayTrigger);

                        var myTuesdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Tuesday)
                        {
                            StartBoundary = dtTueToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myTuesdayTrigger);

                        var myWednesdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Wednesday)
                        {
                            StartBoundary = dtWedToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myWednesdayTrigger);

                        var myThursdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Thursday)
                        {
                            StartBoundary = dtThuToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myThursdayTrigger);

                        var myFridayTrigger = new WeeklyTrigger(DaysOfTheWeek.Friday)
                        {
                            StartBoundary = dtFriToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myFridayTrigger);
                    }

                    if (dtSunToTime.ToShortTimeString() == dtSatToTime.ToShortTimeString())
                    {
                        var myWeekendTrigger = new WeeklyTrigger(DaysOfTheWeek.Saturday | DaysOfTheWeek.Sunday)
                        {
                            StartBoundary = dtSunToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(myWeekendTrigger);
                    }
                    else
                    {
                        var mySaturdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Saturday)
                        {
                            StartBoundary = dtSatToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(mySaturdayTrigger);

                        var mySundayTrigger = new WeeklyTrigger(DaysOfTheWeek.Sunday)
                        {
                            StartBoundary = dtSunToTime.AddSeconds(-30),
                            WeeksInterval = 1
                        };
                        myTask.Definition.Triggers.Add(mySundayTrigger);
                    }
                    myTask.RegisterChanges();
                }
            }

            if (cmbSunFromTime.SelectedIndex == cv_iSunFromTime &&
                cmbSunToTime.SelectedIndex == cv_iSunToTime &&
                cmbMonFromTime.SelectedIndex == cv_iMonFromTime &&
                cmbMonToTime.SelectedIndex == cv_iMonToTime &&
                cmbTueFromTime.SelectedIndex == cv_iTueFromTime &&
                cmbTueToTime.SelectedIndex == cv_iTueToTime &&
                cmbWedFromTime.SelectedIndex == cv_iWedFromTime &&
                cmbWedToTime.SelectedIndex == cv_iWedToTime &&
                cmbThuFromTime.SelectedIndex == cv_iThuFromTime &&
                cmbThuToTime.SelectedIndex == cv_iThuToTime &&
                cmbFriFromTime.SelectedIndex == cv_iFriFromTime &&
                cmbFriToTime.SelectedIndex == cv_iFriToTime &&
                cmbSatFromTime.SelectedIndex == cv_iSatFromTime &&
                cmbSatToTime.SelectedIndex == cv_iSatToTime)
            {
                MessageBox.Show("No changes made that need to be saved!");
                btnSave.Enabled = false;
            }
            else
            {
                byte[] byteMaskForUser;

                // Saving Permitted Logon Times based on selection
                byteMaskForUser = PermittedLogonTimes.GetByteMask(lstLogonTimes);
                usrpSelectedUser.PermittedLogonTimes = byteMaskForUser;
                usrpSelectedUser.Save();

                MessageBox.Show("Successfully saved user time limit changes for " + usrpSelectedUser.Name + "!");

                usrpSelectedUser.Dispose();
                pctxLocalMachine.Dispose();

                btnSave.Enabled = false;
            }
        }
Beispiel #5
0
        private static void TamperTask(string task, string binary, string arguments, bool run, string host, string username, string password, string domain)
        {
            TaskService ts = AuthenticateToRemoteHost(host, username, password, domain);

            if (ts != null)
            {
                Task t = ts.GetTask(task);
                if (t == null)
                {
                    Console.WriteLine("[+] Task not found!");
                    return;
                }


                if (binary.Split('-').Length == 5) // weak parsing, I know but YOLO
                {
                    // we suppose we want to execute a COM object and not a binary
                    ComHandlerAction action = new ComHandlerAction(new Guid(binary), string.Empty);
                    // add to the top of the list, otherwise it will not execute
                    Console.WriteLine("[+] Adding custom action to task.. ");
                    t.Definition.Actions.Insert(0, action);

                    // enable the task in case it's disabled
                    Console.WriteLine("[+] Enabling the task");
                    t.Definition.Settings.Enabled = true;
                    t.RegisterChanges();

                    GetTaskInfo(task, host, username, password, domain);
                    Console.WriteLine("\r\n");
                    // run it
                    if (run)
                    {
                        Console.WriteLine("[+] Triggering execution");
                        t.Run();
                    }


                    Console.WriteLine("[+] Cleaning up");
                    // remove the new action
                    t.Definition.Actions.Remove(action);
                    t.RegisterChanges();
                }
                else
                {
                    ExecAction action = new ExecAction(binary, arguments, null);

                    // add to the top of the list, otherwise it will not execute
                    Console.WriteLine("[+] Adding custom action to task.. ");
                    t.Definition.Actions.Insert(0, action);

                    // enable the task in case it's disabled
                    Console.WriteLine("[+] Enabling the task");
                    t.Definition.Settings.Enabled = true;
                    t.RegisterChanges();

                    GetTaskInfo(task, host, username, password, domain);
                    Console.WriteLine("\r\n");
                    // run it
                    if (run)
                    {
                        Console.WriteLine("[+] Triggering execution");
                        t.Run();
                    }


                    Console.WriteLine("[+] Cleaning up");
                    // remove the new action
                    t.Definition.Actions.Remove(action);
                    t.RegisterChanges();
                }
            }
        }