Парсинг PCAPNG с пользовательскими пакетами (как проверить вспомогательные данные пакетов для UnknowLinkType)

Я пытаюсь проанализировать файл 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!
   }

}

Но этот код выдает ошибку: undefined Layers.LinkTypeUnknown

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

Итак, как я могу проверить вспомогательные данные для LinkTypeUnknown или значение 148? Или, пожалуйста, сообщите мне другой способ распознавания этих пользовательских пакетов.

0 ответов

Другие вопросы по тегам