示例#1
0
        protected virtual void OnHttpPacketArrived(HttpPacketArriveEvnetArgs e)
        {
            HttpPacketArriveEventHandler handler = OnHttpPacketArrival;

            if (handler != null)
            {
                handler(this, e);
            }
        }
示例#2
0
文件: Program.cs 项目: hoonkim/hse
        /// <summary>
        /// Event handler for handling HTTP packet capture event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void HttpPacketArriveEvent(object sender, HttpPacketArriveEvnetArgs e)
        {
            HttpPacket packet = e.Packet;

            foreach (KeyValuePair<string, string> pair in packet.Header)
            {
                // Use the packet which contain HTML code.
                if (pair.Key == "Content-Type" && pair.Value == "text/html")
                {
                    // Parsing the content of packet.
                    List<string> texts = parser.parse(packet.Content);

                    if (texts != null)
                    {
                        for (int i = 0; i < texts.Count; i++)
                        {
                            //Console.WriteLine(texts[i]);
                        }
                    }
                }
            }
        }
示例#3
0
        private void OnPacketArrival(object sender, CaptureEventArgs e)
        {
            DateTime time = e.Packet.Timeval.Date;
            int len = e.Packet.Data.Length;

            RawCapture rawCapture = e.Packet;
            Packet packet = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data);

            TcpPacket tcpPacket = (TcpPacket)packet.Extract(typeof(TcpPacket));

            if (tcpPacket != null)
            {
                /// Filtering HTTP Packet using source port and desination port
                if (IsHttpPacket(tcpPacket))
                {
                    if (tcpPacket.Psh && tcpPacket.Ack)
                    {
                        seqNumbers.Enqueue(tcpPacket.AcknowledgmentNumber);
                    }

                    // If arrived packet is the first packet of the Http packet
                    if (IsFirstPacket(tcpPacket))
                    {
                        if (packet.PayloadPacket.PayloadPacket.PayloadData.Length != 0)
                        {
                            try
                            {
                                readyAssembleHttpPacket.Add(new HttpPacket(packet));
                            }
                            catch (ArgumentException exep)
                            {
                                // Debug.WriteLine(exep.Message);
                            }
                        }
                    }
                    else
                    {
                        foreach (HttpPacket element in readyAssembleHttpPacket)
                        {
                            if (element.NextSequenceNumber == tcpPacket.SequenceNumber && !element.IsAssembleEnded)
                            {
                                // Check assembling work is done
                                if(element.AssembleTcpPacket(packet))
                                {
                                    HttpPacketArriveEvnetArgs packetEvent = new HttpPacketArriveEvnetArgs(element);
                                    OnHttpPacketArrived(packetEvent);
                                }
                            }
                        }
                    }
                }
            }
        }
示例#4
0
 protected virtual void OnHttpPacketArrived(HttpPacketArriveEvnetArgs e)
 {
     HttpPacketArriveEventHandler handler = OnHttpPacketArrival;
     if (handler != null)
     {
         handler(this, e);
     }
 }
示例#5
0
        private void OnPacketArrival(object sender, CaptureEventArgs e)
        {
            DateTime time = e.Packet.Timeval.Date;
            int      len  = e.Packet.Data.Length;

            RawCapture rawCapture = e.Packet;
            Packet     packet     = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data);

            TcpPacket tcpPacket = (TcpPacket)packet.Extract(typeof(TcpPacket));

            if (tcpPacket != null)
            {
                /// Filtering HTTP Packet using source port and desination port
                if (IsHttpPacket(tcpPacket))
                {
                    if (tcpPacket.Psh && tcpPacket.Ack)
                    {
                        seqNumbers.Enqueue(tcpPacket.AcknowledgmentNumber);
                    }

                    // If arrived packet is the first packet of the Http packet
                    if (IsFirstPacket(tcpPacket))
                    {
                        if (packet.PayloadPacket.PayloadPacket.PayloadData.Length != 0)
                        {
                            try
                            {
                                if (tcpPacket.DestinationPort == HTTP_PORT || tcpPacket.DestinationPort == HTTPS_PORT)
                                {
                                    HttpPacketArriveEvnetArgs packetEvent = new HttpPacketArriveEvnetArgs(new HttpPacket(packet));
                                    OnHttpPacketArrived(packetEvent);
                                }
                                else
                                {
                                    readyAssembleHttpPacket.Add(new HttpPacket(packet));
                                }
                            }
                            catch (ArgumentException exep)
                            {
                                // Debug.WriteLine(exep.Message);
                            }
                        }
                    }
                    else
                    {
                        foreach (HttpPacket element in readyAssembleHttpPacket)
                        {
                            if (element.NextSequenceNumber == tcpPacket.SequenceNumber && !element.IsAssembleEnded)
                            {
                                // Check assembling work is done
                                if (element.AssembleTcpPacket(packet))
                                {
                                    HttpPacketArriveEvnetArgs packetEvent = new HttpPacketArriveEvnetArgs(element);
                                    OnHttpPacketArrived(packetEvent);
                                }
                            }
                        }
                    }
                }
            }
        }