Beispiel #1
0
        private bool Connect()
        {
            HttpClientHandler clientHandler       = new HttpClientHandler();
            CovenantAPI       LoginCovenantClient = new CovenantAPI(CovenantURI, new BasicAuthenticationCredentials {
                UserName = "", Password = ""
            }, clientHandler);

            LoginCovenantClient.HttpClient.Timeout = new TimeSpan(0, 0, 3);
            try
            {
                // Test connection with a blank login request
                CovenantUserLoginResult result = LoginCovenantClient.ApiUsersLoginPost(new CovenantUserLogin {
                    UserName = "", Password = ""
                });
            }
            catch (HttpRequestException e) when(e.InnerException.GetType().Name == "AuthenticationException")
            {
                // Invalid login is ok, just verifying that we can reach Covenant
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
            return(true);
        }
Beispiel #2
0
        private Elite(Uri CovenantURI, string CovenantUsername, string CovenantPassword, string CovenantHash)
        {
            HttpClientHandler clientHandler = new HttpClientHandler();

            clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, errors) =>
            {
                // Cert Pinning - Trusts only the Covenant API certificate
                if (CovenantHash == "" || cert.GetCertHashString() == CovenantHash)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            };

            CovenantAPI LoginCovenantClient = new CovenantAPI(CovenantURI, new BasicAuthenticationCredentials {
                UserName = "", Password = ""
            }, clientHandler);
            CovenantUserLoginResult result = LoginCovenantClient.ApiUsersLoginPost(new CovenantUserLogin {
                UserName = CovenantUsername, Password = CovenantPassword
            });

            if (result.Success ?? default)
            {
                TokenCredentials creds          = new TokenCredentials(result.Token);
                CovenantAPI      CovenantClient = new CovenantAPI(CovenantURI, creds, clientHandler);
                this.EliteMenu = new EliteMenu(CovenantClient);
                EventPoller poller = new EventPoller();
                poller.EventOccurred += this.EliteMenu.onEventOccured;
                Task.Run(() => poller.Poll(CovenantClient));

                ReadLine.AutoCompletionHandler = this.EliteMenu.GetCurrentMenuItem().TabCompletionHandler;
            }
            else
            {
                EliteConsole.PrintFormattedErrorLine("Covenant login failed. Check your username and password again.");
            }
        }
Beispiel #3
0
        static async Task Main(string[] args)
        {
            if (args.Length < 1)
            {
                displayHelp();
                Environment.Exit(0);
            }

            HttpClientHandler clientHandler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (sender, cert, chain, errors) =>
                {
                    return(true);
                }
            };
            TokenCredentials creds       = null;
            string           accessToken = "";
            string           covenantURL = args[0];

            switch (args.Length)
            {
            case 0:
                displayHelp();
                break;

            case 1:
                covenantURL = args[0];
                Common.TestConnection(covenantURL);
                Console.WriteLine("[!] No Access Token Provided. Getting Token.");
                Console.Write("[!] Enter your Username: "******"", Password = ""
                }, clientHandler);
                CovenantUserLoginResult result = covenantConnection.Login(new CovenantUserLogin {
                    UserName = username, Password = Common.ConvertToUnsecureString(password)
                });
                if (result.Success ?? default)
                {
                    Console.WriteLine("[+] Access Token Received!");
                    accessToken = result.CovenantToken;

                    creds = new TokenCredentials(accessToken);

                    //CovenantAPI _client = new CovenantAPI(
                    covenantConnection = new CovenantAPI(
                        new Uri(covenantURL),
                        creds,
                        clientHandler
                        );
                    curUser = covenantConnection.GetCurrentUser();
                }
                else
                {
                    Console.WriteLine("[!] Failed to Connect to Covenant");
                }
                break;

            case 2:
                covenantURL = args[0];
                accessToken = args[1];
                Common.TestConnection(covenantURL);
                Console.WriteLine("[+] Access Token Provided. Verifying validity.");
                creds = new TokenCredentials(accessToken);
                covenantConnection = new CovenantAPI(
                    new Uri(covenantURL),
                    creds,
                    clientHandler
                    );
                Console.WriteLine("[+] Access Token is Valid!");
                break;

            default:
                displayHelp();
                break;
            }
            eventHC = await EventHub.Connect(covenantURL, accessToken);

            gruntHC = await GruntHub.Connect(covenantURL, accessToken);

            while (true)
            {
            }
            ;
        }
Beispiel #4
0
        private bool Login(string CovenantUsername, string CovenantPassword, string CovenantHash)
        {
            HttpClientHandler clientHandler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (sender, cert, chain, errors) =>
                {
                    // Cert Pinning - Trusts only the Covenant API certificate
                    return(CovenantHash == "" || cert.GetCertHashString() == CovenantHash);
                }
            };

            CovenantAPI LoginCovenantClient = new CovenantAPI(this.CovenantURI, new BasicAuthenticationCredentials {
                UserName = "", Password = ""
            }, clientHandler);

            try
            {
                CovenantUserLoginResult result = LoginCovenantClient.ApiUsersLoginPost(new CovenantUserLogin {
                    UserName = CovenantUsername, Password = CovenantPassword
                });
                if (result.Success ?? default)
                {
                    TokenCredentials creds          = new TokenCredentials(result.Token);
                    CovenantAPI      CovenantClient = new CovenantAPI(CovenantURI, creds, clientHandler);
                    this.EliteMenu = new EliteMenu(CovenantClient);
                    ReadLine.AutoCompletionHandler = this.EliteMenu.GetCurrentMenuItem().TabCompletionHandler;
                    this.EventPoller = new Task(() =>
                    {
                        int DelayMilliSeconds = 2000;
                        DateTime toDate       = DateTime.FromBinary(CovenantClient.ApiEventsTimeGet().Value);
                        DateTime fromDate;
                        while (true)
                        {
                            try
                            {
                                fromDate = toDate;
                                toDate   = DateTime.FromBinary(CovenantClient.ApiEventsTimeGet().Value);
                                IList <EventModel> events = CovenantClient.ApiEventsRangeByFromdateByTodateGet(fromDate.ToBinary(), toDate.ToBinary());
                                foreach (var anEvent in events)
                                {
                                    string context = this.EliteMenu.GetMenuLevelTitleStack();
                                    if (anEvent.Type == EventType.Normal)
                                    {
                                        if (this.EventPrinter.PrintEvent(anEvent, context))
                                        {
                                            this.EliteMenu.PrintMenuLevel();
                                        }
                                    }
                                    else if (anEvent.Type == EventType.Download)
                                    {
                                        DownloadEvent downloadEvent = CovenantClient.ApiEventsDownloadByIdGet(anEvent.Id ?? default);
                                        File.WriteAllBytes(Path.Combine(Common.EliteDownloadsFolder, downloadEvent.FileName), Convert.FromBase64String(downloadEvent.FileContents));
                                    }
                                }
                                Thread.Sleep(DelayMilliSeconds);
                            }
                            catch (Exception) { }
                        }
                    }, this.CancelEventPoller.Token);
                }
                else
                {
                    return(false);
                }
            }
            catch (HttpOperationException)
            {
                return(false);
            }
            return(true);
        }