示例#1
0
        protected IEnumerable <Frame> GetFramesFromPcapAndDefragment(String pcapFileName)
        {
            var ipv4DefragmentationEngine =
                new Ipv4DefragmentationEngine(this._services.GetService <ILoggerFactory>().CreateLogger <Ipv4DefragmentationEngine>());
            var frames = new List <Frame>();

            foreach (var(packet, timestampTicks) in this.GetPacketsFromPcap(pcapFileName))
            {
                Frame frame;
                if (!(packet.PayloadPacket is IPPacket ipPacket))
                {
                    continue;
                }

                if (ipPacket is IPv4Packet ipv4Packet && Ipv4Helpers.Ipv4PacketIsFragmented(ipv4Packet))
                {
                    var(isDefragmentationSuccessful, defragmentedIpv4Packet, fragments) =
                        ipv4DefragmentationEngine.TryDefragmentFragments(FrameFactory.CreateFromIpPacket(ipv4Packet, timestampTicks));
                    if (!isDefragmentationSuccessful)
                    {
                        continue;
                    }

                    frame = FrameFactory.CreateFromDefragmentedIpPacket(defragmentedIpv4Packet, fragments);
                }
示例#2
0
        private Boolean TryDefragmentFrame(ref Frame frame)
        {
            var(isDefragmentationSuccessful, defragmentedIpv4Packet, fragments) =
                this._ipv4DefragmentationEngine.TryDefragmentFragments(frame);
            if (!isDefragmentationSuccessful)
            {
                return(false);
            }

            frame = FrameFactory.CreateFromDefragmentedIpPacket(defragmentedIpv4Packet, fragments);
            return(true);
        }
        private IEnumerable <Frame> GetFramesFromPcap(Uri pcapUri)
        {
            var ipv4DefragmentationEngine = new Ipv4DefragmentationEngine(this._loggerFactory.CreateLogger <Ipv4DefragmentationEngine>());

            foreach (var(packet, timestampTicks) in this.GetPacketsFromPcap(pcapUri))
            {
                Frame frame;
                if (!(packet.PayloadPacket is IPPacket ipPacket))
                {
                    continue;
                }

                if (ipPacket is IPv4Packet ipv4Packet && Ipv4Helpers.Ipv4PacketIsFragmented(ipv4Packet))
                {
                    var(isDefragmentationSuccessful, defragmentedIpv4Packet, fragments) =
                        ipv4DefragmentationEngine.TryDefragmentFragments(FrameFactory.CreateFromIpPacket(ipv4Packet, timestampTicks));
                    if (!isDefragmentationSuccessful)
                    {
                        continue;
                    }

                    frame = FrameFactory.CreateFromDefragmentedIpPacket(defragmentedIpv4Packet, fragments);
                }