Я пытаюсь проанализировать файл pcapng с пакетом gopacket.Это работает хорошо, но иногда я встречаю пользовательские (измененные) пакеты, и мне нужно их обнаружить.
Я точно знаю, что эти пользовательские пакеты имеют тип инкапсуляции 148 , который не может бытьраспознается библиотекой Wireshark или Gopacket.Вот пример пакета:
Пользовательский пакет в Wireshark
Когда я пытаюсь проанализировать файл pcapng с помощью gopacket, я могу проверить пакет AncillaryData из packet.Metadata() для 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?Или, пожалуйста, сообщите мне другой способ распознавания этих пользовательских пакетов.