Пример #1
0
        /// <summary>
        /// Метод выстаскивает текстовое описание угроз, парсит, приводит к типу Threat и возвращает массив объектов Threat.
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public static List <Threat> GetThreatsFromXlsx(FileInfo file, KPSZIContext db)
        {
            List <List <string> > listOfXlslxRows = File_Selected_New(file);
            List <ThreatSource>   tss             = db.ThreatSources.ToList();

            List <Threat> listOfAllThreatsFromFile = new List <Threat>();

            for (int i = 0; i < listOfXlslxRows[0].Count; i++)
            {
                Threat thr = new Threat();
                thr.ThreatNumber          = Convert.ToInt32(listOfXlslxRows[0][i]);
                thr.Name                  = listOfXlslxRows[1][i];
                thr.Description           = listOfXlslxRows[2][i];
                thr.ThreatSources         = ThreatSource.Parse(listOfXlslxRows[3][i], tss);
                thr.ObjectOfInfluence     = listOfXlslxRows[4][i];
                thr.ConfidenceViolation   = (listOfXlslxRows[5][i] == "1") ? true : false;
                thr.IntegrityViolation    = (listOfXlslxRows[6][i] == "1") ? true : false;
                thr.AvailabilityViolation = (listOfXlslxRows[7][i] == "1") ? true : false;
                thr.DateOfAdd             = DateTime.Parse(listOfXlslxRows[8][i]);
                thr.DateOfChange          = DateTime.Parse(listOfXlslxRows[9][i]);
                listOfAllThreatsFromFile.Add(thr);
            }

            return(listOfAllThreatsFromFile);
        }
