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); }
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)); }