Ich würde es lieben, wenn es ein einziges Befehlszeilentool zum Paket-Sniffing eines einzelnen Befehls unter Linux gäbe. So etwas wie sniff dumpfile command
, dass Sie einfach den Befehl ausführen können, den Sie im Terminal paketieren möchten, und einen Speicherauszug der Pakete an einer anderen Stelle erhalten möchten.
Ich möchte nur den Netzwerkverkehr des einzelnen Befehls, den ich eingebe, sichern / speichern / sehen, nicht den gesamten TCP-Verkehr auf meiner einzelnen Netzwerkschnittstelle. Wenn ich also an meinem Computer angemeldet war und IRC im Hintergrund ausgeführt wurde und ich dies tat sniff somefile wget http://www.google.com
, möchte ich den gesamten Netzwerkverkehr sehen, den der Befehl wget zum Herunterladen von http://www.google.com ausgeführt hat . Ich möchte nicht, dass 'somefile' den IRC-Netzwerkverkehr verwirrt.
Es gibt viele Linux / Unix-Befehle, die einen anderen Befehl akzeptieren und etwas anderes tun. Ändern Sie von sudo
(als Superuser ausführen) nice
die nette Stufe trickle
(begrenzen Sie die Bandbreite eines Befehls).
Antworten:
Es gibt keine, von denen ich weiß, aber theoretisch sollte es nicht schwer sein, etwas Ähnliches zu bekommen. Strace kann zum Abfangen von Netzwerksystemaufrufen verwendet werden.
Dadurch erhalten Sie Informationen zu den Daten, die zwischen dem Kernel und dem Prozess gesendet werden. Die Ausgabe von strace ist nicht genau das, was Sie wollen. Strace verwendet jedoch den ptrace-Systemaufruf, um Systemaufrufe abzufangen. Es könnte möglich sein, ein Programm zu schreiben, um die Daten etwas nützlicher auszugeben.
Alternativ können Sie auch den nützlichen Socket abfangen, Syscalls binden und abhören. Möglicherweise kann ein kleines Programm geschrieben werden, das ptrace für diese Aufrufe und libpcap verwendet, um den Erfassungsfilter bei jedem Öffnen eines neuen Sockets dynamisch zu ändern.
quelle
Tracedump
Download und Beschreibung hier: http://mutrics.iitis.pl/tracedump
quelle
Versuchen Sie es mit Wireshark - der Befehl lautet
tshark
Oder wollen Sie wirklich nur LSOF?
Ich glaube nicht, dass es ein Tool gibt, das die gesamte mit einem Prozess verbundene Kommunikation dynamisch filtert. Sie können jedoch versuchen, die Prozesskommunikation mit Tools wie zu verfolgen.
lsof
Wenn Sie einen guten Filter haben, der die Kommunikation dieses Prozesses von allen anderen auf Ihrem System ausgeführten Datenverkehr isoliert, können Sie die richtige Erfassung erhalten.Beispielsweise unterscheidet sich
wget
die Ziel-IP-Adresse normalerweise von anderem prozessbezogenem Datenverkehr. Selbst wenn Sie so etwas wieskype
den Zielportbereich nehmen, ist dieser normalerweise für eine Instanz festgelegt.Dies ist ein bisschen wie das Unsicherheitsprinzip. Normalerweise können Sie wissen, was durch eine Reihe von Kommunikationspfaden geht (mit einer Sniffer-Filterung für identifizierte Gruppen von Flüssen) oder wo verschiedene Kommunikationsverbindungen hergestellt werden (mit lsof).
Ich würde wirklich gerne wissen, ob beides für eine Bewerbung möglich ist. Ich denke es sollte machbar sein. Aber ich habe noch kein Tool gesehen, das das macht.
quelle
Erfahren Sie, wie Sie Filterausdrücke verwenden.
Dies führt zwar nicht zu den ausgefallenen Spuren, nach denen Sie fragen.
Damit können Sie fast alle "verwirrenden Dinge wie IRC" aus der Aufnahme entfernen.
Darüber hinaus ist es sehr nützlich, die Filtersyntax zu kennen, um in Zukunft schnell nachschlagen zu können.
quelle
Speziell für einen Webbrowser / eine Webseite enthält das Firebug-Plug-In für Firefox möglicherweise einige der gesuchten Informationen: http://getfirebug.com/net.html
Für allgemeinere Anwendungen müssen Sie möglicherweise netstat verwenden, um die von der Anwendung verwendeten Ports zu identifizieren, und dann Wireshark / tshark / dtrace mit einem Filter, um genau diesen Datenverkehr zu erfassen. Nicht die einzeilige Antwort, nach der Sie gesucht haben ...
quelle
Eine Idee, versuchen Sie VMWare
-setup a vm
-configure, dass vm eine bestimmte Schnittstelle verwenden
-sniff auf dieser Schnittstelle vom Host aus (es ist wie ein Mann in der Mitte Angriff)
Wenn Sie isolieren, welche Netzwerkanwendungen auf dieser VM ausgeführt werden, haben Sie möglicherweise Ihre Antwort
Ich nehme an, eine idealere Lösung besteht darin, das zu tun, was VMWare in Bezug darauf tut, wie es eine Schnittstelle für die Kommunikation auswählt. Ich denke, seine Magie kommt von den Kernelmodulen, die es verwendet, in diesem Fall wahrscheinlich vmnet Kernelmodul.
Meines Wissens wissen Anwendungen nicht, über welche Schnittstelle sie sprechen, und ich glaube, dass dies beabsichtigt ist. Sie sollten sich über solche Dinge keine Sorgen machen müssen.
Außerdem existiert
vielleicht schon ein Programm, ich weiß es nicht. Aber wenn einer geschrieben wurde, könnte man ihn (zum Beispiel) nettrace nennen und die Verwendung könnte so sein
Nettrace-Programmschnittstelle
Schnüffeln Sie dann an der verwendeten Schnittstelle und fügen Sie Ihrer realen Schnittstelle Routen hinzu (möglicherweise automatisch)
quelle
Angenommen, Sie sind die einzige Person auf der Box, die zu diesem Zeitpunkt versucht, eine Verbindung zu Google herzustellen, würde ich denken, dass so etwas den Trick machen sollte:
tcpdump -w <outfile> -i <interface> tcp dst host www.google.com and dst port 80
Wenn Sie nicht die einzige Verbindung sind, die versucht, eine Verbindung zu Google auf der Box herzustellen, können Sie auch den src-Port / die src-IP angeben, wenn Sie die IP / den Port identifizieren, von dem aus Sie eine Verbindung herstellen.
Das Identifizieren des src-Ports kann ein Problem sein, es sei denn, Sie können ihn auf dem von Ihnen verwendeten Client angeben. Ich bin mir nicht sicher, ob du mit wget kannst.
Ich vermute sehr, dass Sie sowohl src- als auch dst-Ports mit angeben können.
netcat
Wenn es also wirklich Google war, an dem Sie interessiert waren, können Sie Ihr GET (manuell) über netcat durchführen.Natürlich gibt Ihnen die Manpage Einzelheiten
quelle
Die tcpdump-Manpage und viele Websites enthalten ausführliche Beispiele für Filter, und es gibt sogar einige Online-Repositorys für tcpdump-Filterausdrücke. Es sollte in der Lage sein, fast alles zu tun, wovon Sie träumen können, vorausgesetzt, Sie wissen etwas über den Netzwerkverkehr (Quelle, Ziel, Ports, Protokolle usw.), das über das Programm hinausgeht, das ihn generiert.
Wenn Sie an einem Server oder einer Headless-Box arbeiten, können Sie tcpdump jederzeit eine Dump-Datei schreiben lassen und diese dann in Wireshark auf Ihrer Workstation öffnen, um erweiterte Filterung und eine grafische Oberfläche zu erhalten.
quelle
Vielleicht macht dieses Skript mit den entsprechenden Änderungen am Befehl tshark das, was Sie wollen:
Lesen Sie die Dump-Datei später:
quelle
Dtrace sollte dies zulassen, obwohl ich nicht weiß, ob es noch ganz in Linux geschafft ist.
quelle