예제 #1
0
        public static void DownloadXLSX()
        {
            using (var wc = new WebClient())
            {
                wc.DownloadFile(Config.XLSXAddress, Config.PathToXLSX);
            }

            ThreatCollection.Clear();

            using (var fs = new FileStream(Config.PathToXLSX, FileMode.Open))
            {
                using (var reader = ExcelReaderFactory.CreateReader(fs))
                {
                    int infofields = 0;

                    while (reader.Read())
                    {
                        if (infofields < 2)
                        {
                            infofields++;
                            continue;
                        }

                        var threat = new Threat();

                        threat.Id                      = int.Parse(reader.GetValue(0).ToString());
                        threat.Name                    = reader.GetString(1);
                        threat.Description             = reader.GetString(2);
                        threat.Sources                 = ThreatSource.GetThreatSources(reader.GetString(3));
                        threat.ImpactObject            = reader.GetString(4);
                        threat.BreachOfConfidentiality = GetBoolean(reader.GetValue(5).ToString());
                        threat.BreachOfIntegrity       = GetBoolean(reader.GetValue(6).ToString());
                        threat.BreachOfAvailability    = GetBoolean(reader.GetValue(7).ToString());
                        threat.DateOfIncluding         = reader.GetDateTime(8);
                        threat.DateOfLastChange        = reader.GetDateTime(9);

                        ThreatCollection.Add(new ThreatShortForm(threat));

                        SaveToJSON();

                        Config.LastUpdate = DateTime.Now;
                    }
                }
            }
        }
예제 #2
0
 public bool Equals(Threat thr)
 {
     if (thr is null)
     {
         return(false);
     }
     return(Id.Equals(thr.Id) && Name.Equals(thr.Name) && Description.Equals(thr.Description) && ThreatSource.Equals(thr.ThreatSource) && InteractionObject.Equals(thr.InteractionObject) && ConfidentialityBreach.Equals(thr.ConfidentialityBreach) && IntegrityBreach.Equals(thr.IntegrityBreach) && AccessBreach.Equals(thr.AccessBreach));
 }
예제 #3
0
        public void enterTabPageThreatsList(object sender, EventArgs e)
        {
            mf.dgvActualTCUIThreats.Rows.Clear();

            ThreatSource ts = new ThreatSource {
                Potencial = getMaxIntrPot(IS.listOfSources)
            };

            if (ts.Potencial == -1)
            {
                MessageBox.Show("Перед определением актуальных угроз утечки информации по техническим каналам выберите нарушителя в соответствующей вкладке.");
                mf.tabControlTCUI.SelectedTab = mf.tabControlTCUI.TabPages[0];
                mf.treeView.SelectedNode      = mf.returnTreeNode("tnIntruder");
                return;
            }

            List <TCUIThreat> actualTCUIThreats = new List <TCUIThreat>();

            foreach (IntruderAbilityControl iac in controlsIAC)
            {
                iac.updateIac();
                int intrPot = (int)iac.intrud;
                if ((iac.threatValue >= 10 && iac.Checked) && iac.abilityOfRealization != "" && iac.damage != "")
                {
                    if (iac.damage == "Высокая" && intrPot <= ts.Potencial)
                    {
                        actualTCUIThreats.Add(listOfTCUIThreats.Find(t => t.Name == iac.threatName));
                    }

                    if (iac.damage == "Средняя" && (iac.abilityOfRealization == "Средняя" || iac.abilityOfRealization == "Высокая") && intrPot <= ts.Potencial)
                    {
                        actualTCUIThreats.Add(listOfTCUIThreats.Find(t => t.Name == iac.threatName));
                    }

                    if (iac.damage == "Низкая" && iac.abilityOfRealization == "Высокая" && intrPot <= ts.Potencial)
                    {
                        actualTCUIThreats.Add(listOfTCUIThreats.Find(t => t.Name == iac.threatName));
                    }
                }
            }

            foreach (TCUIThreat tct in actualTCUIThreats)
            {
                mf.dgvActualTCUIThreats.Rows.Add(tct.Identificator + " " + tct.Name, tct.Description);
            }

            bool fullList = true;

            foreach (IntruderAbilityControl iac in controlsIAC)
            {
                if (!iac.Checked)
                {
                    fullList = false;
                }
            }

            if (fullList)
            {
                if (mf.dgvActualTCUIThreats.Rows.Count == 0)
                {
                    mf.lbTCUIInfo.Text = "Угрозы утечки информации по техническим каналам не актуальны для информационной системы.";
                }
                else
                {
                    mf.lbTCUIInfo.Text = "Угрозы утечки информации по техническим каналам в списке являются актуальными для информационной системы.";
                }
            }
            else
            {
                mf.lbTCUIInfo.Text = "Для определения списка актуальных угроз утечки по техническим каналам, выберите все поля на предыдущих вкладках.";
            }
            setDGVHeight();
        }