Пример #2
0
        private void rewriteThreatsDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Перезаписать базу угроз
            if (MessageBox.Show("Будут удалены все угрозы из таблицы в БД и записаны заново.\nПродолжить?", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                using (KPSZIContext db = new KPSZIContext())
                {
                    FileInfo fi = new FileInfo("thrlist.xlsx");

                    //try
                    //{
                    //// Каскадное удаление данных вместе с внешними ключами
                    //db.Database.ExecuteSqlCommand("SET SCHEMA '" + KPSZIContext.schema_name + "'; TRUNCATE \"Threats\" CASCADE;");

                    db.Threats.AddRange(Threat.GetThreatsFromXlsx(fi, db));
                    db.SaveChanges();
                    db.SeedForThreat();
                    db.SaveChanges();
                    //}
                    //catch (Exception ex)
                    //{
                    //    MessageBox.Show("В rewriteThreatsDBToolStripMenuItem_Click Exception!\n" + ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //    return;
                    //}
                }
                MessageBox.Show("Таблица угроз успешно перезаписана!", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #3
0
        private void BtnGetSZIs_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            mf.dgvSZIs.Rows.Clear();
            mf.tabControlSZIs.TabPages.Clear();
            mf.tabControlSZIs.TabPages.Add(mf.tpSZItpSZIs);
            int i = 0;

            mf.tpSZItbInfo.Text = "В таблице представлен перечень выбранных Вами средств защиты и краткая информация о них. Для формирования перечня реализуемых технических мер этими средствами нажмите \"Реализация тех. мер\"";
            using (KPSZIContext db = new KPSZIContext())
            {
                var tempListSZIs = db.SZIs.ToList().Intersect(IS.listOfSZIs).ToList();

                foreach (SZI szi in tempListSZIs)
                {
                    string sorts = "";
                    foreach (SZISort ss in szi.SZISorts)
                    {
                        sorts += ss.Name + ", ";
                    }
                    sorts = sorts.TrimEnd(' ');
                    sorts = sorts.TrimEnd(',');
                    mf.dgvSZIs.Rows.Add(++i, szi.Name, sorts, "№" + szi.Certificate + ", до " + szi.DateOfEnd.ToShortDateString(), szi.NDVControlLevel, szi.SVTClass, szi.TU);
                }
            }
            mf.wsm.Visible = false;
        }
Пример #4
0
 private void setConfigOptionsToolStripMenu_Click(object sender, EventArgs e)
 {
     using (KPSZIContext db = new KPSZIContext())
     {
         db.SeedForConfigOptions();
     }
     MessageBox.Show("Заполнение прошло успешно!", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }
Пример #5
0
        private void BtnGetConreteMeasuresList_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            mf.tabControlMeasures.TabPages.Clear();

            mf.tabControlMeasures.TabPages.Add(mf.tpConcreteMeas);

            mf.tbtpMeasDescription.Text = "Уточненный набор мер, сформированный с учетом не выбранных ранее мер защиты информации, обеспечивает нейтрализацию актуальных угроз безопасности информации, включенных в Модель угроз безопасности информации. \nВ первой таблице представлены меры защиты информации, нейтрализующие все угрозы из Модели.\n Во второй таблице - итоговый перечень мер";

            using (KPSZIContext db = new KPSZIContext())
            {
                var listOfThreatsDB = db.Threats.ToList();

                var LisfOfThreats = listOfThreatsDB.Intersect(IS.listOfActualNSDThreats).ToList();

                List <GISMeasure> listOfMeasuresTemporary = new List <GISMeasure>();

                int i = 0;
                mf.dgvThrMeas.Rows.Clear();
                mf.dgvConcreteMeas.Rows.Clear();

                foreach (Threat thr in LisfOfThreats)
                {
                    listOfMeasuresTemporary.AddRange(thr.GISMeasures);

                    string _setOfMeasures = "";
                    foreach (GISMeasure gm in thr.GISMeasures)
                    {
                        _setOfMeasures += gm.ToString() + ";\n";
                    }
                    mf.dgvThrMeas.Rows.Add(++i, thr.ToString(), _setOfMeasures);
                }

                listOfMeasuresTemporary = listOfMeasuresTemporary.Distinct().ToList();
                listOfMeasuresTemporary = listOfMeasuresTemporary.OrderBy(m => m.GISMeasureId).ToList();

                ListOfConcreteMeasures = listOfMeasuresTemporary;
                ListOfConcreteMeasures.AddRange(ListOfAdaptiveMeasures);
                ListOfConcreteMeasures = ListOfConcreteMeasures.Distinct().OrderBy(m => m.GISMeasureId).ToList();

                i = 0;
                foreach (GISMeasure gm in ListOfConcreteMeasures)
                {
                    Console.WriteLine("{0}.{1}. {2}", gm.MeasureGroup.ShortName, gm.Number, gm.Description);
                    mf.dgvConcreteMeas.Rows.Add(++i, gm.ToString());
                }
                Console.WriteLine("Базовый: {0}\nАдаптированный: {1}\nУточненный: {2}", ListOfBasicMeasures.Count, ListOfAdaptiveMeasures.Count, ListOfConcreteMeasures.Count);
                IS.listOfAllNSDMeasures = ListOfConcreteMeasures;
                ListOfAddedMeasures     = ListOfConcreteMeasures.Except(ListOfAdaptiveMeasures).ToList();
            }

            mf.wsm.Visible = false;
        }
Пример #6
0
        public override void enterTabPage()
        {
            if (IS.GISClass == 0 || IS.listOfAllNSDMeasures.Count == 0)
            {
                MessageBox.Show("Определите класс информационной системы, а также уточненный адаптированный базовый перечень мер защиты информации для определения требований к параметрам настройки.");
                return;
            }
            mf.wsm.Visible = true;
            mf.tabControl.TabPages["tpConfigOptions"].Update();
            mf.wsm.Update();

            mf.dgvConfigNMeasures.Rows.Clear();

            using (KPSZIContext db = new KPSZIContext())
            {
                var tempGM = db.GisMeasures.ToList().Intersect(IS.listOfAllNSDMeasures).ToList();
                foreach (GISMeasure gm in tempGM)
                {
                    DataGridViewRow dgr = new DataGridViewRow();
                    dgr.CreateCells(mf.dgvConfigNMeasures);
                    dgr.Cells[0].Value = gm.MeasureGroup.ShortName + "." + gm.Number + " " + gm.Description;

                    for (int i = gm.ConfigOptions.Count - 1; i >= 0; i--)
                    {
                        if (gm.ConfigOptions.ElementAt(i).Description != null)
                        {
                            if (gm.ConfigOptions.ElementAt(i).Description.Contains("Усиление"))
                            {
                                if (isDefenceClassConstraint(gm.ConfigOptions.ElementAt(i).DefenceClass, IS.GISClass))
                                {
                                    dgr.Cells[1].Value += gm.ConfigOptions.ElementAt(i).Name + " (" + gm.ConfigOptions.ElementAt(i).Description + ")\n";
                                }
                            }
                            else
                            {
                                string descr = "";
                                descr = gm.ConfigOptions.ElementAt(i).Description == null ? "" : " (" + gm.ConfigOptions.ElementAt(i).Description + ")";
                                dgr.Cells[1].Value += gm.ConfigOptions.ElementAt(i).Name + descr + " \n";
                            }
                        }
                        else
                        {
                            dgr.Cells[1].Value += gm.ConfigOptions.ElementAt(i).Name + "\n";
                        }
                    }
                    if (dgr.Cells[1].Value != null)
                    {
                        mf.dgvConfigNMeasures.Rows.Add(dgr);
                    }
                }
            }
            mf.wsm.Visible = false;
        }
Пример #7
0
        protected override void initTabPage()
        {
            mf.dgvIntruder.Rows.Add(2);
            mf.dgvIntruder.Rows[0].Cells[0].Value = "Внутренний";
            mf.dgvIntruder.Rows[1].Cells[0].Value = "Внешний";

            mf.dgvIntruder.SelectionChanged += dgvIntruder_SelectionChanged;

            using (KPSZIContext db = new KPSZIContext())
            {
                ListImplementWays = db.ImplementWays.OrderBy(i => i.WayNumber).ToList();
                ListIntruderTypes = db.IntruderTypes.OrderBy(t => t.IntruderTypeId).ToList();
                ListSources       = db.ThreatSources.ToList();
            }

            int k    = 0;
            int yLoc = 5;

            foreach (ImplementWay iw in ListImplementWays)
            {
                CheckBox cb = new CheckBox();
                cb.Text     = iw.WayName;
                cb.AutoSize = false;
                int y = 13 * ((TextRenderer.MeasureText(iw.WayName, mf.clbImplementWays.Font).Width + 50) / (mf.clbImplementWays.Width - 25) + 1) + 10;
                cb.Size            = new Size(mf.clbImplementWays.Width - 25, y);
                cb.Location        = new Point(8, yLoc);
                cb.CheckedChanged += new System.EventHandler(cbWay_CheckedChanged);
                yLoc += y;
                k++;
                mf.clbImplementWays.Controls.Add(cb);
            }
            yLoc += 14;
            mf.clbImplementWays.Height = yLoc;

            k    = 0;
            yLoc = 3;
            foreach (IntruderType it in ListIntruderTypes)
            {
                CheckBox cb = new CheckBox();
                cb.Text     = it.TypeName;
                cb.AutoSize = false;
                int y = 13 * ((TextRenderer.MeasureText(it.TypeName, mf.clbIntruderTypes.Font).Width + 50) / (mf.clbIntruderTypes.Width - 25) + 1) + 8;
                cb.Size            = new Size(mf.clbIntruderTypes.Width - 25, y);
                cb.Location        = new Point(8, yLoc);
                cb.CheckedChanged += new System.EventHandler(cbIntruder_CheckedChanged);
                yLoc += y;
                k++;
                mf.clbIntruderTypes.Controls.Add(cb);
            }

            yLoc += 14;
            mf.clbIntruderTypes.Height = yLoc;
        }
Пример #8
0
 private void addSZItoMeasuresToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (KPSZIContext db = new KPSZIContext())
     {
         try
         {
             db.SeedForMeasures();
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
             return;
         }
         MessageBox.Show("Заполнение прошло успешно!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
 }
Пример #9
0
        private void BtnGetBasicMeasuresList_Click(object sender, EventArgs e)
        {
            if (IS.GISClass == 0)
            {
                if (MessageBox.Show("Не определен класс защищенности для дальнейшней работы. \nПерейти во вкладку \"Классификация\"?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    mf.treeView.SelectedNode = mf.returnTreeNode("tnClassification");
                    return;
                }
                else
                {
                    return;
                }
            }

            mf.wsm.Visible = true;
            mf.wsm.Update();

            mf.tabControlMeasures.TabPages.Clear();

            mf.tabControlMeasures.TabPages.Add(mf.tpBasicMeas);
            mf.btnGetAdaptiveMeasuresList.Enabled = true;
            mf.btnGetConreteMeasuresList.Enabled  = false;

            mf.tbtpMeasDescription.Text = "Базовый набор мер, сформированный в соответствии с установленным классом защищенности информационной системы.";


            //Очищаем DGV от старых мер
            mf.dgvBasicMeas.Rows.Clear();

            using (KPSZIContext db = new KPSZIContext())
            {
                int i = 0;
                ListOfBasicMeasures = db.GisMeasures.Where(gm => gm.MinimalRequirementDefenceClass >= IS.GISClass).OrderBy(gm => gm.GISMeasureId).ToList();

                foreach (GISMeasure gm in ListOfBasicMeasures)
                {
                    Console.WriteLine(gm.ToString());
                    mf.dgvBasicMeas.Rows.Add(++i, gm.ToString());
                }
            }


            mf.wsm.Visible = false;
        }
Пример #10
0
 protected override void initTabPage()
 {
     using (KPSZIContext db = new KPSZIContext())
     {
         tgThreats = db.TechnogenicThreats.ToList();
         foreach (TechnogenicMeasure tgm in db.TechnogenicMeasures)
         {
             mf.dgvTGMeasures.Rows.Add(false, tgm.Description);
         }
         foreach (TechnogenicThreat tgt in tgThreats)
         {
             mf.dgvTGThreats.Rows.Add(tgt.Identificator + " " + tgt.Description);
         }
     }
     mf.tcTGThreats.TabPages[1].Enter += enterPageActualThreats;
     mf.dgvTGThreats.EditMode          = DataGridViewEditMode.EditOnEnter;
     mf.dgvActualTGThreats.ReadOnly    = true;
 }
Пример #11
0
        private void BtnExportSFHConsole_Click(object sender, EventArgs e)
        {
            int i = 0;

            using (KPSZIContext db = new KPSZIContext())
            {
                var sfhs = db.SFHs.OrderBy(s => s.SFHNumber).ToList();

                foreach (SFH sfh in sfhs)
                {
                    Console.WriteLine("===={0}====", sfh.Name);
                    foreach (GISMeasure gm in sfh.GISMeasures.OrderBy(m => m.GISMeasureId))
                    {
                        Console.WriteLine("\t {0}.{1} {2}", gm.MeasureGroup.ShortName, gm.Number, gm.Description);
                    }
                }
            }
        }
Пример #12
0
        private void BtnGetAdaptiveMeasuresList_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();


            mf.tabControlMeasures.TabPages.Clear();

            mf.tabControlMeasures.TabPages.Add(mf.tpAdaptiveMeas);
            mf.btnGetConreteMeasuresList.Enabled = true;

            mf.tbtpMeasDescription.Text = "Адаптированный набор мер, сформированный в соответствии с особенностями функционирования ИС, структурно-функциональным характеристикам и информационным технологиями, характерными для данной ИС.";

            List <GISMeasure> listOfGMForSFHs = new List <GISMeasure>();

            using (KPSZIContext db = new KPSZIContext())
            {
                foreach (SFH sfh in IS.listOfSFHs)
                {
                    var aaa = db.SFHs.Where(s => s.SFHNumber == sfh.SFHNumber).FirstOrDefault();

                    listOfGMForSFHs.AddRange(aaa.GISMeasures);
                }

                listOfGMForSFHs = listOfGMForSFHs.Distinct().ToList();
                listOfGMForSFHs = listOfGMForSFHs.OrderBy(gm => gm.GISMeasureId).ToList();

                int i = 0;
                //очистить DGV от старых мер
                mf.dgvAdaptiveMeas.Rows.Clear();
                ListOfAdaptiveMeasures = ListOfBasicMeasures.Intersect(listOfGMForSFHs).ToList();
                foreach (GISMeasure gm in ListOfAdaptiveMeasures)
                {
                    Console.WriteLine(gm.ToString());
                    mf.dgvAdaptiveMeas.Rows.Add(++i, gm.ToString());
                }
                ListOfExcludedMeasures = ListOfBasicMeasures.Except(ListOfAdaptiveMeasures).ToList();

                Console.WriteLine("Базовый: {0}\nАдаптированный: {1}\nПересечение: {2}", ListOfBasicMeasures.Count, listOfGMForSFHs.Count, ListOfAdaptiveMeasures.Count);
            }

            mf.wsm.Visible = false;
        }
Пример #13
0
        private void BtnGetMeasSZIs_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            mf.tabControlSZIs.TabPages.Clear();
            mf.tabControlSZIs.TabPages.Add(mf.tpSZItpSZIs);
            mf.tabControlSZIs.TabPages.Add(mf.tpSZItpMeasSZIs);
            mf.tabControlSZIs.SelectedTab = mf.tpSZItpMeasSZIs;
            mf.dgvMeasSZIs.Rows.Clear();
            mf.tpSZItbInfo.Text = "В таблице представлен перечень реализуемых Вами технических мер выбранными Вами средствамизащиты. Для экспорта технического проекта нажмите на кнопку с иконкой Microsoft Office Word";
            using (KPSZIContext db = new KPSZIContext())
            {
                int i            = 0;
                var listSZISorts = db.SZISorts.ToList();

                var listMeasues = db.GisMeasures.ToList().Intersect(IS.listOfAllNSDMeasures).ToList();

                foreach (GISMeasure gm in listMeasues)
                {
                    if (gm.SZISorts.Count == 0)
                    {
                        continue;
                    }

                    string     szis  = "";
                    List <SZI> _szis = new List <SZI>();
                    foreach (SZISort ss in gm.SZISorts)
                    {
                        _szis = ss.SZIs.ToList().Intersect(IS.listOfSZIs).ToList();
                    }
                    _szis = _szis.Distinct().ToList();

                    foreach (SZI szi in _szis)
                    {
                        szis += szi.Name + "\n";
                    }
                    mf.dgvMeasSZIs.Rows.Add(++i, gm.ToString(), szis);
                }
            }
            mf.wsm.Visible = false;
        }
Пример #14
0
 private void clearDBToolStripMenuItem_Click(object sender, EventArgs e)
 {
     // Снести всю базу
     if (MessageBox.Show("Будут очищены все таблицы (не удалены) кроме данных о миграциях", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
     {
         using (KPSZIContext db = new KPSZIContext())
         {
             try
             {
                 db.Database.ExecuteSqlCommand("SET SCHEMA '" + KPSZIContext.schema_name + "'; TRUNCATE \"ConfigOptions\",\"GISMeasures\", \"ISPDNMeasures\", \"ImplementWayThreats\", \"ImplementWays\", \"InfoTypes\", \"IntruderTypes\", \"MeasureGroups\", \"SFHGISMeasures\", \"SFHTypes\", \"SFHs\", \"SZISortGISMeasures\", \"SZISortSZIs\", \"SZISorts\",  \"SZIs\", \"TCUIThreats\", \"TCUITypes\", \"TCUIs\", \"TechnogenicMeasures\", \"TechnogenicThreats\", \"ThreatGISMeasures\",  \"ThreatSFHs\", \"ThreatSourceThreats\", \"ThreatSources\", \"Threats\", \"Vulnerabilities\", \"VulnerabilityThreats\" CASCADE");
             }
             catch (Exception ex)
             {
                 MessageBox.Show("В clearDBToolStripMenuItem_Click Exception!\n" + ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 return;
             }
         }
         MessageBox.Show("Таблицы базы данных успешно очищены", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
 }
Пример #15
0
        private void btnExportConsole_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            using (KPSZIContext db = new KPSZIContext())
            {
                var threats = db.Threats.OrderBy(t => t.ThreatNumber).ToList();

                foreach (Threat thr in threats)
                {
                    Console.WriteLine("{0}. {1}", thr.ThreatNumber, thr.Name);
                    foreach (GISMeasure gm in thr.GISMeasures.OrderBy(m => m.GISMeasureId))
                    {
                        Console.WriteLine("\t {0}.{1} {2}", gm.MeasureGroup.ShortName, gm.Number, gm.Description);
                    }
                }
            }
            mf.wsm.Visible = false;
        }
Пример #16
0
        private void initDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // инициализация БД начальным значениями из метода Model.KPSZIContext.Seed()

            if (MessageBox.Show("БД будет проинициализирована начальными значениями. Перед выполнением процедуры необходимо очистить (не удалить!) все таблицы.\nПродолжить?", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
            {
                using (KPSZIContext db = new KPSZIContext())
                {
                    //try
                    //{
                    db.Seed();
                    //}
                    //catch (Exception ex)
                    //{
                    //    MessageBox.Show(ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //    return;
                    //}
                }
                MessageBox.Show("База данных проинициализирована начальными значениями", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #17
0
        protected override void initTabPage()
        {
            mf.tabControlTCUI.TabPages[2].AutoScroll          = true;
            mf.dgvActualTCUIThreats.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            controlsIAC       = new List <IntruderAbilityControl>();
            listOfTCUIThreats = new List <TCUIThreat>();
            checkedTCUI       = new List <KPSZI.checkedTCUI>();

            using (KPSZIContext db = new KPSZIContext())
            {
                foreach (TCUI TC in db.TCUIs.ToList())
                {
                    checkedTCUI ctc = new KPSZI.checkedTCUI(new TCUI {
                        Name = TC.Name, TCUIType = TC.TCUIType, TCUIThreats = TC.TCUIThreats.ToList()
                    });
                    checkedTCUI.Add(ctc);
                }
            }

            foreach (Control cb in mf.tabControlTCUI.TabPages["tabPageTCUIExist"].Controls)
            {
                if (cb as CheckBox != null)
                {
                    ((CheckBox)cb).Click += new EventHandler(cbClick);
                }
            }
            mf.tabControlTCUI.TabPages["tabPageIntrAbil"].Enter          += new System.EventHandler(enterAtPageAbilsOfIntruder);
            mf.tabControlTCUI.TabPages["tabPageListOfTCUIThreats"].Enter += new System.EventHandler(enterTabPageThreatsList);
            mf.tabControlTCUI.TabPages["tabPageIntrAbil"].AutoScroll      = true;

            // Добавление контрола определения степени ущерба
            //damageDegreeInput = new Dictionary<string, int[,,]>();
            //foreach (IntruderAbilityControl iac in controlsIAC)
            //    damageDegreeInput.Add(iac.threatName.Substring(0, 6), new int[IS.listOfInfoTypes.Count, 3, 7]);

            //DDControl = new DamageDegreeControl(IS.listOfInfoTypes, listFilteredThreats, damageDegreeInput, mf);
            //DDControl.Location = new Point(mf.tpThreatsNSD2.Width - DDControl.Width, 0);
            //DDControl.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
            //mf.tpThreatsNSD2.Controls.Add(DDControl);
        }
Пример #18
0
        protected override void initTabPage()
        {
            using (KPSZIContext db = new KPSZIContext())
            {
                // Инициализация списка уязвимостей

                listVuls = db.Vulnerabilities.ToList();
                mf.dgvVulnerabilities.DataSource = listVuls;

                mf.dgvVulnerabilities.Columns["Threats"].Visible                     = false;
                mf.dgvVulnerabilities.Columns["VulnerabilityId"].Visible             = false;
                mf.dgvVulnerabilities.Columns["VulnerabilityNumber"].Visible         = false;
                mf.dgvVulnerabilities.Columns["CheckVulnerability"].Width            = 30;
                mf.dgvVulnerabilities.Columns["CheckVulnerability"].MinimumWidth     = 30;
                mf.dgvVulnerabilities.Columns["VulnerabilityName"].Width             = 300;
                mf.dgvVulnerabilities.Columns["VulnerabilityName"].HeaderText        = "Уязвимость";
                mf.dgvVulnerabilities.Columns["VulnerabilityDescription"].HeaderText = "Описание";

                // Разрешаем редактировать только первый столбец (чекбоксы)
                foreach (DataGridViewColumn column in mf.dgvVulnerabilities.Columns)
                {
                    column.ReadOnly = true;
                }
                mf.dgvVulnerabilities.Columns["CheckVulnerability"].ReadOnly = false;

                // true = true, false = false. Ахуеть, да?
                ((DataGridViewCheckBoxColumn)mf.dgvVulnerabilities.Columns["CheckVulnerability"]).TrueValue  = true;
                ((DataGridViewCheckBoxColumn)mf.dgvVulnerabilities.Columns["CheckVulnerability"]).FalseValue = false;

                mf.dgvVulnerabilities.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(234, 240, 255);
                mf.dgvVulnerabilities.ColumnHeadersDefaultCellStyle.ForeColor = Color.FromArgb(28, 32, 57);
                mf.dgvVulnerabilities.EnableHeadersVisualStyles = false;

                mf.dgvVulnerabilities.SelectionChanged += new System.EventHandler(dgvVulnerabilities_SelectionChanged);
            }
        }
Пример #19
0
        protected override void initTabPage()
        {
            using (Model.KPSZIContext db = new KPSZIContext())
            {
                foreach (InfoType it in db.InfoTypes)
                {
                    TabPage tp = new TabPage {
                        Name = it.TypeName, Text = it.TypeName
                    };

                    Label labelConf = new Label {
                        Text = "Конфиденциальность"
                    };
                    labelConf.Location = new Point {
                        X = 10, Y = 15
                    };
                    labelConf.Width = 200;

                    Label labelInteg = new Label {
                        Text = "Целостность"
                    };
                    labelInteg.Location = new Point {
                        X = 10, Y = 45
                    };

                    Label labelAvail = new Label {
                        Text = "Доступность"
                    };
                    labelAvail.Location = new Point {
                        X = 10, Y = 75
                    };


                    ComboBox cbConf = new ComboBox {
                        Name = "cbConf", DropDownStyle = ComboBoxStyle.DropDownList
                    };
                    cbConf.SelectedIndexChanged += GISClassCalculate;
                    cbConf.Location              = new Point {
                        X = 135, Y = 7
                    };
                    cbConf.Items.Add("Высокий");
                    cbConf.Items.Add("Средний");
                    cbConf.Items.Add("Низкий");

                    ComboBox cbInteg = new ComboBox {
                        Name = "cbInteg", DropDownStyle = ComboBoxStyle.DropDownList
                    };
                    cbInteg.SelectedIndexChanged += GISClassCalculate;
                    cbInteg.Location              = new Point {
                        X = 135, Y = 37
                    };
                    cbInteg.Items.Add("Высокий");
                    cbInteg.Items.Add("Средний");
                    cbInteg.Items.Add("Низкий");

                    ComboBox cbAvail = new ComboBox {
                        Name = "cbAvail", DropDownStyle = ComboBoxStyle.DropDownList
                    };
                    cbAvail.SelectedIndexChanged += GISClassCalculate;
                    cbAvail.Location              = new Point {
                        X = 135, Y = 67
                    };
                    cbAvail.Items.Add("Высокий");
                    cbAvail.Items.Add("Средний");
                    cbAvail.Items.Add("Низкий");

                    tp.Controls.AddRange(new Control[] { cbConf, cbAvail, cbInteg, labelAvail, labelConf, labelInteg });
                    tabPagesInfoTypes.Add(tp);
                }
            }

            mf.comboBoxScale.SelectedIndexChanged             += new System.EventHandler(GISClassCalculate);
            mf.checkedListBoxCategoryPDN.SelectedIndexChanged += new System.EventHandler(checkedListBoxCategoryPDN_SelectedIndexChanged);
            mf.checkBoxSubjectsStaff.CheckedChanged           += new System.EventHandler(checkBoxSubjectsStaff_CheckedChanged);
            mf.comboBoxHundred.SelectedIndexChanged           += new System.EventHandler(ISPDNLevelCalculate);
            mf.comboBoxActualThreatsType.SelectedIndexChanged += new System.EventHandler(ISPDNLevelCalculate);
        }
Пример #20
0
        protected override void initTabPage()
        {
            using (KPSZIContext db = new KPSZIContext())
            {
                //Инициализация списка угроз
                listThreats = db.Threats.OrderBy(t => t.ThreatNumber).ToList();
                foreach (Threat threat in listThreats)
                {
                    threat.Vulnerabilities = db.Threats.Where(t1 => t1.ThreatNumber == threat.ThreatNumber).First().Vulnerabilities;
                    threat.SFHs            = db.Threats.Where(t2 => t2.ThreatNumber == threat.ThreatNumber).First().SFHs;
                    threat.ImplementWays   = db.Threats.Where(t3 => t3.ThreatNumber == threat.ThreatNumber).First().ImplementWays;
                    threat.ThreatSources   = db.Threats.Where(t4 => t4.ThreatNumber == threat.ThreatNumber).First().ThreatSources;
                    threat.GISMeasures     = db.Threats.Where(t5 => t5.ThreatNumber == threat.ThreatNumber).First().GISMeasures;
                    threat.setStringVulnerabilities();
                    threat.setStringSFHs();
                    threat.setStringImplementWays();
                    threat.setStringSources();
                }

                listVulnerabilities = db.Vulnerabilities.OrderBy(v => v.VulnerabilityNumber).ToList();
                listSFHs            = db.SFHs.OrderBy(s => s.SFHNumber).ToList();
                listSFHTypes        = db.SFHTypes.OrderBy(st => st.SFHTypeId).ToList();
                listImplementWays   = db.ImplementWays.OrderBy(w => w.WayNumber).ToList();
                listSources         = db.ThreatSources.OrderBy(so => so.ThreatSourceId).ToList();
                foreach (Vulnerability vul in listVulnerabilities)
                {
                    vul.Threats = db.Vulnerabilities.Where(v1 => v1.VulnerabilityNumber == vul.VulnerabilityNumber).First().Threats;
                }
                foreach (SFH sfh in listSFHs)
                {
                    sfh.Threats = db.SFHs.Where(s1 => s1.SFHNumber == sfh.SFHNumber).First().Threats;
                }
                foreach (ImplementWay iw in listImplementWays)
                {
                    iw.Threats = db.ImplementWays.Where(w1 => w1.WayNumber == iw.WayNumber).First().Threats;
                }
                foreach (ThreatSource ts in listSources)
                {
                    ts.Threats = db.ThreatSources.Where(so1 => so1.ThreatSourceId == ts.ThreatSourceId).First().Threats;
                }
                listFilteredThreats = new List <Threat>();
            }

            mf.dgvThreats.DefaultCellStyle.SelectionBackColor = Color.AliceBlue;
            mf.dgvThreats.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.Black;

            mf.tcThreatsNSD.TabPages.Remove(mf.tpThreatsNSD2);
            mf.tcThreatsNSD.TabPages.Remove(mf.tpThreatsNSD3);

            mf.dgvThreats.DataSource = listThreats;
            mf.dgvThreats.Columns["ThreatID"].Visible          = false;
            mf.dgvThreats.Columns["ThreatSources"].Visible     = false;
            mf.dgvThreats.Columns["DateOfChange"].Visible      = false;
            mf.dgvThreats.Columns["DateOfAdd"].Visible         = false;
            mf.dgvThreats.Columns["ImplementWays"].Visible     = false;
            mf.dgvThreats.Columns["SFHs"].Visible              = false;
            mf.dgvThreats.Columns["Vulnerabilities"].Visible   = false;
            mf.dgvThreats.Columns["Description"].Visible       = false;
            mf.dgvThreats.Columns["ObjectOfInfluence"].Visible = false;
            mf.dgvThreats.Columns["GISMeasures"].Visible       = false;

            mf.dgvThreats.Columns["ThreatNumber"].AutoSizeMode          = DataGridViewAutoSizeColumnMode.None;
            mf.dgvThreats.Columns["ConfidenceViolation"].AutoSizeMode   = DataGridViewAutoSizeColumnMode.None;
            mf.dgvThreats.Columns["IntegrityViolation"].AutoSizeMode    = DataGridViewAutoSizeColumnMode.None;
            mf.dgvThreats.Columns["AvailabilityViolation"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;

            mf.dgvThreats.Columns["ThreatID"].DisplayIndex              = 0;
            mf.dgvThreats.Columns["ThreatNumber"].Width                 = 60;
            mf.dgvThreats.Columns["ThreatNumber"].DisplayIndex          = 1;
            mf.dgvThreats.Columns["ThreatNumber"].HeaderText            = "№ УБИ";
            mf.dgvThreats.Columns["Name"].HeaderText                    = "Название УБИ";
            mf.dgvThreats.Columns["Name"].DisplayIndex                  = 2;
            mf.dgvThreats.Columns["ConfidenceViolation"].Width          = 30;
            mf.dgvThreats.Columns["ConfidenceViolation"].HeaderText     = "К";
            mf.dgvThreats.Columns["ConfidenceViolation"].DisplayIndex   = 3;
            mf.dgvThreats.Columns["IntegrityViolation"].Width           = 30;
            mf.dgvThreats.Columns["IntegrityViolation"].HeaderText      = "Ц";
            mf.dgvThreats.Columns["IntegrityViolation"].DisplayIndex    = 4;
            mf.dgvThreats.Columns["AvailabilityViolation"].Width        = 30;
            mf.dgvThreats.Columns["AvailabilityViolation"].HeaderText   = "Д";
            mf.dgvThreats.Columns["AvailabilityViolation"].DisplayIndex = 5;
            mf.dgvThreats.Columns["stringVuls"].HeaderText              = "Уязвимости";
            mf.dgvThreats.Columns["stringVuls"].DisplayIndex            = 6;
            mf.dgvThreats.Columns["stringWays"].HeaderText              = "Способы реализации УБИ";
            mf.dgvThreats.Columns["stringWays"].DisplayIndex            = 7;
            mf.dgvThreats.Columns["stringSFHS"].HeaderText              = "СФХ";
            mf.dgvThreats.Columns["stringSFHS"].DisplayIndex            = 8;
            mf.dgvThreats.Columns["stringSources"].HeaderText           = "Источник угрозы";
            mf.dgvThreats.Columns["stringSources"].DisplayIndex         = 9;

            mf.dgvThreats.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

            mf.dgvThreats.SelectionChanged          += new System.EventHandler(dgvThreats_SelectionChanged);
            mf.tpActualThreats.Resize               += new System.EventHandler(tpActualThreats_Resize);
            mf.clbThreatFilter.SelectedIndexChanged += new System.EventHandler(clbThreatFilter_SelectedIndexChanged);
            mf.tcThreatsNSD.SelectedIndexChanged    += new System.EventHandler(tcThreatsNSD_SelectedIndexChanged);
            mf.btnGotoDamage.Click += new System.EventHandler(btnGotoDamage_Click);
            mf.dgvActualThreatsNSD.SelectionChanged += new System.EventHandler(dgvActualThreats_SelectionChanged);
            mf.btnReady.Click += new System.EventHandler(btnReady_Click);
            mf.btnExportModelThreats.Click += new System.EventHandler(btnExportModelThreats_Click);

            mf.clbThreatFilter.SetItemChecked(0, false);
            mf.clbThreatFilter.SetItemChecked(1, false);
            mf.clbThreatFilter.SetItemChecked(2, false);
            mf.clbThreatFilter.SetItemChecked(3, false);
            filterThreatList();
        }
Пример #21
0
        public void BtnExportWord_CLick(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            Microsoft.Office.Interop.Word._Application wordApp = null;
            try
            {
                wordApp = new Microsoft.Office.Interop.Word.Application();
            }
            catch
            {
                mf.wsm.Visible = false;
                MessageBox.Show("На ПК не установлен пакет Microsoft Office Word 2007 или позднее. Экспорт невозможен.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Microsoft.Office.Interop.Word.Document  wordDoc;
            Microsoft.Office.Interop.Word.Paragraph wordParag;


            wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            wordParag                            = wordDoc.Paragraphs.Add();
            wordParag.Range.Text                 = "Требования к параметрам настройки средств защиты информации в ИС \"" + IS.ISName + "\"";
            wordParag.Range.Font.Name            = "Times New Roman";
            wordParag.Range.Font.Size            = 18;
            wordParag.Range.Font.Bold            = 1;
            wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
            wordParag.Range.InsertParagraphAfter(); wordParag.Range.InsertParagraphAfter();
            using (KPSZIContext db = new KPSZIContext())
            {
                foreach (MeasureGroup mg in db.MeasureGroups.ToList())
                {
                    //Группа мер
                    bool isMeasureGroupInTable = false;
                    for (int i = mf.dgvConfigNMeasures.Rows.Count - 1; i >= 0; i--)
                    {
                        if (mf.dgvConfigNMeasures.Rows[i].Cells[0].Value.ToString().Contains(mg.ShortName + "."))
                        {
                            isMeasureGroupInTable = true;
                        }
                    }
                    if (!isMeasureGroupInTable)
                    {
                        continue;
                    }
                    wordParag.Range.Text                 = '\t' + mg.Name;
                    wordParag.Range.Font.Name            = "Times New Roman";
                    wordParag.Range.Font.Size            = 16;
                    wordParag.Range.Font.Bold            = 1;
                    wordParag.Range.Font.Italic          = 0;
                    wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;

                    wordParag.Range.InsertParagraphAfter();

                    foreach (DataGridViewRow dgvr in mf.dgvConfigNMeasures.Rows)
                    {
                        if (dgvr.Cells[0].Value.ToString().Contains(mg.ShortName + "."))
                        {
                            //Мера
                            wordParag.Range.Text                 = '\t' + dgvr.Cells[0].Value.ToString();
                            wordParag.Range.Font.Name            = "Times New Roman";
                            wordParag.Range.Font.Size            = 14;
                            wordParag.Range.Font.Bold            = 1;
                            wordParag.Range.Font.Italic          = 0;
                            wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;

                            wordParag.Range.InsertParagraphAfter();

                            //тип сзи
                            string         szis     = "";
                            string         measure  = dgvr.Cells[0].Value.ToString();
                            List <SZISort> szisorts = db.GisMeasures.ToList().Where(m => (m.MeasureGroup.ShortName + "." + m.Number + " " + m.Description) == measure).First().SZISorts.ToList();

                            var listOfSZIs = db.SZIs.ToList().Intersect(IS.listOfSZIs).ToList();
                            foreach (SZI sz in listOfSZIs)
                            {
                                SZI m = db.SZIs.Where(t => t.SZIId == sz.SZIId).First();
                                sz.SZISorts = m.SZISorts.ToList();
                            }
                            foreach (SZISort s in szisorts)
                            {
                                szis += s.Name + ": " + listOfSZIs.Where(szi => szi.SZISorts.Contains(s)).First().Name + "; ";
                            }
                            if (szis != "")
                            {
                                szis = szis.Substring(0, szis.Length - 2) + ".";

                                wordParag.Range.Text                 = '\t' + szis;
                                wordParag.Range.Font.Name            = "Times New Roman";
                                wordParag.Range.Font.Size            = 14;
                                wordParag.Range.Font.Bold            = 0;
                                wordParag.Range.Font.Italic          = 1;
                                wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;

                                wordParag.Range.InsertParagraphAfter();
                            }


                            string[] configOptions = dgvr.Cells[1].Value.ToString().Split('\n');
                            for (int i = 0; i < configOptions.Length - 1; i++)
                            {
                                //Параметры
                                char divider = i == configOptions.Length - 2 ? '.' : ';';
                                wordParag.Range.Text                 = "\t– " + configOptions[i] + divider;
                                wordParag.Range.Font.Name            = "Times New Roman";
                                wordParag.Range.Font.Size            = 12;
                                wordParag.Range.Font.Bold            = 0;
                                wordParag.Range.Font.Italic          = 0;
                                wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;
                                wordParag.Range.InsertParagraphAfter();
                            }
                            wordParag.Range.InsertParagraphAfter();
                        }
                        else
                        {
                            continue;
                        }
                    }
                    wordParag.Range.InsertParagraphAfter();
                }
                wordApp.Visible = true;

                mf.wsm.Visible = false;
            }
        }
Пример #22
0
        private void BtnExprotSFHInterop_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document    wordDoc;
            Microsoft.Office.Interop.Word.Paragraph   wordParag;
            Microsoft.Office.Interop.Word.Table       wordTable;

            //создаём новый документ Word и задаём параметры листа
            wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); //создаём документ Word

            // первый параграф
            wordParag = wordDoc.Paragraphs.Add(Type.Missing);
            //wordParag.Range.Font.Name = "Times New Roman";
            //wordParag.Range.Font.Size = 16;
            //wordParag.Range.Font.Bold = 1;
            //wordParag.Range.Text = "Заголовок";
            //wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;


            // второй параграф, таблица из n строк и 2 колонок
            //wordDoc.Paragraphs.Add(Type.Missing);
            wordParag.Range.Tables.Add(wordParag.Range, 45, 2, Type.Missing, Type.Missing);
            wordTable = wordDoc.Tables[1];
            wordTable.Range.Font.Bold = 0;
            wordParag.Range.Font.Name = "Times New Roman";
            wordTable.Range.Font.Size = 14;


            //задаём ширину колонок и высоту строк
            wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPoints;
            wordTable.Columns[1].SetWidth(200f, Microsoft.Office.Interop.Word.WdRulerStyle.wdAdjustNone);
            wordTable.Rows.SetHeight(20f, Microsoft.Office.Interop.Word.WdRowHeightRule.wdRowHeightAuto);
            wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
            wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            wordTable.Range.Select();

            //заполнение шапки таблицы
            wordTable.Cell(1, 1).Range.Text = "Структурно–функциональная характеристика информационной системы";
            wordTable.Cell(1, 2).Range.Text = "Мера защиты информации, которая может применяться в информационной системе с данной характеристикой";

            //заполняем таблицу

            int row = 2;

            using (KPSZIContext db = new KPSZIContext())
            {
                var sfhs = db.SFHs.OrderBy(t => t.SFHNumber).ToList();

                foreach (SFH sfh in sfhs)
                {
                    string measuresSFH = "";
                    foreach (GISMeasure gm in sfh.GISMeasures.OrderBy(m => m.GISMeasureId))
                    {
                        measuresSFH += gm.MeasureGroup.ShortName + "." + gm.Number + ". " + gm.Description + ";\n";
                    }
                    measuresSFH.TrimEnd('\n');
                    measuresSFH.TrimEnd(';');
                    wordTable.Cell(row, 1).Range.Text   = sfh.Name;
                    wordTable.Cell(row++, 2).Range.Text = measuresSFH;
                }
            }

            //сохраняем документ, закрываем документ, выходим из Word
            wordDoc.SaveAs(Directory.GetCurrentDirectory() + @"\СФХ-меры.docx");
            wordApp.ActiveDocument.Close();
            wordApp.Quit();
        }
Пример #23
0
        private void refreshThreatDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Обновить список угроз
            if (MessageBox.Show("Будет проведено сравнение локальной базы угроз с данными из файла \"thrlist.xlsx\" и автоматическое обновление данных.\nПродолжить?", "Ахтунг!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                using (KPSZIContext db = new KPSZIContext())
                {
                    try
                    {
                        FileInfo      fi = new FileInfo("thrlist.xlsx");
                        List <Threat> listThreatsFromFile = Threat.GetThreatsFromXlsx(fi, db);
                        List <Threat> listThreatsFromDB   = db.Threats.OrderBy(t => t.ThreatNumber).ToList();

                        DateTime lastUpdateOfLocalDB;
                        if (listThreatsFromDB != null)
                        {
                            // Получение даты последнего обновления угроз из БД
                            lastUpdateOfLocalDB = listThreatsFromDB.Select(t => t.DateOfChange).Max();
                        }
                        else
                        {
                            lastUpdateOfLocalDB = DateTime.MinValue;
                        }

                        // Получение даты последнего обновления угроз из актуального файла с угрозами
                        DateTime lastUpdateOfFile = listThreatsFromFile.Select(t => t.DateOfChange).Max();

                        // Если нет изменений, то прекратить обновление
                        if (lastUpdateOfLocalDB == lastUpdateOfFile)
                        {
                            MessageBox.Show("База угроз не требует обновления!", "КПСЗИ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }

                        // Отбор угроз, претерпевших изменения
                        List <Threat> listChangedOrAddedThreats = listThreatsFromFile.Where(t => t.DateOfChange > lastUpdateOfLocalDB).ToList();

                        // Внесение изменений
                        foreach (Threat thr in listChangedOrAddedThreats)
                        {
                            Threat ThrFromDB = listThreatsFromDB.Where(t => t.ThreatNumber == thr.ThreatNumber).FirstOrDefault();

                            if (ThrFromDB == null)
                            {
                                //listThreatsFromDB.Add(thr);
                                db.Threats.Add(thr);

                                continue;
                            }

                            ThrFromDB.AvailabilityViolation = thr.AvailabilityViolation;
                            ThrFromDB.ConfidenceViolation   = thr.ConfidenceViolation;
                            ThrFromDB.DateOfAdd             = thr.DateOfAdd;
                            ThrFromDB.DateOfChange          = thr.DateOfChange;
                            ThrFromDB.Description           = thr.Description;
                            ThrFromDB.IntegrityViolation    = thr.IntegrityViolation;
                            ThrFromDB.Name = thr.Name;
                            ThrFromDB.ObjectOfInfluence = thr.Name;
                            ThrFromDB.ThreatNumber      = thr.ThreatNumber;
                            ThrFromDB.ThreatSources     = thr.ThreatSources;
                        }

                        db.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("В refreshThreatDBToolStripMenuItem_Click Exception!\n" + ex.Message, "Ахтунг!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
                MessageBox.Show("Список угроз обновлен", "Это успех, парень!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #24
0
        private void BtnExportInterop_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document    wordDoc;
            Microsoft.Office.Interop.Word.Paragraph   wordParag;
            Microsoft.Office.Interop.Word.Table       wordTable;

            //создаём новый документ Word и задаём параметры листа
            wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); //создаём документ Word

            // первый параграф
            wordParag = wordDoc.Paragraphs.Add(Type.Missing);
            //wordParag.Range.Font.Name = "Times New Roman";
            //wordParag.Range.Font.Size = 16;
            //wordParag.Range.Font.Bold = 1;
            //wordParag.Range.Text = "Заголовок";
            //wordParag.Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;


            // второй параграф, таблица из n строк и 2 колонок
            //wordDoc.Paragraphs.Add(Type.Missing);
            wordParag.Range.Tables.Add(wordParag.Range, 209, 3, Type.Missing, Type.Missing);
            wordTable = wordDoc.Tables[1];
            wordTable.Range.Font.Bold = 0;
            wordParag.Range.Font.Name = "Times New Roman";
            wordTable.Range.Font.Size = 14;

            //задаём ширину колонок и высоту строк
            wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPoints;
            wordTable.Columns[1].SetWidth(200f, Microsoft.Office.Interop.Word.WdRulerStyle.wdAdjustNone);
            wordTable.Rows.SetHeight(20f, Microsoft.Office.Interop.Word.WdRowHeightRule.wdRowHeightAuto);
            wordTable.Rows.Alignment = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
            wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            wordTable.Range.Select();

            //заполнение шапки таблицы
            wordTable.Cell(1, 1).Range.Text = "Номер УБИ";
            wordTable.Cell(1, 2).Range.Text = "Наименование УБИ";
            wordTable.Cell(1, 3).Range.Text = "Мера";

            //заполняем таблицу

            int row = 2;

            using (KPSZIContext db = new KPSZIContext())
            {
                var threats = db.Threats.OrderBy(t => t.ThreatNumber).ToList();

                foreach (Threat thr in threats)
                {
                    string threatName     = thr.ThreatNumber + "." + thr.Name;
                    string measuresThreat = "";
                    foreach (GISMeasure gm in thr.GISMeasures.OrderBy(m => m.GISMeasureId))
                    {
                        measuresThreat += gm.MeasureGroup.ShortName + "." + gm.Number + ". " + gm.Description + ";\n";
                    }
                    measuresThreat.TrimEnd('\n');
                    measuresThreat.TrimEnd(';');
                    wordTable.Cell(row, 1).Range.Text   = "УБИ." + thr.ThreatNumber.ToString("000");
                    wordTable.Cell(row, 2).Range.Text   = thr.Name;
                    wordTable.Cell(row++, 3).Range.Text = measuresThreat;
                }
            }

            //сохраняем документ, закрываем документ, выходим из Word
            wordDoc.SaveAs(Directory.GetCurrentDirectory() + @"\меры.docx");
            wordApp.ActiveDocument.Close();
            wordApp.Quit();
        }
Пример #25
0
        protected override void initTabPage()
        {
            using (KPSZIContext db = new KPSZIContext())
            {
                // Инициализация списка видов угроз

                listInfoTypes = db.InfoTypes.ToList();

                ((ListBox)mf.lbInfoTypes).DataSource    = listInfoTypes;
                ((ListBox)mf.lbInfoTypes).DisplayMember = "TypeName";
                ((ListBox)mf.lbInfoTypes).ValueMember   = "InfoTypeId";

                mf.lbInfoTypes.Size = new Size(400, 16 * mf.lbInfoTypes.Items.Count);

                //Инициализация СФХ групбоксов
                listSFHTypes = db.SFHTypes.ToList();
                listSFHs     = db.SFHs.ToList();

                GroupBox    gb;
                RadioButton rb;
                CheckBox    cb;
                checkboxesSFH   = new List <CheckBox>();
                radiobuttonsSFH = new List <RadioButton>();
                int i   = 0;
                int j   = 0;
                int gbY = 85;

                foreach (SFHType itemSFHType in listSFHTypes)
                {
                    gb          = new GroupBox();
                    gb.Location = new Point(7, gbY);
                    gb.Text     = itemSFHType.Name;
                    foreach (SFH itemSFH in itemSFHType.SFHs)
                    {
                        if (itemSFHType.MultipleChoice)
                        {
                            cb                 = new CheckBox();
                            cb.Text            = itemSFH.Name;
                            cb.Margin          = new Padding(10, 5, 5, 5);
                            cb.Location        = new Point(10, 17 + (17 * j));
                            cb.Size            = new Size(440, 17);
                            cb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged);
                            checkboxesSFH.Add(cb);
                            gb.Controls.Add(cb);
                            j++;
                        }
                        else
                        {
                            rb                 = new RadioButton();
                            rb.Text            = itemSFH.Name;
                            rb.Margin          = new Padding(10, 5, 5, 5);
                            rb.Location        = new Point(10, 17 + (17 * j));
                            rb.Size            = new Size(440, 17);
                            rb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged);
                            radiobuttonsSFH.Add(rb);
                            gb.Controls.Add(rb);
                            j++;
                        }
                    }

                    gb.Size = new Size(440, 25 + j * 17);
                    gbY    += 30 + j * 17;
                    j       = 0;
                    stageTab.Controls.Add(gb);
                    i++;
                }
            }

            mf.lbInfoTypes.SelectedIndexChanged          += new System.EventHandler(lbInfoTypes_SelectedIndexChanged);
            mf.dgvProjectSecurityResult.SelectionChanged += new System.EventHandler(dgvProjectSecurityResult_SelectionChanged);

            mf.dgvProjectSecurityResult.Rows.Add(4);
            mf.dgvProjectSecurityResult.Rows[0].Cells[0].Value             = "Процент характеристик, соответствующих уровню «высокий»";
            mf.dgvProjectSecurityResult.Rows[1].Cells[0].Value             = "Процент характеристик, соответствующих уровню «средний»";
            mf.dgvProjectSecurityResult.Rows[2].Cells[0].Value             = "Процент характеристик, соответствующих уровню «низкий»";
            mf.dgvProjectSecurityResult.Rows[3].Cells[0].Value             = "Уровень проектной защищенности";
            mf.dgvProjectSecurityResult.Rows[3].DefaultCellStyle.BackColor = Color.FromArgb(234, 240, 255);
            mf.dgvProjectSecurityResult.Rows[3].DefaultCellStyle.ForeColor = Color.FromArgb(28, 32, 57);
            mf.dgvProjectSecurityResult.Columns[0].Width = mf.dgvProjectSecurityResult.Width - 70;
        }
Пример #26
0
        private void BtnGetRequirm_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            if (IS.listOfAllNSDMeasures.Count == 0)
            {
                if (MessageBox.Show("Не определен перечень мер защиты информации, необходимый для дальнейшней работы. \nПерейти во вкладку \"Перечень мер\"?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    mf.treeView.SelectedNode = mf.returnTreeNode("tnMeasures");
                    return;
                }
                else
                {
                    return;
                }
            }

            mf.tabControlSZIs.TabPages.Clear();
            mf.tpSZItbInfo.Text = "Ниже представлены сформированные требования к средствам защиты информации согласно классу защищенности информационной системы и условиям функционирования. В соответствии с требованиям сформирован перечень видов СЗИ и их представителей. После осуществления выбора, нажмите \"СЗИ\", чтобы просмотреть информацию о них.";
            switch (IS.GISClass)
            {
            case 1: { mf.tbtpSZISVT.Text = "не ниже 5-го класса"; mf.tbtpSZISZI.Text = "не ниже 4-го класса"; mf.tbtpSZINDV.Text = "4"; break; }

            case 2: { mf.tbtpSZISVT.Text = "не ниже 5-го класса"; mf.tbtpSZISZI.Text = "не ниже 5-го класса"; mf.tbtpSZINDV.Text = "4"; break; }

            case 3: { mf.tbtpSZISVT.Text = "не ниже 5-го класса"; mf.tbtpSZISZI.Text = "не ниже 6-го класса"; mf.tbtpSZINDV.Text = "не требуется"; break; }

            default:
            {
                if (MessageBox.Show("Не определен класс защищенности для дальнейшней работы. \nПерейти во вкладку \"Классификация\"?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    mf.treeView.SelectedNode = mf.returnTreeNode("tnClassification");
                    return;
                }
                else
                {
                    return;
                }
            }
            }


            mf.tabControlSZIs.TabPages.Add(mf.tpSZItpReq);
            using (KPSZIContext db = new KPSZIContext())
            {
                listOfSZIsFromDB     = db.SZIs.ToList();
                listOfNeededSZISorts = new List <SZISort>();
                var listOfAllNSDMeasuresTemporary = db.GisMeasures.ToList().Intersect(IS.listOfAllNSDMeasures).ToList();
                foreach (GISMeasure gm in listOfAllNSDMeasuresTemporary)
                {
                    foreach (SZISort ss in gm.SZISorts)
                    {
                        listOfNeededSZISorts.Add(ss);
                    }
                }

                listOfNeededSZISorts = listOfNeededSZISorts.Distinct().ToList();

                GroupBox    gb;
                RadioButton rb;
                CheckBox    cb;
                radiobuttonsSZISorts = new List <RadioButton>();
                checkboxesSZISorts   = new List <CheckBox>();

                mf.ptpSZIforSZI.Controls.Clear();

                int i   = 0;
                int j   = 0;
                int gbY = 5;

                foreach (SZISort szisort in listOfNeededSZISorts)
                {
                    gb          = new GroupBox();
                    gb.Location = new Point(7, gbY);
                    gb.Text     = szisort.Name;

                    foreach (SZI szi in szisort.SZIs)
                    {
                        if (szisort.ShortName != "САВЗ")
                        {
                            rb                 = new RadioButton();
                            rb.Text            = szi.Name;
                            rb.Margin          = new Padding(10, 5, 5, 5);
                            rb.Location        = new Point(10, 17 + (17 * j));
                            rb.Size            = new Size(300, 17);
                            rb.CheckedChanged += Rb_CheckedChanged;
                            radiobuttonsSZISorts.Add(rb);
                            gb.Controls.Add(rb);
                            j++;
                        }
                        else
                        {
                            cb                 = new CheckBox();
                            cb.Text            = szi.Name;
                            cb.Margin          = new Padding(10, 5, 5, 5);
                            cb.Location        = new Point(10, 17 + (17 * j));
                            cb.Size            = new Size(300, 17);
                            cb.CheckedChanged += Rb_CheckedChanged;
                            checkboxesSZISorts.Add(cb);
                            gb.Controls.Add(cb);
                            j++;
                        }

                        //ставим птичку на первом добавленном СЗИ
                        if (gb.Controls.Count == 1)
                        {
                            var ctrl = gb.Controls[0];
                            if (ctrl is CheckBox)
                            {
                                var _cb = (CheckBox)ctrl;
                                _cb.Checked = true;
                            }

                            if (ctrl is RadioButton)
                            {
                                var _rb = (RadioButton)ctrl;
                                _rb.Checked = true;
                            }
                        }
                    }

                    gb.Size = new Size(300, 25 + j * 17);
                    gbY    += 30 + j * 17;
                    j       = 0;
                    //stageTab.Controls.Add(gb);

                    string description;
                    switch (szisort.ShortName)
                    {
                    case "СЗИ от НСД": { description = "Средство защиты информации от несанкционированного доступа. Может реализовывать функции средства контроля съемных машинных носителей"; break; }

                    case "СОВ": { description = "Средство обнаружения вторжений. Может реализовывать функции межсетевых экранов, поэтому не имеет смысла выбирать отличное от него, т.к. приведет к дополнительным затратам. Требования к СОВ утверждены Приказом ФСТЭК России от 6 декабря 2011 г. № 638."; break; }

                    case "МСЭ": { description = "Межсетевой экран. Может реализовывать функции средств обнаружения вторжений, поэтому не имеет смысла выбирать отличное от него, т.к. приведет к дополнительным затратам. Требования к Межсетевым экранам утверждены Приказом ФСТЭК России от 9 февраля 2016 г. № 9."; break; }

                    case "СДЗ": { description = "Средство доверенной загрузки. Обеспечивает доверенную загрузку СВТ. Требования к СДЗ утверждены Приказом ФСТЭК России от 27 сентября 2013 г. № 119."; break; }

                    case "САВЗ": { description = "Средство антивирусной защиты. Обеспечивает защиту от компьютерных вирусов. Требования к САВЗ утверждены Приказом ФСТЭК России от 20 марта 2012 г. № 28."; break; }

                    case "СКН": { description = "Средство контроля съемных машинных носителей информации. Обеспечивает защиту от компьютерных вирусов. Требования к СКН утверждены Приказом ФСТЭК России от 28 июля 2014 г. № 87."; break; }

                    case "САНЗ": { description = "Средство анализа (контроля) защищенности информационной системы. Предназначено для анализа защищенности информации в корпоративных сетях. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; }

                    case "СРСБ": { description = "Средство регистрации событий безопасности. Предназначено для управления событиями и информацией ИБ с целью выявления инцидентов в режиме реального времени. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; }

                    case "СЗСВ": { description = "Средство защиты среды виртуализации. Предназначено для защиты среды виртуальной инфраструктуры предприятия. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; }

                    case "СРК": { description = "Средство резервного копирования и восстановления информации. Предназначено для обеспечения целостности и доступности информации. Специальных требований, кроме наличия сертификата ФСТЭК России, к данному виду СЗИ не устанавливается."; break; }

                    default: { description = "Описание отсутствует"; break; }
                    }

                    TextBox tb = new TextBox();
                    tb.Text      = description;
                    tb.Multiline = true;
                    tb.TextAlign = HorizontalAlignment.Left;
                    tb.Location  = new Point(gb.Location.X + gb.Size.Width + 5, gb.Location.Y + 8);
                    tb.Size      = new Size(stageTab.Size.Width - 7 - gb.Size.Width - 5 - 50, gb.Size.Height - 8);
                    tb.BackColor = SystemColors.Control;
                    tb.ReadOnly  = true;


                    mf.ptpSZIforSZI.Controls.Add(tb);
                    mf.ptpSZIforSZI.Controls.Add(gb);

                    i++;
                }
            }
            mf.wsm.Visible = false;
        }
Пример #27
0
        private void BtnExportTP_Click(object sender, EventArgs e)
        {
            mf.wsm.Visible = true;
            mf.wsm.Update();

            Microsoft.Office.Interop.Word._Application oWord = null;
            try
            {
                oWord = new Microsoft.Office.Interop.Word.Application();
            }
            catch
            {
                mf.wsm.Visible = false;
                MessageBox.Show("На ПК не установлен пакет Microsoft Office Word 2007 или позднее. Экспорт невозможен.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Microsoft.Office.Interop.Word._Document oDoc = null;
            try
            {
                oDoc = oWord.Documents.Add(Environment.CurrentDirectory + "\\templateTP.docx");
            }
            catch
            {
                mf.wsm.Visible = false;
                MessageBox.Show("Отсутствует файл шаблона тех. проекта \"templateTP.docx\". Экспорт невозможен.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Microsoft.Office.Interop.Word.Table wordTable;
            Microsoft.Office.Interop.Word.Range bm;
            int row = 0;

            using (KPSZIContext db = new KPSZIContext())
            {
                #region Заполнение СФХ
                var listOfSFHs     = db.SFHs.ToList().Intersect(IS.listOfSFHs).ToList();
                var listOfSFHTypes = new List <SFHType>();

                foreach (SFH sfh in listOfSFHs)
                {
                    listOfSFHTypes.Add(sfh.SFHType);
                }
                listOfSFHTypes = listOfSFHTypes.Distinct().OrderBy(st => st.SFHTypeId).ToList();

                bm = oDoc.Bookmarks["SFH"].Range;
                bm.Tables.Add(bm, listOfSFHTypes.Count, 2, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle       = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle      = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                List <SFHType> lst = new List <SFHType>();

                row = 1;

                foreach (SFHType sfhtype in listOfSFHTypes)
                {
                    if (IS.listOfSFHs.Where(s => s.SFHType.Name == sfhtype.Name).ToList().Count == 0)
                    {
                        continue;
                    }

                    wordTable.Cell(row, 1).Range.Text = sfhtype.Name;
                    string sfhs = "";
                    foreach (SFH sfh in IS.listOfSFHs.Where(sfh => sfh.SFHType.Name == sfhtype.Name).ToList())
                    {
                        sfhs += sfh.Name + ", ";
                    }
                    sfhs = sfhs.TrimEnd(' ').TrimEnd(',');
                    wordTable.Cell(row, 2).Range.Text = sfhs;
                    row++;
                }

                #endregion

                #region Базовый набор мер
                bm = oDoc.Bookmarks["Basic_Set"].Range;
                bm.Tables.Add(bm, mf.dgvBasicMeas.Rows.Count + 1, 2, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle       = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle      = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType    = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth     = 6f;
                wordTable.Columns[2].PreferredWidth     = 94f;
                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = "№ п/п";
                wordTable.Cell(1, 2).Range.Text = "Наименование базовой меры";

                row = 2;
                foreach (DataGridViewRow dgvrow in mf.dgvBasicMeas.Rows)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row++, 2).Range.Text = dgvrow.Cells[1].Value.ToString();
                }

                #endregion

                #region Адаптация базового набора мер
                bm = oDoc.Bookmarks["Adaptive_Set"].Range;
                bm.Tables.Add(bm, StageMeasures.ListOfExcludedMeasures.Count + 1, 2, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle       = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle      = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType    = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth     = 6f;
                wordTable.Columns[2].PreferredWidth     = 94f;
                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = "№ п/п";
                wordTable.Cell(1, 2).Range.Text = "Наименование меры";

                row = 2;
                foreach (GISMeasure gm in StageMeasures.ListOfExcludedMeasures)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row++, 2).Range.Text = gm.ToString();
                }
                #endregion

                #region Уточненение адаптированного базового набора мер
                //Вывод УБИ-меры
                bm = oDoc.Bookmarks["Thr_Meas"].Range;
                bm.Tables.Add(bm, mf.dgvThrMeas.Rows.Count + 1, 3, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle       = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle      = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType    = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth     = 6f;
                wordTable.Columns[2].PreferredWidth     = 19f;
                wordTable.Columns[3].PreferredWidth     = 75f;
                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = "№ п/п";
                wordTable.Cell(1, 2).Range.Text = "Наименование угрозы";
                wordTable.Cell(1, 3).Range.Text = "Меры по нейтрализации УБИ";

                row = 2;
                foreach (DataGridViewRow dgvrow in mf.dgvThrMeas.Rows)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row, 2).Range.Text   = dgvrow.Cells[1].Value.ToString();
                    wordTable.Cell(row++, 3).Range.Text = dgvrow.Cells[2].Value.ToString();
                }

                //Вывод добавляемых мер
                bm = oDoc.Bookmarks["Add_Meas"].Range;
                bm.Tables.Add(bm, StageMeasures.ListOfAddedMeasures.Count + 1, 2, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle       = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle      = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType    = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth     = 6f;
                wordTable.Columns[2].PreferredWidth     = 94f;
                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = "№ п/п";
                wordTable.Cell(1, 2).Range.Text = "Наименование добавляемой меры";

                row = 2;
                foreach (GISMeasure gm in StageMeasures.ListOfAddedMeasures)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row++, 2).Range.Text = gm.ToString();
                }
                #endregion

                #region Итоговый перечень мер
                bm = oDoc.Bookmarks["Final_Set"].Range;
                bm.Tables.Add(bm, mf.dgvConcreteMeas.Rows.Count + 1, 2, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle       = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle      = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType    = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth     = 6f;
                wordTable.Columns[2].PreferredWidth     = 94f;
                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = "№ п/п";
                wordTable.Cell(1, 2).Range.Text = "Наименование меры";

                row = 2;
                foreach (DataGridViewRow dgvrow in mf.dgvConcreteMeas.Rows)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row++, 2).Range.Text = dgvrow.Cells[1].Value.ToString();
                }
                #endregion

                #region Перечень предлагаемых СЗИ
                bm = oDoc.Bookmarks["SZIs_Set"].Range;
                bm.Tables.Add(bm, mf.dgvSZIs.Rows.Count + 1, 5, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle    = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle   = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth  = 4.5f;
                wordTable.Columns[2].PreferredWidth  = 36.3f;
                wordTable.Columns[3].PreferredWidth  = 19.6f;
                wordTable.Columns[4].PreferredWidth  = 25.7f;
                wordTable.Columns[5].PreferredWidth  = 13.6f;

                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = "№";
                wordTable.Cell(1, 2).Range.Text = "Наименование СЗИ";
                wordTable.Cell(1, 3).Range.Text = "Вид";
                wordTable.Cell(1, 4).Range.Text = "Сертификат";
                wordTable.Cell(1, 5).Range.Text = "Уровень контроля отсутствия НДВ";


                row = 2;
                foreach (DataGridViewRow dgvrow in mf.dgvSZIs.Rows)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row, 2).Range.Text   = dgvrow.Cells[1].Value.ToString();
                    wordTable.Cell(row, 3).Range.Text   = dgvrow.Cells[2].Value.ToString();
                    wordTable.Cell(row, 4).Range.Text   = dgvrow.Cells[3].Value.ToString();
                    wordTable.Cell(row++, 5).Range.Text = dgvrow.Cells[4].Value.ToString();
                }
                #endregion

                #region Мера-СЗИ
                bm = oDoc.Bookmarks["Meas_SZIs"].Range;
                bm.Tables.Add(bm, mf.dgvMeasSZIs.Rows.Count + 1, 3, Type.Missing, Type.Missing);
                wordTable = bm.Tables[1];
                wordTable.Borders.InsideLineStyle    = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Borders.OutsideLineStyle   = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
                wordTable.Columns.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent;
                wordTable.Columns[1].PreferredWidth  = 6f;
                wordTable.Columns[2].PreferredWidth  = 60f;
                wordTable.Columns[3].PreferredWidth  = 34f;

                wordTable.Rows.Alignment                = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowLeft;
                wordTable.Rows[1].Alignment             = Microsoft.Office.Interop.Word.WdRowAlignment.wdAlignRowCenter;
                wordTable.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                wordTable.Range.Select();

                wordTable.Cell(1, 1).Range.Text = @"№ п\п";
                wordTable.Cell(1, 2).Range.Text = "Название меры";
                wordTable.Cell(1, 3).Range.Text = "Перечень СЗИ";


                row = 2;
                foreach (DataGridViewRow dgvrow in mf.dgvMeasSZIs.Rows)
                {
                    wordTable.Cell(row, 1).Range.Text   = (row - 1).ToString();
                    wordTable.Cell(row, 2).Range.Text   = dgvrow.Cells[1].Value.ToString();
                    wordTable.Cell(row++, 3).Range.Text = dgvrow.Cells[2].Value.ToString();
                }
                #endregion

                #region Замена слов
                mf.FindAndReplace(oWord, "{ИМЯ_ИС}", IS.ISName);
                mf.FindAndReplace(oWord, "{КЗ}", IS.GISClass);

                #endregion


                oDoc.Activate();
                oWord.Visible = true;
            }
            mf.wsm.Visible = false;
        }
Пример #28
0
        private void initForm()
        {
            listEmptyThreats = new List <Threat>();
            foreach (Threat t in ((StageActualThreats)mf.stages["tnActualThreats"]).listThreats)
            {
                if (t.ImplementWays.ToList().Count == 0 || t.Vulnerabilities.ToList().Count == 0 || t.SFHs.ToList().Count == 0)
                {
                    listEmptyThreats.Add(t);
                }
            }

            dgvThreats.DataSource = listEmptyThreats;
            dgvThreats.Columns["ThreatID"].Visible              = false;
            dgvThreats.Columns["ThreatSources"].Visible         = false;
            dgvThreats.Columns["DateOfChange"].Visible          = false;
            dgvThreats.Columns["DateOfAdd"].Visible             = false;
            dgvThreats.Columns["ImplementWays"].Visible         = false;
            dgvThreats.Columns["SFHs"].Visible                  = false;
            dgvThreats.Columns["Vulnerabilities"].Visible       = false;
            dgvThreats.Columns["Description"].Visible           = false;
            dgvThreats.Columns["ObjectOfInfluence"].Visible     = false;
            dgvThreats.Columns["GISMeasures"].Visible           = false;
            dgvThreats.Columns["ConfidenceViolation"].Visible   = false;
            dgvThreats.Columns["IntegrityViolation"].Visible    = false;
            dgvThreats.Columns["AvailabilityViolation"].Visible = false;
            dgvThreats.Columns["stringSources"].Visible         = false;
            dgvThreats.Columns["ThreatNumber"].AutoSizeMode     = DataGridViewAutoSizeColumnMode.None;
            dgvThreats.Columns["ThreatID"].DisplayIndex         = 0;
            dgvThreats.Columns["ThreatNumber"].Width            = 60;
            dgvThreats.Columns["ThreatNumber"].DisplayIndex     = 1;
            dgvThreats.Columns["ThreatNumber"].HeaderText       = "№ УБИ";
            dgvThreats.Columns["Name"].HeaderText               = "Название УБИ";
            dgvThreats.Columns["Name"].DisplayIndex             = 2;
            dgvThreats.Columns["stringVuls"].HeaderText         = "Уязвимости";
            dgvThreats.Columns["stringVuls"].DisplayIndex       = 3;
            dgvThreats.Columns["stringWays"].HeaderText         = "Способы реализации УБИ";
            dgvThreats.Columns["stringWays"].DisplayIndex       = 4;
            dgvThreats.Columns["stringSFHS"].HeaderText         = "СФХ";
            dgvThreats.Columns["stringSFHS"].DisplayIndex       = 5;


            using (KPSZIContext db = new KPSZIContext())
            {
                //Инициализация СФХ групбоксов
                listSFHTypes = db.SFHTypes.ToList();
                listSFHs     = db.SFHs.ToList();

                GroupBox    gb;
                RadioButton rb;
                CheckBox    cb;
                checkboxesSFH   = new List <CheckBox>();
                radiobuttonsSFH = new List <RadioButton>();
                int i   = 0;
                int j   = 0;
                int gbY = 5;

                foreach (SFHType itemSFHType in listSFHTypes)
                {
                    gb          = new GroupBox();
                    gb.Location = new Point(7, gbY);
                    gb.Text     = itemSFHType.Name;
                    foreach (SFH itemSFH in itemSFHType.SFHs)
                    {
                        if (itemSFHType.MultipleChoice)
                        {
                            cb                 = new CheckBox();
                            cb.Text            = itemSFH.Name;
                            cb.Margin          = new Padding(10, 5, 5, 5);
                            cb.Location        = new Point(10, 17 + (17 * j));
                            cb.Size            = new Size(440, 17);
                            cb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged);
                            checkboxesSFH.Add(cb);
                            gb.Controls.Add(cb);
                            j++;
                        }
                        else
                        {
                            rb                 = new RadioButton();
                            rb.Text            = itemSFH.Name;
                            rb.Margin          = new Padding(10, 5, 5, 5);
                            rb.Location        = new Point(10, 17 + (17 * j));
                            rb.Size            = new Size(440, 17);
                            rb.CheckedChanged += new System.EventHandler(rbSFH_CheckedChanged);
                            radiobuttonsSFH.Add(rb);
                            gb.Controls.Add(rb);
                            j++;
                        }
                    }

                    gb.Size = new Size(440, 25 + j * 17);
                    gbY    += 30 + j * 17;
                    j       = 0;
                    tpSFHs.Controls.Add(gb);
                    i++;
                }

                // инициализация таблицы уязвимостей
                listVuls = db.Vulnerabilities.ToList();
                dgvVulnerabilities.DataSource = listVuls;

                dgvVulnerabilities.Columns["Threats"].Visible                     = false;
                dgvVulnerabilities.Columns["VulnerabilityId"].Visible             = false;
                dgvVulnerabilities.Columns["VulnerabilityNumber"].Visible         = false;
                dgvVulnerabilities.Columns["cbVulnerability"].Width               = 30;
                dgvVulnerabilities.Columns["cbVulnerability"].MinimumWidth        = 30;
                dgvVulnerabilities.Columns["VulnerabilityName"].Width             = 300;
                dgvVulnerabilities.Columns["VulnerabilityName"].HeaderText        = "Уязвимость";
                dgvVulnerabilities.Columns["VulnerabilityDescription"].HeaderText = "Описание";


                foreach (DataGridViewColumn column in dgvVulnerabilities.Columns)
                {
                    column.ReadOnly = true;
                }
                dgvVulnerabilities.Columns["cbVulnerability"].ReadOnly = false;

                ((DataGridViewCheckBoxColumn)dgvVulnerabilities.Columns["cbVulnerability"]).TrueValue  = true;
                ((DataGridViewCheckBoxColumn)dgvVulnerabilities.Columns["cbVulnerability"]).FalseValue = false;

                dgvVulnerabilities.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(234, 240, 255);
                dgvVulnerabilities.ColumnHeadersDefaultCellStyle.ForeColor = Color.FromArgb(28, 32, 57);
                dgvVulnerabilities.EnableHeadersVisualStyles = false;

                dgvVulnerabilities.SelectionChanged += new System.EventHandler(dgvVulnerabilities_SelectionChanged);


                // инициализация способов реализации
                ListImplementWays = db.ImplementWays.OrderBy(iw => iw.WayNumber).ToList();

                int k    = 0;
                int yLoc = 5;
                foreach (ImplementWay iw in ListImplementWays)
                {
                    CheckBox cbox = new CheckBox();
                    cbox.Text     = iw.WayName;
                    cbox.AutoSize = false;
                    int y = 13 * ((TextRenderer.MeasureText(iw.WayName, clbImplementWays.Font).Width + 50) / (clbImplementWays.Width - 25) + 1) + 10;
                    cbox.Size            = new Size(clbImplementWays.Width - 25, y);
                    cbox.Location        = new Point(8, yLoc);
                    cbox.CheckedChanged += new System.EventHandler(cbWay_CheckedChanged);
                    yLoc += y;
                    k++;
                    clbImplementWays.Controls.Add(cbox);
                }
                yLoc += 14;
                clbImplementWays.Height = yLoc;
            }
        }