J'adorerais qu'il y ait un seul outil en ligne de commande pour renifler les paquets d'une seule commande sous Linux. quelque chose comme sniff dumpfile command
pour que vous puissiez simplement exécuter la commande que vous souhaitez renifler les paquets dans le terminal et obtenir un vidage des paquets ailleurs.
Je voudrais vider / enregistrer / voir uniquement le trafic réseau de la seule commande que j'entre, pas tout le trafic TCP sur mon interface réseau unique. Donc, si j'étais connecté à mon ordinateur et que IRC fonctionnait en arrière-plan, et je l'ai fait sniff somefile wget http://www.google.com
, je voudrais voir tout le trafic réseau que la commande wget a fait pour télécharger http://www.google.com . Je ne veux pas que 'somefile' ait le trafic du réseau IRC source de confusion.
Il existe de nombreuses commandes linux / unix qui acceptent une commande différente et font quelque chose de différent. Depuis sudo
(exécuter en tant que superutilisateur), nice
changez le niveau agréable, trickle
(limitez la bande passante d'une commande)
Réponses:
Il n'y en a pas que je sache, mais en théorie, il ne devrait pas être difficile d'obtenir quelque chose de similaire. Strace peut être utilisé pour intercepter les appels système en réseau.
Cela vous donnera des informations sur les données envoyées entre le noyau et le processus. La sortie de strace n'est pas exactement ce que vous souhaitez. Cependant, strace utilise l'appel système ptrace pour intercepter les appels système. Il pourrait être possible d'écrire un programme pour sortir les données un peu plus utilement.
Alternativement, vous pouvez également intercepter les jolis syscalls utiles de socket, bind et listen. Il peut être possible d'écrire un petit programme qui utilise ptrace sur ces appels et libpcap pour changer dynamiquement le filtre de capture chaque fois qu'un nouveau socket est ouvert.
la source
Tracedump
Téléchargez et description ici: http://mutrics.iitis.pl/tracedump
la source
Essayez Wireshark - la commande sera
tshark
Ou, voulez-vous vraiment juste LSOF?
Je ne pense pas qu'il existe un outil qui continuera à filtrer dynamiquement toutes les communications associées à un processus. Cependant, vous pouvez essayer de suivre les communications du processus avec des outils comme
lsof
et une fois que vous avez un bon filtre qui peut isoler la communication de ce processus de tout autre trafic en cours d'exécution sur votre système, vous pouvez obtenir la capture correcte.Par exemple, avec
wget
généralement l'adresse IP de destination est distincte du trafic lié aux autres processus. Même si vous prenez quelque chose commeskype
la plage de ports de destination est généralement fixée pour une instance.C'est un peu comme le principe d'incertitude. Vous pouvez généralement savoir ce qui passe par un ensemble de voies de communication (avec un filtrage de renifleur sur un groupe de flux identifié), ou où différents liens de communication sont établis (avec lsof).
J'aimerais vraiment savoir si les deux peuvent être faites pour une application. Je pense que cela devrait être faisable. Mais, je n'ai encore vu aucun outil faire cela.
la source
Apprenez à utiliser des expressions de filtre.
Bien que cela ne fasse pas les trucs fantaisistes que vous demandez.
Il vous permettra de supprimer presque tous les "trucs déroutants comme IRC" de la capture.
De plus, il est très utile de connaître la syntaxe du filtre pour une référence rapide à l'avenir.
la source
Spécifiquement pour un navigateur Web / une page Web, quelque chose comme le plug-in Firebug pour Firefox peut vous donner certaines des informations que vous recherchez: http://getfirebug.com/net.html
Pour les applications plus générales, vous devrez peut-être utiliser netstat pour identifier les ports utilisés par l'application, puis Wireshark / tshark / dtrace avec un filtre pour capturer uniquement ce trafic. Pas la réponse à une ligne que vous cherchiez cependant ...
la source
Une idée, essayez VMWare
-configurer un vm
-configurer ce vm pour utiliser une interface particulière
-sniff sur cette interface à partir de l'hôte (c'est comme un homme dans l'attaque du milieu)
Si vous isolez les applications réseau qui s'exécutent sur ce VM, vous pourriez avoir votre réponse
Une solution plus idéale, je suppose, est de faire ce que VMWare fait en termes de façon dont il spécifie comment il choisit une interface pour parler. Je pense que sa magie vient des modules du noyau qu'il utilise, dans ce cas, probablement le module du noyau vmnet.
À ma connaissance, les applications ne savent pas de quelle interface elles parlent et je pense que c'est par conception; ils ne devraient pas avoir à se soucier de telles choses.
De plus,
Peut-être qu'un programme existe déjà, je ne sais pas. Mais si l'un a été écrit, vous pouvez l'appeler nettrace (par exemple) et l'utilisation pourrait être comme
interface du programme nettrace
puis renifler l'interface qu'il utilise et ajouter des routes (peut-être qu'il le fait automatiquement) à votre interface réelle
la source
En supposant que vous êtes la seule personne sur la boîte à essayer de se connecter à Google à l'époque, je pense que quelque chose comme ça devrait faire l'affaire:
tcpdump -w <outfile> -i <interface> tcp dst host www.google.com and dst port 80
Si vous n'êtes pas la seule connexion qui tente de se connecter à Google sur la boîte, alors si vous pouvez identifier l'IP / port à partir duquel vous vous connectez, vous pouvez également spécifier le port src / ip src.
L'identification du port src peut être un problème à moins que vous ne puissiez le spécifier sur le client que vous utilisez. Je ne sais pas si tu peux avec wget.
Je soupçonne fortement que vous pouvez spécifier les ports src et dst avec
netcat
donc si c'était vraiment google qui vous intéressait, vous pourriez faire votre GET (manuellement) via netcat.Bien sûr, la page de manuel vous donnera des détails
la source
La page de manuel tcpdump et de nombreux sites Web fournissent des exemples détaillés de filtres, et il existe même quelques référentiels en ligne d'expressions de filtre tcpdump. Il devrait être capable de faire presque tout ce dont vous pouvez rêver, en supposant que vous savez quelque chose sur le trafic réseau (source, destination, ports, protocoles, etc.) au-delà du programme qui le génère.
Si vous travaillez sur un serveur ou un boîtier sans tête, vous pouvez toujours demander à tcpdump d'écrire un fichier de vidage puis de l'ouvrir dans Wireshark sur votre poste de travail et d'obtenir un filtrage avancé et une interface graphique.
la source
Peut-être que ce script fera ce que vous voulez avec les modifications appropriées à la commande tshark:
Lisez le fichier de vidage plus tard:
la source
Dtrace devrait permettre cela, bien que je ne sache pas encore s'il est tout à fait arrivé à Linux.
la source