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()); } }
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)); }
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); }