парсинг PCAPNG с пользовательскими пакетами (как проверить вспомогательные данные пакетов для UnknowLinkType) - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь проанализировать файл 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?Или, пожалуйста, сообщите мне другой способ распознавания этих пользовательских пакетов.

...