Ich arbeite auf die Erkennung von NTP mit Golang und das Gopacket-Paket. Ich benutze eine pcap, die ich von wireshark heruntergeladen habe. Ich habe den folgenden Code bekam PCAPs zum Öffnen und Umgang mit ihnen:NTP-Erkennung mit Golang, Nutzlast kommt leer
func (d *DPI) readPCAP(pcapFile string) (*pcap.Handle, error) {
// Open file instead of device
handle, err := pcap.OpenOffline(pcapFile)
if err != nil {
return nil, err
}
return handle, nil
}
Und das ist der Code, den ich
func TestNTP(t *testing.T) {
dpi := newDPI()
handle, _ := dpi.readPCAP("data/pcap/NTP_sync.pcap")
var filter = "udp and port 123"
dpi.setFilter(handle,filter)
ntpPackets := 0
for packet := range dpi.getPacketChan(handle) {
fmt.Println("stuff: ",packet.ApplicationLayer().Payload())
if dpi.detectNTP(packet) == 1 {
ntpPackets++
} else {
fmt.Println(" Output : ", dpi.detectNTP(packet))
}
}
fmt.Println(" Total ntp packets ", ntpPackets)
}
Der Payload-Gehalt in der ApplicationLayer die eigentliche Erkennung auszuführen ich schreibe kommt leer und ich kann nicht herausfinden, warum das passiert.
Beispiel-Screenshot, wenn ich die ApplicationLayer selbst ausdrucken:
https://i.gyazo.com/6257f298a09e7403bbc0be5b8ac84ccc.png
Beispiel-Screenshot, wenn ich die Payload ausdrucken: https://i.gyazo.com/7f4abd449025f5d65160fdbecffa8181.png
könnte etwas Hilfe herauszufinden, verwenden, was ich falsch mache . Danke!
Ich bemerke, dass Sie den von ReadPCAP zurückgegebenen möglichen Fehler ignorieren. Bitte überdenken Sie das. So viele Probleme könnten vermieden werden, wenn Menschen ihre Fehlerrückmeldungen behandeln würden. –
@ZanLynx Ja, ich muss das tun. Dies war nur zu Testzwecken. Danke für den Tipp! –
Bitte geben Sie die Textausgabe als Text anstelle eines Bildes an (ich nehme an, dass Sie deshalb einen Downvote erhalten haben). –