Beispiel #1
0
            public static DataInFile FromCsv(string csvLine)
            {
                string[]   values     = csvLine.Split(',');
                DataInFile dataInFile = new DataInFile();

                dataInFile.time        = Math.Floor(Convert.ToDecimal(values[1].Trim('"')));
                dataInFile.source      = Convert.ToString(values[2].Trim('"'));
                dataInFile.destination = Convert.ToString(values[3].Trim('"'));
                dataInFile.protocol    = Convert.ToString(values[4].Trim('"'));
                dataInFile.length      = Convert.ToInt32(values[5].Trim('"'));
                return(dataInFile);
            }
Beispiel #2
0
        static void Main(string[] args)
        {
            //string filePath = "../../Dataset/normal.csv";
            string filePath = "../../Dataset/data_ddos.csv";

            List <DataInFile> dataInFileList = File.ReadAllLines(filePath).Skip(1).Select(v => DataInFile.FromCsv(v)).ToList();

            List <DataInFile> icmpDataList    = dataInFileList.Where(x => x.protocol.ToUpper() == "ICMP".ToUpper()).ToList();
            List <string>     destinationList = icmpDataList.Select(x => x.destination).Distinct().ToList();
            List <decimal>    timeList        = icmpDataList.Select(x => x.time).Distinct().ToList();

            List <List <string> > hasilPrediksi = new List <List <string> >();
            List <string>         dataPrediksi  = new List <string>();

            dataPrediksi.Add("Time");
            dataPrediksi.Add("Source");
            dataPrediksi.Add("Destination");
            dataPrediksi.Add("Banyak paket");
            dataPrediksi.Add("Hasil Prediksi");
            hasilPrediksi.Add(dataPrediksi);

            foreach (decimal time in timeList)
            {
                foreach (string destination in destinationList)
                {
                    DataForFuzzy dataForFuzzy = new DataForFuzzy();
                    dataForFuzzy.jlhData = icmpDataList.Where(x => x.time == time && x.destination.ToUpper() == destination.ToUpper()).ToList().Count;
                    List <string> dataSource = icmpDataList.Where(x => x.time == time && x.destination.ToUpper() == destination.ToUpper()).Select(y => y.source).ToList();
                    dataForFuzzy.jlhSource = dataSource.Count;
                    dataForFuzzy.jlhLength = icmpDataList.Where(x => x.time == time && x.destination.ToUpper() == destination.ToUpper()).Select(y => y.length).ToList().Sum();

                    if (dataForFuzzy.jlhSource > 0)
                    {
                        decimal nilaiPrediksi = DDosDetectorUsingFuzzyLogic(dataForFuzzy);

                        //thresholding
                        dataPrediksi = new List <string>();
                        dataPrediksi.Add(time.ToString());
                        dataPrediksi.Add(String.Join("; ", dataSource));
                        dataPrediksi.Add(destination.ToString());
                        dataPrediksi.Add(dataForFuzzy.jlhLength.ToString());
                        if (nilaiPrediksi > (decimal)0.4)
                        {
                            dataPrediksi.Add("1");
                        }
                        else
                        {
                            dataPrediksi.Add("0");
                        }
                        hasilPrediksi.Add(dataPrediksi);
                    }
                }
            }

            //Save hasil prediksi ke file
            //File.WriteAllLines("../../Dataset/Prediksi/hasilPrediksi_normal.csv", hasilPrediksi.Select(x => string.Join(",", x)));
            File.WriteAllLines("../../Dataset/Prediksi/hasilPrediksi_data_ddos.csv", hasilPrediksi.Select(x => string.Join(",", x)));
        }
        public void GetSites()
        {
            var siteNames = DataInFile.Select(d => d.Site);

            Sites = _repostory.DbContext().Sites.AsQueryable().Where(s => siteNames.Contains(s.Name));
        }
 public void RemoveData()
 {
     DataInFile.RemoveAll(d => ClientsThatDoNotExist.Any(c => c.ClientId == d.ClientId) == true ||
                          SitesThatDoNotExist.Any(s => s.Site == d.Site) == true);
 }
 public void SetSitesThatDoNotExist()
 {
     SitesThatDoNotExist = DataInFile.Where(d => !Sites.Any(s => s.Name == d.Site)).AsEnumerable();
 }
 public void SetClientsThatDoNotExist()
 {
     ClientsThatDoNotExist = DataInFile.Where(d => !Clients.Any(c => c.Id == d.ClientId)).AsEnumerable();
 }
        public void GetClients()
        {
            var clientIds = DataInFile.Select(d => d.ClientId);

            Clients = _repostory.DbContext().Clients.AsQueryable().Where(c => clientIds.Contains(c.Id));
        }