Example #1
0
        internal PpiPacket(Frame parentFrame, int packetStartIndex, int packetEndIndex)
            : base(parentFrame, packetStartIndex, packetEndIndex, "PPI")
        {
            this.ppiLength = Utils.ByteConverter.ToUInt16(parentFrame.Data, packetStartIndex + 2, true);
            if (!this.ParentFrame.QuickParse)
            {
                base.Attributes.Add("Length", "" + ppiLength);
            }
            uint dataLinkTypeUInt = Utils.ByteConverter.ToUInt32(parentFrame.Data, packetStartIndex + 4, 4, true);

            this.dataLinkType = (PcapFileHandler.PcapFrame.DataLinkTypeEnum)dataLinkTypeUInt;
            if (!this.ParentFrame.QuickParse)
            {
                base.Attributes.Add("Data Link Type", dataLinkType.ToString());
            }
        }
Example #2
0
 public static bool TryGetPacket(out Packets.AbstractPacket packet, PcapFileHandler.PcapFrame.DataLinkTypeEnum dataLinkType, Frame parentFrame, int startIndex, int endIndex)
 {
     return(TryGetPacket(out packet, GetPacketType(dataLinkType), parentFrame, startIndex, endIndex));
 }
Example #3
0
        public static System.Type GetPacketType(PcapFileHandler.PcapFrame.DataLinkTypeEnum dataLinkType)
        {
            Type packetType = typeof(Packets.Ethernet2Packet);//use Ethernet as default



            if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_ETHERNET)
            {
                packetType = typeof(Packets.Ethernet2Packet);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_IEEE_802_11 || dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_IEEE_802_11_WLAN_AVS)
            {
                packetType = typeof(Packets.IEEE_802_11Packet);
            }
            //802.11 after a RadioTap header
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_IEEE_802_11_WLAN_RADIOTAP)
            {
                packetType = typeof(Packets.IEEE_802_11RadiotapPacket);
            }
            //Or raw IP?
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_RAW_IP ||
                     dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_RAW_IP_2 ||
                     dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_RAW_IP_3 ||
                     dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_RAW_IP4)
            {
                packetType = typeof(Packets.IPv4Packet);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_RAW_IP6)
            {
                packetType = typeof(Packets.IPv6Packet);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_CHDLC)
            {
                packetType = typeof(Packets.CiscoHdlcPacket);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_SLL)
            {
                packetType = typeof(Packets.LinuxCookedCapture);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_PRISM_HEADER)
            {
                packetType = typeof(Packets.PrismCaptureHeaderPacket);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_PPI)
            {
                packetType = typeof(Packets.PpiPacket);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_PPP)
            {
                packetType = typeof(Packets.PointToPointPacket);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_NULL)
            {
                packetType = typeof(Packets.NullLoopbackPacket);
            }
            else if (dataLinkType == PcapFileHandler.PcapFrame.DataLinkTypeEnum.WTAP_ENCAP_ERF)
            {
                packetType = typeof(Packets.ErfFrame);
            }
            return(packetType);
        }