
Ich versuche, die PCAP-Datei auf den HTTP-Server zurückzuspielen. Zuvor versuche ich manuell zu überprüfen, ob ich tcpreplay richtig verwende.
Ich habe begonnen netcat -l 12345
, auf einem bestimmten Port zu lauschen. Nennen wir ihn „Server“. Auf einem anderen Rechner habe ich ausgeführt, tcpdump
um den gesamten Datenverkehr mit Ziel für den bestimmten Port in der Datei zu erfassen dummy.pcap
. Danach führe ich Netcat auf dem Client-Rechner aus, verbinde mich mit dem „Server“ und sende mehrere Nachrichten. Ich habe das resultierende PCAP überprüft tshark
und es zeigt, dass Pakete erfasst wurden.
Ich habe Netcat auf dem Server erneut gestartet und auf dem Client habe ich tcpreplay gestartet:
tcpreplay -d 5 -i eth0 -t dummy.pcap
Aber auf der Netcat-Konsole auf dem Server wird nichts angezeigt. Ich habe versucht, tcpdump auf dem „Server“ auszuführen, und es zeigt, dass Pakete empfangen werden.
Warum werden Pakete nicht in der Netcat-Konsole angezeigt?
Antwort1
TCPreplay gibt den Datenverkehr auf einem Server wieder, „kommuniziert“ jedoch aufgrund der Art des TCP-Protokolls nicht wirklich mit Servern. Ihr Server empfängt also im Grunde TCP-Pakete, stellt jedoch nie eine tatsächliche TCP-Verbindung her, da die Wiedergabe den richtigen Handshake nicht durchführt. Aus diesem Grund werden in Ihrem Netcat keine TCP-Sitzungen angezeigt.
Meiner Erfahrung nach ist diese Art von TCPdump nur für Analysen nützlich. Wenn Sie eine Befehls-/Datenfolge reproduzieren möchten, müssen Sie ein spezielles Tool für Ihr Protokoll finden (in meinem Fall musste ich einen benutzerdefinierten Client schreiben).
SehenWie kann ich HTTP-Interaktionen aufzeichnen und wiedergeben?
Von tcpreplayWiki:
Senden von Datenverkehr an einen Server
Problem
Sie verfügen über eine PCAP-Aufzeichnung und möchten den Datenverkehr auf einem anderen Server wiedergeben.
Lösung
Erstens funktioniert dies nur mit ICMP- und UDP-Verkehr. Tcpreplay unterstützt das Senden von TCP-Verkehr an einen Server nicht, da es keine Syn/Ack-Nummern im TCP-Stream synchronisiert.
Das heißt, Sie müssen die Ziel-IP- und MAC-Adressen ändern, damit sie mit denen des Zielservers übereinstimmen. In diesem Fall gehen wir davon aus, dass die Zielserver-IP 10.10.1.1 und seine MAC-Adresse 00:01:02:03:04:05 ist.
Und ihreFAQ:
=== Unterstützt tcpreplay das Senden von Datenverkehr an einen Server? === Wenn Sie mit „Server“ einen Daemon (Unix) oder Dienst (Windows) meinen, der auf einem Port lauscht (ein Web- oder Mailserver wäre ein gängiges Beispiel), dann wahrscheinlich nicht. Das größte Problem ist, dass tcpreplay den Status gängiger Protokolle wie TCP nicht versteht. Das bedeutet, dass es Syn/Acks nicht synchronisieren kann, um gültige TCP-Sitzungen zu erstellen.