J'essaie de résoudre un problème où je n'ai que tcpdump disponible sur une appliance. Je souhaite utiliser tcpdump pour filtrer le trafic Web et n'afficher que le trafic contenant certaines chaînes.
Je fais ce qui suit:
tcpdump -nei eth0 -X | grep "something interesting"
La sortie est une hexview avec 16 octets de ligne pr. Je ne peux pas saisir ces données, car les données sont présentées sur plusieurs lignes.
Existe-t-il un moyen pour tcpdump de présenter les données capturées sur une seule ligne? Cela permettrait d'utiliser grep pour trouver des paquets intéressants.
linux
networking
tcpdump
Chien manger chat monde
la source
la source
tcpdump -nei eth0 -X | grep --line-buffered "something interesting"
fera, pour des raisons non identifiées, ma réponse de travail valide a été supprimée.Réponses:
Pour ceux comme vous qui ne peuvent pas utiliser
ngrep
, voici comment utiliserawk
pour rendre latcpdump
sortie du contenu des paquets plus agréable.D'abord quelques exemples de résultats fournis par
tcpdump -x
, afin de présenter la tâche à venir:Et c'est le script copier-coller que
awk
vous pouvez diriger la sortie versafin d'obtenir la sortie suivante, grepable
Voici une version commentée du script ci-dessus:
la source
Depuis la
tcpdump
page de manuel:Assurez-vous que vous utilisez également l'
-s 0
option pour vous assurer que le paquet entier est affiché.la source
Vous voudrez peut-être jeter un œil à la
ngrep
commande:ngrep -W single -d eth0 'regex to match' 'port 80'
Où:
-W single
spécifie le formatage sur une seule ligneregex to match
signifie pour vider uniquement les paquets contenant certaines chaînes.'port 80'
est un filtre pcap pour renifler uniquement les paquets depuis ou vers le port 80la source
La raison pour laquelle votre sortie est hexadécimale est le
-X
drapeau. Essayer:Vous obtiendrez une sortie lisible lue directement sur le cli.
la source
Je n'ai pas pu obtenir le script awk pour faire ce que je voulais et ngrep ne fonctionnerait pas sur un Ethernet via USB, j'ai donc écrit un petit programme C pour rejoindre les lignes de sortie par tcpdump afin qu'elles soient grepables. C'est à https://gitlab.com/dargaud/TcpDumpJoin
la source