我正在尝试使用gopacket包解析pcapng文件。它运作良好,但有时我会遇到自定义(已修改)数据包,因此我需要对其进行检测。
我肯定知道此自定义数据包的封装类型为 148 ,wireshark或gopacket库无法识别。这是数据包的示例:
当我尝试使用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?或者,请告诉我另一种识别此自定义数据包的方法。