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); }
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."); } }
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) { } ; }
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); }