Pcap Datei-Wiedergabe basierend auf der Paket-timestamp mit scapy
Ich habe eine pcap-Datei (~90M), und ich möchte, um replay-Datei. Ich kam über scapy und es bietet die Möglichkeit, Lesen Sie die pcap-Datei und replay. Ich habe versucht folgenden zwei Arten zur Wiedergabe der Pakete
sendp(rdpcap(<filename>)
und
pkts = PcapReader(<filename>);
for pkt in pkts:
sendp(pkt)
Erste Spiel mir Speicherfehler, der Speicher Verbrauch von python-Prozess ging bis zu 3 gig und schließlich starb. Aber zweite option funktioniert für mich, weil es nicht Lesen die ganze Datei in den Speicher. Ich habe folgende drei Fragen zu stellen
- Ist 90M pcap-Datei ist zu groß für scapy wiedergeben?
- Wann immer wir verwenden, tcpdump/wireshark, jedes Paket hat seine Zeitstempel zugeordnet. Übernehmen Paket 1 kam zum Zeitpunkt T und Paket 2 kam zum Zeitpunkt T+10, scapy replay die Pakete in ähnlicher Weise, erste Paket zur Zeit T und die zweite bei T+10? oder es wird nur senden Sie in der Schleife, ich denke, später ist der Fall mit PcapReader.
- Wenn die Antwort Nein ist für obige Frage ( seine nur die Wiedergabe in Schleife, ohne Rücksicht auf die Paket-inter arrival time), haben wir keine anderen python-Bibliothek, die diesen job für mich? Auch python ist nicht die Einschränkung für mich.
InformationsquelleAutor Anil Vishnoi | 2013-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Beantwortung Ihrer ersten Frage, nun, es klingt wie Sie die Antwort selbst! Versuchen Sie, die erste option wieder auf einem anderen pcap-Datei, die 40-50 MB statt und sehen, ob diese Fehler aus. So kannst du zumindest überprüfen, es ist die Datei zu groß für Ihr system in Kombination mit Scapy zu behandeln (nicht genügend RAM in Ihrem system zu behandeln, wie Scapy läuft seine algorithmen als es gebaut wurde, Griff ein paar Pakete auf ein mal, nicht ein 90 MB pcap-Datei) oder wenn es nur so etwas in den code.
Zur Beantwortung Ihrer zweiten Frage, die auf der Grundlage von Lektüre ist, die ich getan habe auf Scapy in den letzten Wochen glaube ich stark, dass dies ein ja. Aber, ich kenne keine Quellen aus der Spitze von meinem Kopf, um wieder bis diese überprüfung.
Ninja-edit - ich sah dies auf einer anderen StackOverflow-Frage - Geben Sie Zeitstempel für jedes Paket im Scapy?
Das ist zwar für ein einzelnes Paket - wenn jedes Paket einen Zeitstempel verfügt, innerhalb von Scapy dann Stelle ich mir vor, es wäre das gleiche für jedes Paket in einem großen pcap-Datei, die Sie Lesen. Auf diese Weise, wenn Sie die Wiedergabe der Pakete sollte es gehen in der gleichen Reihenfolge.
Einer Menge von gebildeten Vermutungen gehen in diese Antwort, hoffe es hilft dir aber!
InformationsquelleAutor Cerberus136
Nicht. Es sollte nicht 3GBs Speicher. Ich Häufig öffnen größer pcap-Dateien auch auf Rechnern mit nur 2GBs Speicher. Nur versuchen Sie dabei
pkts = rdpcap(<filename>)
zu sehen, wie viel Speicher das braucht, dann gehen von dort aus. Wenn das problem weiterhin besteht, möchten Sie vielleicht zu versuchen, verschiedene Versionen von scapy.Nein,
sendp()
tut dies nicht standardmäßig. Sie könnten versuchen, die Echtzeit-parameter (Typhelp(sendp)
auf der Konsole). Aber insgesamt, basierend auf meiner Erfahrung, scapy ist nicht so gut zu halten, genaues timing.tcpreplay (linux-CLI-tool) ist, was ich verwenden. Es hat viele Optionen, einschließlich der verschiedenen Zeit-und Datumsanzeige-Mechanismen.
InformationsquelleAutor wookie919