public void Parse(string pcapFileName) { using (PcapFileReader pcapReader = new PcapFileReader(pcapFileName)) { ThreadStart threadStart = new ThreadStart(pcapReader.ThreadStart); Thread pcapReaderThread = new Thread(threadStart); //string exePath = System.IO.Path.GetFullPath(System.Windows.Forms.Application.ExecutablePath); //string executablePath = System.IO.Path.GetFullPath(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); string executablePath = System.IO.Path.GetFullPath(System.Reflection.Assembly.GetEntryAssembly().Location); PacketParser.PacketHandler packetHandler = new PacketHandler(executablePath, System.Environment.CurrentDirectory, null, true, new Func <DateTime, string>((DateTime dateTime) => { return(dateTime.ToUniversalTime().ToString("u")); }), false); packetHandler.StartBackgroundThreads(); int readFrames = 0; foreach (PcapFrame packet in pcapReader.PacketEnumerator()) { /* * while (readFrames % (100) == 0 && packetHandler.FramesInQueue > 1000) { * System.Threading.Thread.Sleep(100); * } */ PacketParser.Frame frame = packetHandler.GetFrame(packet.Timestamp, packet.Data, packet.DataLinkType); packetHandler.AddFrameToFrameParsingQueue(frame); readFrames++; } } }
private static void ParsePCAPFile(String filePath) { int percentRead = 0; using (PcapFileReader pcapReader = new PcapFileReader(filePath)) { DateTime parsingStartTime = DateTime.Now; Logger.Log(filePath + " start parsing " + parsingStartTime.ToString(), Logger.EventLogEntryType.Information); Console.WriteLine("Start parsing " + filePath); int enqueuedFramesSinceLastWait = 0; PacketHandler packetHandler = new PacketHandler(EXE_PATH, System.Environment.CurrentDirectory, null, true, new Func <DateTime, string>((DateTime dateTime) => { return(dateTime.ToUniversalTime().ToString("u")); }), false); packetHandler.StartBackgroundThreads(); foreach (PcapFrame pcapPacket in pcapReader.PacketEnumerator()) { Frame frame = packetHandler.GetFrame(pcapPacket.Timestamp, pcapPacket.Data, pcapPacket.DataLinkType); packetHandler.AddFrameToFrameParsingQueue(frame); enqueuedFramesSinceLastWait++; int newPercentRead = pcapReader.GetPercentRead(packetHandler.FramesToParseQueuedByteCount); if (newPercentRead != percentRead) { percentRead = newPercentRead; // output percent Console.WriteLine("Progress: " + percentRead + "%"); } } Logger.Log(enqueuedFramesSinceLastWait + " frames read in " + DateTime.Now.Subtract(parsingStartTime).ToString(), Logger.EventLogEntryType.Information); while (packetHandler.FramesInQueue > 0) //just to make sure we dont finish too early { System.Threading.Thread.Sleep(200); int newPercentRead = pcapReader.GetPercentRead(packetHandler.FramesToParseQueuedByteCount); if (newPercentRead != percentRead) { percentRead = newPercentRead; // output percent Console.WriteLine("Progress: " + percentRead + "%"); } } TimeSpan parsingTimeTotal = DateTime.Now.Subtract(parsingStartTime); Logger.Log(filePath + " parsed in " + parsingTimeTotal.ToString(), Logger.EventLogEntryType.Information); Console.WriteLine("Finished parsing " + filePath); } }
public void Parse(string pcapFileName) { using (PcapFileHandler.PcapFileReader pcapReader = new PcapFileHandler.PcapFileReader(pcapFileName)) { ThreadStart threadStart = new ThreadStart(pcapReader.ThreadStart); Thread pcapReaderThread = new Thread(threadStart); //string exePath = System.IO.Path.GetFullPath(System.Windows.Forms.Application.ExecutablePath); string executablePath = System.IO.Path.GetFullPath(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); PacketParser.PacketHandler packetHandler = new PacketHandler(executablePath, System.Environment.CurrentDirectory); packetHandler.StartBackgroundThreads(); int readFrames = 0; foreach (PcapFileHandler.PcapFrame packet in pcapReader.PacketEnumerator()) { while (readFrames % (100) == 0 && packetHandler.FramesInQueue > 1000) { System.Threading.Thread.Sleep(100); } PacketParser.Frame frame = packetHandler.GetFrame(packet.Timestamp, packet.Data, packet.DataLinkType); packetHandler.AddFrameToFrameParsingQueue(frame); readFrames++; } } }