使用自定义数据包解析PCAPNG(如何检查UnknowLinkType的数据包辅助数据)

时间:2019-02-14 08:23:42

标签: go wireshark pcap gopacket pcap-ng

我正在尝试使用gopacket包解析pcapng文件。它运作良好,但有时我会遇到自定义(已修改)数据包,因此我需要对其进行检测。

我肯定知道此自定义数据包的封装类型为 148 ,wireshark或gopacket库无法识别。这是数据包的示例:

Custom packet in Wireshark

当我尝试使用gopacket分析pcapng文件时,可以检查来自packet.Metadata()的数据包AncillaryData的LinkTypeEthernet或其他类型。 但是对于自定义数据包,packet.Metadata()。AncillaryData [0]返回LinkTypeUnknow。

这是代码示例:

f, err := os.Open("sample.pcapng")
if err != nil {
    return err
}
defer f.Close()

r, err := pcapgo.NewNgReader(f, pcapgo.DefaultNgReaderOptions)
if err != nil {
    return err
}

packetSource := gopacket.NewPacketSource(r, layers.LayerTypeEthernet)
for packet := range packetSource.Packets() {

   if packet.Metadata().AncillaryData[0] == layers.LinkTypeEthernet {
     // It works!
   }

}

但是此代码引发错误:未定义的图层。LinkTypeUnknown

if packet.Metadata().AncillaryData[0] == layers.LinkTypeUnknown {
    // Doesn't work
}

那么,如何检查辅助数据的LinkTypeUnknown或值148?或者,请告诉我另一种识别此自定义数据包的方法。

0 个答案:

没有答案