示例#1
0
文件: TechAnalyzer.cs 项目: wzeb/Mars
        public static void NumberAnalyzer(List <IdsTech> content)
        {
            var drawer = new Drawer <DateTime, double>()
            {
                Path = @"E:\data\IDS\241AN\测试.jpg"
            };

            //var typecontent = content.GroupBy(x => x.ThreatName).Where(t => t.Count() > 1000);


            Dictionary <DateTime, Drawer <DateTime, double> .BoxPlot> dict = new Dictionary <DateTime, Drawer <DateTime, double> .BoxPlot>();

            foreach (var item in content.GroupBy(x => (int)Statics.Timeround(x.StartTime, TimeSpan.FromMinutes(10)).TimeOfDay.TotalMinutes))
            {
                var      groups      = item.GroupBy(x => x.StartTime.DayOfYear).Select(x => (double)x.Count()).ToArray();
                var      percentiles = Statics.Quartiles(groups);
                DateTime time        = new DateTime(2019, 1, 1);
                dict.Add(time + TimeSpan.FromMinutes(item.Key), drawer.CreateBoxPlotInstance(groups.Min(), groups.Max(), percentiles.Item1, percentiles.Item3, groups.Average(), percentiles.Item2));
            }

            drawer.AddBoxPlotSeries(dict);

            //foreach (var c in typecontent)
            //{
            //    foreach (var item in c.GroupBy(x => Statics.Timeround(x.StartTime, TimeSpan.FromMinutes(10))).ToDictionary(x => x.Key, x => x.Count()))
            //    {
            //        Console.WriteLine(item.Key + "," + item.Value);
            //    }



            //    Dictionary<DateTime, Drawer<DateTime, double>.BoxPlot> dict = new Dictionary<DateTime, Drawer<DateTime, double>.BoxPlot>();
            //    foreach (var item in c.GroupBy(x => (int)Statics.Timeround(x.StartTime, TimeSpan.FromMinutes(10)).TimeOfDay.TotalMinutes))
            //    {
            //        var groups = item.GroupBy(x => x.StartTime.DayOfYear).Select(x => (double)x.Count()).ToArray();
            //        var percentiles = Statics.Quartiles(groups);
            //        DateTime time = new DateTime(2019, 1, 1);
            //        dict.Add(time + TimeSpan.FromMinutes(item.Key), drawer.CreateBoxPlotInstance(groups.Min(), groups.Max(), percentiles.Item1, percentiles.Item3, groups.Average(), percentiles.Item2));
            //    }

            //    drawer.AddBoxPlotSeries(dict, c.Key);
            //}


            drawer.SaveBoxPlot();
        }
示例#2
0
文件: TechAnalyzer.cs 项目: wzeb/Mars
        public static void TypeAnalyzer(List <IdsTech> content)
        {
            //var content = ContentExtractor.CsvReader<IdsTech>(@"E:\data\IDS\241.txt");

            var s = content.GroupBy(a => a.ThreatName).Where(g => g.Count() > 1000).ToDictionary(g => g.Key, h => h.Count());

            var drawer = new Drawer <DateTime, int>()
            {
                Path = @"E:\data\IDS\241AN\1000次威胁名称stacked_per1min.jpg"
            };

            drawer.InitialGraph();
            foreach (var item in s)
            {
                var seriesData = content.Where(c => c.ThreatName == item.Key)
                                 .GroupBy(x => Statics.Timeround(x.StartTime, TimeSpan.FromMinutes(1)))
                                 .ToDictionary(a => a.Key, b => b.Count());

                drawer.AddSeries(seriesData, SeriesChartType.StackedColumn, item.Key.ToString());
            }
            drawer.Save(true);
        }
示例#3
0
        static void Main2(string[] args)
        {
            var content = ContentExtractor.LineJsonReader <IdsEve>(@"E:\data\eve11.json");

            var max   = content.GroupBy(x => x.TargetIp).ToDictionary(x => x.Key, x => x.Count());
            var maxip = max.OrderByDescending(x => x.Value).FirstOrDefault().Key;

            var samples = content.Where(x => Statics.IpEquals(maxip, x.TargetIp)).ToArray();
            //var samples = content.ToArray();

            //Console.WriteLine("EventType: " + content.Select(x => x.EventType).Distinct().Count());
            //Console.WriteLine("FlowId: " + content.Select(x => x.FlowId).Distinct().Count());
            //Console.WriteLine("SourceIp: " + content.Select(x => x.SourceIp).Distinct().Count());

            var drawer = new Drawer <DateTime, int>()
            {
                Path = @"E:\data\eve11_by_alert_signature_maxip.jpg"
            };

            drawer.InitialGraph();

            var groups = samples.Where(x => x.EventType == "alert").GroupBy(x => x.Alert.SignatureId);

            foreach (var items in groups)
            {
                var points = items.GroupBy(x => Statics.Timeround(x.Timestamp, TimeSpan.FromMilliseconds(100)))
                             .ToDictionary(x => x.Key, x => x.Count()).OrderBy(x => x.Key);
                drawer.AddSeries(points, SeriesChartType.Line, items.Key);
            }
            //drawer.Chart.ChartAreas["Default"].AxisX.

            drawer.SetAxisLogarithmic(false);
            drawer.Save(true);

            //           Console.ReadKey();
        }