Tshark'tan sadece Http başlığını nasıl döndürürüm?


12

Paketlerimi koklamak için tshark kullanıyorum ve sadece http başlığıyla ilgileniyorum (tercihen gönderildiği formda, ancak alabileceğim şeyi alacağım).

Kullanmayı denedim:

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

Bu da bana başlık verdi, ama aynı zamanda içerik (ki ben istemiyorum onun ayrıştırmak için büyük miktarda çöp). Gerçekten sadece başlığı önemsiyorum, sadece bunu elde etmenin kolay bir yolu var mı (verileri kendim ayrıştırmak dışında).

Düzenleme: Ben de birden çok paket arasında istekleri takip edebilirsiniz böylece ana / bağlantı noktası umurumda hak etmelidir.

Yanıtlar:


18

Yalnızca istek üstbilgilerini, yalnızca yanıt üstbilgilerini veya her ikisini birden göstermek için belirli HTTP üstbilgisi görüntüleme filtrelerini kullanabilirsiniz.

Yalnızca istek üstbilgileri için:

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

Yalnızca yanıt başlıkları için:

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

Hem istek hem de yanıt üstbilgileri için:

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

Not: Bu yalnızca başlıkları filtrelemez, yalnızca üstbilgileri içeren paketleri filtreleyemez, bu nedenle yine de bazı veriler elde edersiniz, ancak veri miktarı aksi takdirde olduğundan daha az olmalıdır.


Hala en.wikipedia.org için bir isteğim var gibi bir ton veri hakkında konuşuyoruz. Üstbilgilerde yalnızca 1k'den daha azını istediğimde 750k geri dönüyorum.
tzenes

tshark bir paket yakalama aracıdır, Fiddler veya başka bir yalnızca HTTP analiz aracı gibi bir şeye bakmak isteyebilirsiniz .
heavyd

Kemancıya aşina değilim ama amacım bağlantı verimini izlemek, bu yüzden HTTP üstbilgilerini korurken requesttime / firstbyte / lastbyte bilmek istiyorum. tshark zaten problemimin çoğunu çözüyor, sadece başlıkları almam gerekiyor.
tzenes

3
"Tshark: Geçersiz yakalama filtresi" (Tshark 2.0.2) üretir . Geçici çözüm olarak kullandım:tshark -V -Y http.request tcp port 80 or tcp port 443
jfs

5

Aslında yapabilirsiniz! Önceki tüm cevaplar çok yakındı. Tek ihtiyacınız -Oolan, HTTP dışındaki tüm bilgileri filtreleyen işarettir.

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

1
Bu doğru cevap.
Florin Andrei

3

@Heavyd'in cevabını birleştirip bir SO makalesinden aldığım bir sed filtresinden çalıştırabildim - ( FJ'nin cevabı), sadece başlıkları filtreleyen bu bebeği pişirmek için :)

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

1
korkunç sed çünkü ben okuyamıyorum ama bir cazibe gibi çalıştı.
Setheron

2

Kolay okuma için kendi filtre versiyonum:

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

Bu şekilde, yalnızca ilgili IP ve TCP bilgilerini, tüm düşük düzeyli şeyleri ve ayrıca eksiksiz HTTP bilgilerini görüyorum.


sudo tshark -V -s0 bağlantı noktası 80 -Y "(http.request || http.response)" | awk "/ Köprü Metni Aktarım Protokolü /, / ^ $ /"
Lmwangi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.