So programmieren Sie tcpdump, um nur Pakete und nichts anderes zu erfassen

816
Sam

Ich entwickle ein Programm, in dem eine .pcap-Datei eine Eingabe sein wird. Wenn ich jedoch tcpdump -w someFile.pcap ausführt, erfasst die .pcap-Datei in Terminal zusätzliche Daten wie Zeitstempel, Mikrosekunden, Länge des Frames usw.
Diese zusätzlichen Daten behindern mein Programm und ich wollte wissen, ob es einen Weg gibt Dabei würde tcpdump rohe Pakete erfassen und sonst nichts.
So sollte zum Beispiel das erste Datenbyte im .pcap "Zieladresse" des Ethernet-Headers sein und nicht irgendein Zeitstempel.
Vielen Dank!

0
`-t` entfernt die Zeitstempel für die Erfassung. MarkoPolo vor 7 Jahren 0

1 Antwort auf die Frage

1
Christopher Maynard

Es klingt, als ob Sie nur an den rohen Bytes interessiert sind, aus denen jedes Paket besteht. Angenommen, Sie könnten so etwas versuchen:

tcpdump -r someFile.pcap -xx | grep -P "^\t0x" 

Wie Sie der tcpdumpManpage entnehmen können, wird dies dazu führen tcpdump, dass die Capture-Datei gelesen wird, und "zusätzlich zum Drucken der Header jedes Pakets die Daten jedes Pakets, einschließlich des Link-Level-Headers, in Hex". Durch das Paspeln der Ausgabe an grepwird die Summenzeile entfernt. Vielleicht gibt es eine Möglichkeit, die Übersichtszeile überhaupt tcpdump nicht zu drucken, aber wenn ja, konnte ich sie nicht finden. In jedem Fall müssen Sie an diesem Punkt nur die Hex-Ausgabe verarbeiten.

Sie können dies auch ein bisschen leichter erreichen, denke ich, indem Sie tsharkstatt tcpdump. Zum Beispiel:

tshark -r icmp.pcap -x 

Die Ausgabeformate von tcpdumpund tsharkunterscheiden sich darin, wie die Hex-Werte angezeigt und gruppiert werden und ob die ASCII-Darstellung der Hex-Bytes nach den Hex-Werten vorhanden ist oder nicht. Sie müssen also wahrscheinlich experimentieren, um zu sehen, welches Format Ihnen besser gefällt oder ist einfacher für Ihr Programm zu analysieren.