2017-04-16 4 views
0

Ich versuche, pcap-Filter nur zum Filtern von ARP-Antworten zu erstellen. In Wireshark verwende ichc/C++ pcap-Filterausdruck für ARP-Antwortpakete

arp.opcode==2 

und es funktioniert perfekt. Aber wenn ich es in pcap_compile-Funktion verwende, löst es einen Ausnahme-Syntaxfehler aus. Ich habe auch diese Varianten versucht:

arp.opcode = 2 
arp.opcode 2 
arp opcode 2 
arp.reply 
arp reply 

und nichts scheint zu funktionieren. Ich habe versucht, es zu googeln, aber keinen Erfolg. Ist es überhaupt möglich, diese spezifischen Pakete zu filtern?

+2

Verwenden Sie entweder C oder C++. Markieren Sie den Post nicht mit beiden Tags. Fügen Sie auch den Code hinzu, ohne den wir nicht helfen können. –

+0

pcap-Filter sind nicht so ausgefeilt wie die Ausdrücke, die Wireshark unterstützt. Dokumentation bei z.B. https://linux.die.net/man/7/pcap-filter. Es könnte besser sein, nur nach ARP-Verkehr zu filtern und dann nach Antworten im Code zu suchen. Andernfalls müssen Sie das arp-Paketformat auf Byte-Ebene recherchieren. –

+0

@AlanStokes Ja, dachte ich. Ich wollte es einfacher machen, aber ich denke, es kann nicht getan werden. Danke für die Antwort! –

Antwort

0

Ich vermute, dies sollte auf der Grundlage der Paketstruktur von Wikipedia arbeiten:

arp [6:2] = 2 

, die auch von dieser Antwort vorgeschlagen hat: https://stackoverflow.com/a/40199540/212870

(Es ist einfacher zu sehen, wenn Sie die Antwort herauszufinden, leider.)