web-dev-qa-db-fra.com

Comment retourner juste l'en-tête HTTP de TSHARK?

J'utilise Tshark pour renifler mes paquets et je ne suis concerné que par l'en-tête HTTP (de préférence sous la forme son envoyée, mais je vais prendre ce que je peux obtenir).

J'ai essayé d'utiliser:

tshark tcp port 80 or tcp port 443 -V -R "http"

Ce qui m'a donné l'en-tête, mais aussi de contenu (que je ne veux pas comme une grande quantité de poubelles à analyser). Je me soucie vraiment seulement de l'en-tête, y a-t-il un moyen facile d'obtenir juste cela (autre que d'analyser les données moi-même).

EDIT: Je devrais qualifier Je me soucie également de l'hôte/du port afin que je puisse garder une trace des demandes sur plusieurs paquets.

12
tzenes

Vous pouvez utiliser les filtres d'affichage d'en-tête HTTP spécifiques pour afficher uniquement les en-têtes de la requête, juste les en-têtes de réponse ou les deux.

Pour les en-têtes de la demande:

tshark tcp port 80 or tcp port 443 -V -R "http.request"

Pour les en-têtes de réponse:

tshark tcp port 80 or tcp port 443 -V -R "http.response"

Et pour les en-têtes de demande et de réponse:

tshark tcp port 80 or tcp port 443 -V -R "http.request || http.response"

Remarque: cela ne filtre pas uniquement les en-têtes, juste les paquets contenant les en-têtes, de sorte que vous obtiendrez probablement des données, mais que la quantité de données devrait être inférieure à ce que vous auriez autrement.

18
heavyd

En fait, vous pouvez! Toutes les réponses précédentes étaient très proches. Tout ce dont tu as besoin c'est -O Drapeau qui filtre toutes les informations mais http.

tshark -O http -R http.request tcp port 80 or tcp port 443
5
Denis Bazhenov

J'ai été capable de combiner la réponse de @heavyd et de l'exécuter à travers un filtre SED que j'ai reçu d'un SO article - (réponse de FJ) pour préparer ce bébé, qui filtre uniquement les en-têtes: )

Sudo tshark tcp port 80 or tcp port 443 -V -R "http.request || http.response" | sed -rn '/Hypertext Transfer Protocol/{:a;N;/    \\r\\n:?/{/.*/p;d};ba}' >> /tmp/filtered
3
quickshiftin

Ma propre version de filtre pour une lecture facile:

tshark -V -R "tcp.port ==80 && (http.request || http.response)" | awk "/Hypertext Transfer Protocol/,/Frame/ { print };/Transmission Control Protocol/{print};/Internet Protocol/{print}" | grep -v Frame

De cette façon, je ne vois que la propriété intellectuelle et TCP Informations, sans toutes les trucs de niveau bas, ainsi que les informations HTTP complètes.

2
Miquel Adrover