static string BuildStatJson(HealthcheckData Report, ADHealthCheckingLicense license, bool shareStat) { var sb = new StringBuilder(); sb.Append("{"); sb.Append("\"generation\":\""); sb.Append(Report.GenerationDate.ToString("u")); sb.Append("\""); sb.Append(",\"version\":\""); sb.Append(Report.version.ToString()); sb.Append("\""); sb.Append(",\"users\":"); sb.Append(Report.UserAccountData.NumberActive); sb.Append(",\"computers\":"); sb.Append(Report.ComputerAccountData.NumberActive); sb.Append(",\"score\":"); sb.Append(Report.GlobalScore); sb.Append(",\"anomaly\":"); sb.Append(Report.AnomalyScore); sb.Append(",\"staledobjects\":"); sb.Append(Report.StaleObjectsScore); sb.Append(",\"trust\":"); sb.Append(Report.TrustScore); sb.Append(",\"privilegedGroup\":"); sb.Append(Report.PrivilegiedGroupScore); sb.Append(",\"maturityLevel\":"); sb.Append(Report.MaturityLevel); sb.Append(",\"rules\":\""); if (Report.RiskRules != null) { bool first = true; foreach (var rule in Report.RiskRules) { if (!first) { sb.Append(","); } sb.Append(rule.RiskId); first = false; } } sb.Append("\""); if (string.IsNullOrEmpty(license.Edition) || string.Equals(license.Edition, "Basic", StringComparison.OrdinalIgnoreCase) || shareStat) { sb.Append(",\"id\":\""); using (SHA256 hashstring = SHA256.Create()) { sb.Append(Convert.ToBase64String(hashstring.ComputeHash(Encoding.UTF8.GetBytes(Report.DomainFQDN.ToLowerInvariant() + Report.DomainSid.ToUpperInvariant())))); } sb.Append("\""); } sb.Append("}"); return(sb.ToString()); }
public string GenerateRawContent(HealthcheckData[] reports, ADHealthCheckingLicense aDHealthCheckingLicense) { _license = aDHealthCheckingLicense; Reports = reports; reports[0].InitializeReportingData(); reports[1].InitializeReportingData(); Report = Reports[0]; sb.Length = 0; GenerateContent(); return(sb.ToString()); }
public static Dictionary <string, string> GetData(HealthcheckData report, ADHealthCheckingLicense license, bool shareStat = false) { var json = BuildStatJson(report, license, true); return(new Dictionary <string, string>() { { "license", license.LicenseKey }, { "json", json }, { "signature", SignatureStatJson(license, json) }, }); }
public HealthCheckReportCompromiseGraph(CompromiseGraphData compromiseGraphData, ADHealthCheckingLicense license) { this.CompromiseGraphData = compromiseGraphData; _license = license; CompromiseGraphData.Data.Sort( (SingleCompromiseGraphData a, SingleCompromiseGraphData b) => { return(String.Compare(a.Description, b.Description)); }); }
static string SignatureStatJson(ADHealthCheckingLicense license, string json) { byte[] key; using (SHA256 hashstring = SHA256.Create()) { key = hashstring.ComputeHash(Encoding.UTF8.GetBytes(license.LicenseKey)); } var hmac = new HMACSHA256(key); var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(json)); return(Convert.ToBase64String(hash)); }
public string GenerateReportFile(PingCastleReportCollection <HealthcheckData> report, ADHealthCheckingLicense license, string filename) { Report = report; Brand(license); return(GenerateReportFile(filename)); }
public string GenerateReportFile(PingCastleReportCollection <HealthcheckData> report, ADHealthCheckingLicense license, string filename) { data = NetworkMapData.BuildFromConsolidation(report); return(GenerateReportFile(filename)); }
public ReportHealthCheckMapBuilder(PingCastleReportCollection <HealthcheckData> consolidation, ADHealthCheckingLicense license) : this(consolidation, (OwnerInformationReferences)null) { Brand(license); }
public string GenerateReportFile(PingCastleReportCollection <CompromiseGraphData> report, ADHealthCheckingLicense license, string filename) { Report = report; return(GenerateReportFile(filename)); }