Esempio n. 1
0
        T PerformTheAnalysis <T>(string server) where T : IPingCastleReport
        {
            T    pingCastleReport = default(T);
            bool status           = StartTask("Perform analysis for " + server,
                                              () =>
            {
                var analyzer     = PingCastleFactory.GetPingCastleAnalyzer <T>();
                pingCastleReport = analyzer.PerformAnalyze(new PingCastleAnalyzerParameters()
                {
                    Server     = server,
                    Port       = Port,
                    Credential = Credential,
                    PerformExtendedTrustDiscovery        = AnalyzeReachableDomains,
                    AdditionalNamesForDelegationAnalysis = NodesToInvestigate,
                });
                string domain = pingCastleReport.Domain.DomainName;
                DisplayAdvancement("Generating html report");
                var enduserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <T>();
                htmlreports[domain]        = enduserReportGenerator.GenerateReportFile(pingCastleReport, License, pingCastleReport.GetHumanReadableFileName());
                DisplayAdvancement("Generating xml file for consolidation report" + (EncryptReport ? " (encrypted)" : ""));
                pingCastleReport.SetExportLevel(ExportLevel);
                xmlreports[domain] = DataHelper <T> .SaveAsXml(pingCastleReport, pingCastleReport.GetMachineReadableFileName(), EncryptReport);
                DisplayAdvancement("Done");
            });

            return(pingCastleReport);
        }
Esempio n. 2
0
        public bool GenerateFakeReport()
        {
            return(StartTask("Generate fake reports",
                             () =>
            {
                var fakegenerator = new FakeHealthCheckDataGenerator();
                var hcconso = fakegenerator.GenerateData();

                foreach (var pingCastleReport in hcconso)
                {
                    var enduserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>();
                    enduserReportGenerator.GenerateReportFile(pingCastleReport, License, pingCastleReport.GetHumanReadableFileName());
                    pingCastleReport.SetExportLevel(ExportLevel);
                    DataHelper <HealthcheckData> .SaveAsXml(pingCastleReport, pingCastleReport.GetMachineReadableFileName(), EncryptReport);
                }

                var reportConso = new ReportHealthCheckConsolidation();
                reportConso.GenerateReportFile(hcconso, License, "ad_hc_summary.html");
                ReportHealthCheckMapBuilder nodeAnalyzer = new ReportHealthCheckMapBuilder(hcconso, License);
                nodeAnalyzer.Log = Console.WriteLine;
                nodeAnalyzer.GenerateReportFile("ad_hc_summary_full_node_map.html");
                nodeAnalyzer.FullNodeMap = false;
                nodeAnalyzer.CenterDomainForSimpliedGraph = CenterDomainForSimpliedGraph;
                nodeAnalyzer.GenerateReportFile("ad_hc_summary_simple_node_map.html");
                var mapReport = new ReportNetworkMap();
                mapReport.GenerateReportFile(hcconso, License, "ad_hc_hilbert_map.html");
            }
                             ));
        }
Esempio n. 3
0
 public bool RegenerateHtmlTask()
 {
     return(StartTask("Regenerate html report",
                      () =>
     {
         if (!File.Exists(FileOrDirectory))
         {
             WriteInRed("The file " + FileOrDirectory + " doesn't exist");
             return;
         }
         var fi = new FileInfo(FileOrDirectory);
         if (fi.Name.StartsWith("ad_cg_"))
         {
             CompromiseGraphData data = DataHelper <CompromiseGraphData> .LoadXml(FileOrDirectory);
             var report = new ReportCompromiseGraph();
             report.GenerateReportFile(data, License, data.GetHumanReadableFileName());
         }
         else
         {
             var healthcheckData = DataHelper <HealthcheckData> .LoadXml(FileOrDirectory);
             var endUserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>();
             endUserReportGenerator.GenerateReportFile(healthcheckData, License, healthcheckData.GetHumanReadableFileName());
         }
     }
                      ));
 }
