private static List<Object> GenerateNetworkTrainingData() { int type; String time; String dayOfWeek; String length; String ipAddress; var dataPoints = new List<Object>(); int UsIpStart = 1056964608; int UsIpEnd = 1274120959; int intIp; DateTime date; Random rand = new Random(); for (int i = 0; i < 10000; i++) { //Generate a type either 0 or 1 type = rand.Next(2); //Generate a random day and fill in our strings date = RandomDateTimeEightToFive(rand); time = date.TimeOfDay.ToString(); dayOfWeek = date.DayOfWeek.ToString(); //generate a length of the packet between 100 and 2000 length = rand.Next(100, 2000).ToString(); //Get a random ip that falls in the us range intIp = rand.Next(UsIpStart, UsIpEnd + 1); ipAddress = "" + IntToByte(intIp, 3).ToString() + "." + IntToByte(intIp, 2).ToString() + "." + IntToByte(intIp, 1).ToString() + "." + IntToByte(intIp, 0).ToString(); NetworkDataPoint dataPoint = new NetworkDataPoint(type, time, dayOfWeek, length, ipAddress); dataPoints.Add(dataPoint.AsDataObject()); } return dataPoints; }
/// <summary> /// Prints the time and length of each received packet /// </summary> private static void device_OnPacketArrival(object sender, CaptureEventArgs e) { // print out periodic statistics about this device var Now = DateTime.Now; // cache 'DateTime.Now' for minor reduction in cpu overhead var interval = Now - LastStatisticsOutput; var time = e.Packet.Timeval.Date; var len = e.Packet.Data.Length; var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); var ethernetPacket = (PacketDotNet.EthernetPacket)packet; var timeString = time.Hour.ToString() + ":" + time.Minute.ToString() + ":" + time.Second.ToString(); if (interval > LastStatisticsInterval) { //NetworkDataPoint ndp = new NetworkDataPoint(timeString, time.DayOfWeek.ToString(), len.ToString(), ethernetPacket.SourceHwAddress.ToString()); if (packet.PayloadPacket.GetType() == typeof(PacketDotNet.IPv4Packet)) { PacketDotNet.IPv4Packet ipPacket = (PacketDotNet.IPv4Packet)packet.PayloadPacket; String source = ipPacket.SourceAddress.ToString(); String destination = ipPacket.DestinationAddress.ToString(); if(!IsPrivateOrMulticast(source) && IsPrivateOrMulticast(destination)) { NetworkDataPoint ndp = new NetworkDataPoint(NetworkDataPoint.INCOMING, timeString, time.DayOfWeek.ToString(), len.ToString(), source); controller.addDataPoint(container, ndp); } else if(IsPrivateOrMulticast(source) && !IsPrivateOrMulticast(destination)) { NetworkDataPoint ndp = new NetworkDataPoint(NetworkDataPoint.OUTGOING, timeString, time.DayOfWeek.ToString(), len.ToString(), destination); controller.addDataPoint(container, ndp); } Console.WriteLine("Source: {0} Destination: {1} Length: {2}", ipPacket.SourceAddress, ipPacket.DestinationAddress, len); } LastStatisticsOutput = Now; } // lock QueueLock to prevent multiple threads accessing PacketQueue at // the same time lock (QueueLock) { PacketQueue.Add(e.Packet); } }