/// <summary> /// Validates Basic Encryption /// </summary> /// <param name="url">url</param> /// <param name="securityType">Type</param> private void ValidateEncryption(Uri url, SecurityConfigurationType securityType) { char[] delimiters = new char[] { ';' }; string[] configurations = new string[] { }; NavigateSettingsConfiguration(url); if (securityType == SecurityConfigurationType.Basic) { configurations = Properties.Resources.BasicValidation.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); } if (securityType == SecurityConfigurationType.Enhanced) { configurations = Properties.Resources.EnhancedValidation.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); } if (securityType == SecurityConfigurationType.Custom) { configurations = Properties.Resources.CustomValidation.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); } foreach (var configuration in configurations) { CheckDictionary(configuration, securityType); } }
/// <summary> /// Check the values from dictionary /// </summary> /// <param name="name">Name</param> /// <param name="configurationType">Type</param> private void CheckDictionary(string name, SecurityConfigurationType configurationType) { string result; var searchList = _optionsList.First(x => !x.Name.Equals(name, StringComparison.OrdinalIgnoreCase)); var key = searchList.Key; var value = searchList.Value; if (_pairedValues.TryGetValue(key, out result)) { if (!result.Equals(value)) { throw new Exception($"Validation failed for { (object)key}, Value: { (object)value}"); } ExecutionServices.SystemTrace.LogDebug($"Validated { (object)key} with value:{ (object)result} in { (object)configurationType} setting"); } else { throw new Exception($"Validation failed for {name}"); } }
/// <summary> /// Setting Custom Security Settings /// </summary> /// <param name="printer">printer Info</param> /// <param name="securityType"> Security Configuration Type</param> private void CustomSecurityConfiguration(PrintDeviceInfo printer, SecurityConfigurationType securityType) { _cookies = new CookieCollection(); Uri baseUri = new Uri($"https://{printer.Address}"); if (!string.IsNullOrEmpty(printer.AdminPassword)) { _authorizationRequired = true; Uri url = new Uri(baseUri, "hp/device/SignIn/Index"); _webRequest = HttpWebRequestValidate(url); _webRequest.CookieContainer = new CookieContainer(); _webRequest.CookieContainer.Add(_cookies); _webRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " + _strAuthorization); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SignInIndexConfig"), UserName)); } else { _configUrl = new Uri(baseUri, "welcome.html"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Get(_webRequest); if (_result.StatusCode == 0) { _authorizationRequired = true; _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Get(_webRequest); } } _cookies = _result.Cookies; _configUrl = new Uri(baseUri, "welcome.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, GetKey("WelcomeConfig")); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); int startindex = _result.Response.IndexOf("Hide\" VALUE=\"", StringComparison.OrdinalIgnoreCase) + 13; string truncatedResponse = _result.Response.Substring(startindex); int endIndex = truncatedResponse.IndexOf("\">", StringComparison.OrdinalIgnoreCase); string hideValue = truncatedResponse.Substring(0, endIndex); _configUrl = new Uri(baseUri, "level.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("LevelConfig"), securityType, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "password.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("PasswordConfig"), printer.AdminPassword, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "websecurity/http_mgmt.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("WebSecurityConfig"), _activityData.EncryptionStrength.ToLower(CultureInfo.InvariantCulture), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "mgmt_protocols.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("MgmtConfig"), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "snmp.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SNMPCustomConfig"), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "snmpv1v2_creds.html/config"); _webRequest = (HttpWebRequest)WebRequest.Create(_configUrl); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SNMPV1V2Config"), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "acl.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("ACLConfig"), _activityData.AccessControlIpv4, _activityData.Mask, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "protocols.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("ProtocolConfig"), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); int startIndex = _result.Response.IndexOf("SuserID\">", StringComparison.OrdinalIgnoreCase) + 9; string tempResponse = _result.Response.Substring(startIndex); endIndex = tempResponse.IndexOf(" / ", StringComparison.OrdinalIgnoreCase); tempResponse = tempResponse.Substring(0, endIndex); _configUrl = new Uri(baseUri, "dot1x_config.htm/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("Dot1xConfig"), tempResponse, _activityData.AuthenticationPassword, _activityData.AuthenticationPassword, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "review.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("ReviewConfig"), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); PowerCyclePrinter(printer.Address); ValidateEncryption(baseUri, securityType); }
/// <summary> /// Setting Basic/Enhanced Security Settings /// </summary> /// <param name="printer">printer Info</param> /// <param name="securityType"> Security Configuration Type</param> private void BasicEnhancedSecurityConfig(PrintDeviceInfo printer, SecurityConfigurationType securityType) { _cookies = new CookieCollection(); Uri baseUri = new Uri($"https://{printer.Address}"); if (!string.IsNullOrEmpty(printer.AdminPassword)) { _authorizationRequired = true; Uri url = new Uri(baseUri, "hp/device/SignIn/Index"); _webRequest = HttpWebRequestValidate(url); _webRequest.CookieContainer = new CookieContainer(); _webRequest.CookieContainer.Add(_cookies); _webRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " + _strAuthorization); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SignInIndexConfig"), UserName)); } else { _configUrl = new Uri(baseUri, "welcome.html"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Get(_webRequest); if (_result.StatusCode == 0) { _authorizationRequired = true; _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Get(_webRequest); } } _cookies = _result.Cookies; _configUrl = new Uri(baseUri, "welcome.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, GetKey("WelcomeConfig")); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); int startindex = _result.Response.IndexOf("Hide\" VALUE=\"", StringComparison.OrdinalIgnoreCase) + 13; string truncatedResponse = _result.Response.Substring(startindex); int endIndex = truncatedResponse.IndexOf("\">", StringComparison.OrdinalIgnoreCase); string hideValue = truncatedResponse.Substring(0, endIndex); _configUrl = new Uri(baseUri, "level.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("LevelConfig"), securityType, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); _configUrl = new Uri(baseUri, "password.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("PasswordConfig"), printer.AdminPassword, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); if (securityType == SecurityConfigurationType.Enhanced) { _configUrl = new Uri(baseUri, "snmp.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SNMPConfig"), _activityData.SnmpV3Enhanced, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{ (object)_configUrl.AbsoluteUri} Status:{ (object)_result.StatusCode}"); _configUrl = new Uri(baseUri, "snmpv3_creds.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SNMPV3Config"), _activityData.Snmpv3UserName, _activityData.AuthenticationPassphraseProtocol, _activityData.PrivacyPassphraseProtocol, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{ (object)_configUrl.AbsoluteUri} Status:{ (object)_result.StatusCode}"); _configUrl = new Uri(baseUri, "snmp_legacy.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("SNMPLegacy"), _activityData.Snmpv1v2ReadOnlyAccess, hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); } _configUrl = new Uri(baseUri, "review.html/config"); _webRequest = PrepareHttpWebRequest(_configUrl); _result = HttpWebEngine.Post(_webRequest, string.Format(GetKey("ReviewConfig"), hideValue)); ExecutionServices.SystemTrace.LogDebug($"Navigating to Url:{_configUrl.AbsoluteUri} Status:{_result.StatusCode}"); PowerCyclePrinter(printer.Address); ValidateEncryption(baseUri, securityType); }