protected virtual void OnHttpPacketArrived(HttpPacketArriveEvnetArgs e) { HttpPacketArriveEventHandler handler = OnHttpPacketArrival; if (handler != null) { handler(this, e); } }
/// <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]); } } } } }
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); } } } } } } }
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); } } } } } } }