예제 #1
0
        public static void Main(string[] args)
        {
            IPersistenceConfigurer config = PostgreSQLConfiguration.PostgreSQL82.ConnectionString("Server=" + ConfigurationManager.AppSettings ["PostgreSQL"] + ";Port=5432;Database=rising_sun;User Id=postgres;Password=password;SSL=true;");


            ISessionFactory factory = Fluently.Configure()
                                      .Database(config)
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentCVE> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentNessusScan> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentNexposeScan> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentOpenVASTask> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentOneSixtyOneResults> ())
                                      .BuildSessionFactory();

            List <PersistentCVE> cves = new List <PersistentCVE> ();

            using (ISession session = factory.OpenSession()) {
                string xml = System.IO.File.ReadAllText("/home/bperry/tmp/cve/allitems.xml");

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);

                using (ITransaction trans = session.BeginTransaction()) {
                    foreach (XmlNode child in doc.LastChild.ChildNodes)
                    {
                        PersistentCVE cve = new PersistentCVE(new CVE(child));

                        cve.SetCreationInfo(Guid.Empty);

                        foreach (PersistentCVEReference reference in cve.PersistentReferences)
                        {
                            reference.CVE = cve;
                            reference.SetCreationInfo(Guid.Empty);
                        }

                        foreach (PersistentCVEComment comment in cve.PersistentComments)
                        {
                            comment.CVE = cve;
                            comment.SetCreationInfo(Guid.Empty);
                        }

                        Console.WriteLine("Saving " + cve.Name);

                        session.Save(cve);
                        cves.Add(cve);
                    }

                    List <string> nvdExports = new List <string>();

                    foreach (FileInfo file in new System.IO.DirectoryInfo(ConfigurationManager.AppSettings["nvdExportDir"]).EnumerateFiles())
                    {
                        nvdExports.Add(file.FullName);
                    }

                    foreach (string export in nvdExports)
                    {
                        xml = System.IO.File.ReadAllText(export);

                        doc = new XmlDocument();
                        doc.LoadXml(xml);

                        foreach (XmlNode child in doc.LastChild.ChildNodes)
                        {
                            PersistentNVD nvd = new PersistentNVD(new NVD(child));

                            if (cves.Where(c => c.Name == nvd.CVEID).Count() != 1)
                            {
                                continue;
                            }

                            if (!string.IsNullOrEmpty(nvd.CVEID))
                            {
                                PersistentCVE cve = cves.Where(c => c.Name == nvd.CVEID).Single();

                                if (cve == null)
                                {
                                    throw new Exception("CVE " + nvd.CVEID + " doesn't exist.");
                                }

                                nvd.CVE = cve;
                            }

                            Console.WriteLine(nvd.NVDID);
                            nvd.SetCreationInfo(Guid.Empty);

                            if (nvd.CVSS != null)
                            {
                                nvd.CVSS.SetCreationInfo(Guid.Empty);
                            }

                            if (nvd.References != null)
                            {
                                foreach (PersistentNVDReference reference in nvd.References)
                                {
                                    reference.SetCreationInfo(Guid.Empty);
                                }
                            }

                            if (nvd.VulnerableSoftware != null)
                            {
                                foreach (PersistentVulnerableSoftware vs in nvd.VulnerableSoftware)
                                {
                                    vs.SetCreationInfo(Guid.Empty);
                                }
                            }

                            session.SaveOrUpdate(nvd);
                        }
                    }

                    try {
                        Console.WriteLine("Committing...");
                        trans.Commit();
                    } catch (Exception ex) {
                        trans.Rollback();
                        throw ex;
                    }
                }
            }
        }
예제 #2
0
        public static void Main(string[] args)
        {
            IPersistenceConfigurer config = PostgreSQLConfiguration.PostgreSQL82.ConnectionString("Server=" + ConfigurationManager.AppSettings ["PostgreSQL"] + ";Port=5432;Database=rising_sun;User Id=" +
                                                                                                  ConfigurationManager.AppSettings ["PostgreSQLUser"] + ";Password="******"PostgreSQLPassword"] + ";SSL=true;");


            ISessionFactory factory = Fluently.Configure()
                                      .Database(config)
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentNVD> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentNessusScan> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentNexposeScan> ())
                                      .Mappings(m =>
                                                m.FluentMappings.AddFromAssemblyOf <PersistentOpenVASTask> ())
                                      .BuildSessionFactory();

            using (ISession session = factory.OpenSession()) {
                List <string> nvdExports = new List <string>();

                foreach (FileInfo file in new System.IO.DirectoryInfo(ConfigurationManager.AppSettings["nvdExportDir"]).EnumerateFiles())
                {
                    nvdExports.Add(file.FullName);
                }

                foreach (string export in nvdExports)
                {
                    using (ITransaction trans = session.BeginTransaction()) {
                        string xml = System.IO.File.ReadAllText(export);

                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml(xml);

                        foreach (XmlNode child in doc.LastChild.ChildNodes)
                        {
                            PersistentNVD nvd = new PersistentNVD(new NVD(child));

//							bool exists = session.CreateCriteria<PersistentNVD> ()
//								.Add (NHibernate.Criterion.Restrictions.Eq ("CVEID", nvd.CVEID))
//								.List<PersistentNVD> ()
//								.Any ();
//
//							if (exists) {
//								Console.WriteLine ("Skipping NVD: " + nvd.CVEID);
//								continue;
//							}

                            if (!string.IsNullOrEmpty(nvd.CVEID))
                            {
                                PersistentCVE cve = session.CreateCriteria <PersistentCVE> ()
                                                    .Add(NHibernate.Criterion.Restrictions.Eq("Name", nvd.CVEID))
                                                    .List <PersistentCVE> ()
                                                    .SingleOrDefault();

                                if (cve == null)
                                {
                                    throw new Exception("CVE " + nvd.CVEID + " doesn't exist.");
                                }

                                nvd.CVE = cve;
                            }

                            Console.WriteLine(nvd.NVDID);
                            nvd.SetCreationInfo(Guid.Empty);

                            if (nvd.CVSS != null)
                            {
                                nvd.CVSS.SetCreationInfo(Guid.Empty);
                            }

                            if (nvd.References != null)
                            {
                                foreach (PersistentNVDReference reference in nvd.References)
                                {
                                    reference.SetCreationInfo(Guid.Empty);
                                }
                            }

                            if (nvd.VulnerableSoftware != null)
                            {
                                foreach (PersistentVulnerableSoftware vs in nvd.VulnerableSoftware)
                                {
                                    vs.SetCreationInfo(Guid.Empty);
                                }
                            }

                            session.SaveOrUpdate(nvd);
                        }
                        try {
                            Console.WriteLine("Committing...");
                            trans.Commit();
                        } catch (Exception ex) {
                            trans.Rollback();
                            throw ex;
                        }
                    }
                }
            }
        }