Example #1
0
        public PluginResult Scan(ChangedValueInfo valueToScan)
        {
            PluginResult pluginResult = new PluginResult {
                RiskRate = ThreatRiskRates.NoRisk
            };

            try
            {
                if (string.IsNullOrEmpty(valueToScan?.ChangedObject?.Value))
                {
                    return(pluginResult);
                }

                BadValueItem badValueItem = badValueItems.FirstOrDefault(s => valueToScan.ChangedObject.Value.ToLower().Contains(s.BadValue.ToLower()));

                if (badValueItem == null)
                {
                    return(pluginResult);
                }

                pluginResult.RiskRate = badValueItem.Risk;
                pluginResult.Message  = badValueItem.Description;

                return(pluginResult);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(null);
            }
        }
Example #2
0
        public PluginResult Scan(Dictionary <string, IBeSafeRegistryPlugin> plugins, dynamic scanObject, bool canFight)
        {
            ChangedValueInfo regitryValueInfo = (ChangedValueInfo)scanObject;

            if (regitryValueInfo == null)
            {
                return(null);
            }

            PluginResult scanResult = new PluginResult();

            foreach (KeyValuePair <string, IBeSafeRegistryPlugin> plugin in plugins)
            {
                scanResult = plugin.Value.Scan(regitryValueInfo, canFight);
                Debug.WriteLine(scanResult.RiskRate);
                if (scanResult.RiskRate != ThreatRiskRates.NoRisk)
                {
                    break;
                }
            }

            return(scanResult);
        }
        public PluginResult Scan(ChangedValueInfo registryKeyInfo, bool canFightWithThreat)
        {
            try
            {
                PluginResult result = new PluginResult
                {
                    PluginInfo    = _pluginInfo,
                    ScannedObject = registryKeyInfo,
                    RiskRate      = ThreatRiskRates.NoRisk,
                };

                foreach (IScanner scanner in _scanners)
                {
                    PluginResult tempResut = scanner.Scan(registryKeyInfo);

                    // On first threat found return the threat and ignore other scanners
                    if (tempResut.RiskRate != ThreatRiskRates.NoRisk)
                    {
                        result.RiskRate = tempResut.RiskRate;
                        result.Message  = tempResut.Message;
                        break;
                    }
                }

                if (canFightWithThreat)
                {
                    // Fight with the registry value! for example remove it :)
                }

                return(result);
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"EX : {ex.Message}");
                return(null);
            }
        }
Example #4
0
 private void ValueChangedArrived(ChangedValueInfo valueInfo)
 {
     _changedValuesStack.Enqueue(valueInfo);
 }