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++;
                }
            }
        }
Exemple #2
0
        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++;
                }
            }
        }