void ProcessPacket(PacketDotNet.Packet packet) { try { var tcpPacket = packet.Extract <PacketDotNet.TcpPacket>(); var udpPacket = packet.Extract <PacketDotNet.UdpPacket>(); if (udpPacket != null) { var ipPacket = (PacketDotNet.IPPacket)udpPacket.ParentPacket; UdpPacketArived?.Invoke(this, new UdpPacketArivedEventArgs { Packet = new UdpPacket { SourcePort = udpPacket.SourcePort, DestinationPort = udpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = udpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildUdpSessions) { this._udpStreamBuilder.HandlePacket(udpPacket); } _processingPrecentsPredicator.NotifyAboutProcessedData(packet.Bytes.Length); } else if (tcpPacket != null) { var ipPacket = (PacketDotNet.IPPacket)tcpPacket.ParentPacket; // Raise event Tcp packet arived event. TcpPacketArived?.Invoke(this, new TcpPacketArivedEventArgs { Packet = new TcpPacket { SourcePort = tcpPacket.SourcePort, DestinationPort = tcpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = tcpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildTcpSessions) { this._tcpSessionsBuilder.HandlePacket(tcpPacket); } _processingPrecentsPredicator.NotifyAboutProcessedData(packet.Bytes.Length); } } catch (Exception ex) { // TODO: handle or throw this //Console.WriteLine(ex); } }
private void ProcessPacket(object sender, CaptureEventArgs e) { try { var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); var tcpPacket = (PacketDotNet.TcpPacket)packet.Extract(typeof(PacketDotNet.TcpPacket)); if (tcpPacket != null) { var ipPacket = (PacketDotNet.IpPacket)tcpPacket.ParentPacket; // Raise event Tcp packet arived event. TcpPacketArived?.Invoke(this, new TcpPacketArivedEventArgs { Packet = new TcpPacket { SourcePort = tcpPacket.SourcePort, DestinationPort = tcpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = tcpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildTcpSessions) { this._tcpSessionsBuilder.HandlePacket(tcpPacket); } _processingPrecentsPredicator.NotifyAboutProcessedData(packet.Bytes.Length); } } catch (Exception ex) { // TODO: handle or throw this //Console.WriteLine(ex); } }
private void ProcessPacket(PacketDotNet.Packet packet) { try { var tcpPacket = packet.Extract <PacketDotNet.TcpPacket>(); var udpPacket = packet.Extract <PacketDotNet.UdpPacket>(); if (udpPacket != null) { var ipPacket = (PacketDotNet.IPPacket)udpPacket.ParentPacket; UdpPacketArived?.Invoke(this, new UdpPacketArivedEventArgs { Packet = new UdpPacket { SourcePort = udpPacket.SourcePort, DestinationPort = udpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = udpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildUdpSessions) { this._udpStreamBuilder.HandlePacket(udpPacket); } } else if (tcpPacket != null) { var ipPacket = (PacketDotNet.IPPacket)tcpPacket.ParentPacket; // Raise event Tcp packet arived event. TcpPacketArived?.Invoke(this, new TcpPacketArivedEventArgs { Packet = new TcpPacket { SourcePort = tcpPacket.SourcePort, DestinationPort = tcpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = tcpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildTcpSessions) { this._tcpSessionsBuilder.HandlePacket(tcpPacket); _tcpSessionsBuilder.completedSessions.AsParallel().ForAll((session) => { TcpSessionArrived?.Invoke(this, new TcpSessionArivedEventArgs() { TcpSession = session }); _tcpSessionsBuilder.completedSessions.Remove(session); }); } } } catch (Exception ex) { // TODO: handle or throw this //Console.WriteLine(ex); } }