Esempio n. 4
0
 public bool ScannerTask()
 {
     return(StartTask("Scanner",
                      () =>
     {
         PropertyInfo pi = Scanner.GetProperty("Name");
         IScanner scanner = PingCastleFactory.LoadScanner(Scanner);
         string name = pi.GetValue(scanner, null) as string;
         DisplayAdvancement("Running scanner " + name);
         scanner.Initialize(Server, Port, Credential);
         scanner.Export("ad_scanner_" + name + "_" + Server + ".txt");
     }
                      ));
 }
Esempio n. 5
0
 public bool ExportTask()
 {
     return(StartTask("Running Export",
                      () =>
     {
         PropertyInfo pi = Export.GetProperty("Name");
         IExport export = PingCastleFactory.LoadExport(Export);
         string name = pi.GetValue(export, null) as string;
         DisplayAdvancement("Running export " + name);
         export.Initialize(Server, Port, Credential);
         string file = "ad_export_" + name + "_" + Server + ".txt";
         export.Export(file);
         DisplayAdvancement("Results saved to " + new FileInfo(file).FullName);
     }
                      ));
 }
Esempio n. 6
0
 public bool RegenerateHtmlTask()
 {
     return(StartTask("Regenerate html report",
                      () =>
     {
         if (!File.Exists(FileOrDirectory))
         {
             WriteInRed("The file " + FileOrDirectory + " doesn't exist");
             return;
         }
         var fi = new FileInfo(FileOrDirectory);
         var healthcheckData = DataHelper <HealthcheckData> .LoadXml(FileOrDirectory);
         var endUserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>();
         endUserReportGenerator.GenerateReportFile(healthcheckData, License, healthcheckData.GetHumanReadableFileName());
     }
                      ));
 }
Esempio n. 7
0
 public bool ScannerTask()
 {
     return(StartTask("Scanner",
                      () =>
     {
         PropertyInfo pi = Scanner.GetProperty("Name");
         IScanner scanner = PingCastleFactory.LoadScanner(Scanner);
         string name = pi.GetValue(scanner, null) as string;
         DisplayAdvancement("Running scanner " + name);
         scanner.Initialize(Server, Port, Credential);
         if (scanner as ScannerBase != null)
         {
             ((ScannerBase)scanner).FileOrDirectory = FileOrDirectory;
         }
         string file = "ad_scanner_" + name + "_" + Server + ".txt";
         scanner.Export(file);
         DisplayAdvancement("Results saved to " + new FileInfo(file).FullName);
     }
                      ));
 }
Esempio n. 8
0
 public bool GenerateDemoReportTask()
 {
     return(StartTask("Generating demo reports",
                      () =>
     {
         if (String.IsNullOrEmpty(FileOrDirectory))
         {
             FileOrDirectory = Directory.GetCurrentDirectory();
         }
         if (!Directory.Exists(FileOrDirectory))
         {
             WriteInRed("The directory " + FileOrDirectory + " doesn't exist");
             return;
         }
         string path = Path.Combine(FileOrDirectory, "demo");
         if (!Directory.Exists(path))
         {
             Directory.CreateDirectory(path);
         }
         var consolidation = PingCastleReportHelper <HealthcheckData> .LoadXmls(FileOrDirectory, FilterReportDate);
         if (consolidation.Count == 0)
         {
             WriteInRed("No report has been found. Please generate one with PingCastle and the Healtch Check mode. The program will stop.");
             return;
         }
         consolidation = PingCastleReportHelper <HealthcheckData> .TransformReportsToDemo(consolidation);
         foreach (HealthcheckData data in consolidation)
         {
             string domain = data.DomainFQDN;
             var endUserReportGenerator = PingCastleFactory.GetEndUserReportGenerator <HealthcheckData>();
             string html = endUserReportGenerator.GenerateReportFile(data, License, Path.Combine(path, data.GetHumanReadableFileName()));
             data.SetExportLevel(ExportLevel);
             string xml = DataHelper <HealthcheckData> .SaveAsXml(data, Path.Combine(path, data.GetMachineReadableFileName()), EncryptReport);
         }
     }
                      ));
 }