Anında bir ağ arayüzünde HTTP isteklerini izleme?


79

Hata ayıklama amacıyla bir ağ arayüzündeki http isteklerini izlemek istiyorum.

Saf bir tcpdumpkomut satırı kullanarak çok düşük düzeyde bilgi alıyorum ve ihtiyaç duyduğum bilgiler çok net bir şekilde gösterilmiyor.

Trafiği tcpdumpbir dosyaya aktarmak ve daha sonra kullanmak wireshark, anında hareket etmemesi dezavantajına sahiptir.

Bunun gibi bir alet kullanımı hayal ediyorum:

$ monitorhttp -ieth0 --only-get --just-urls
2011-01-23 20:00:01 GET http://foo.example.org/blah.js
2011-01-23 20:03:01 GET http://foo.example.org/bar.html
...

Linux kullanıyorum


Yanıtlar:


100

Deneyin tcpflow:

tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'

Çıktı şöyle:

GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com

Grep ifadesine açıkça ek HTTP yöntemleri ekleyebilir sedve iki satırı bir tam URL olarak birleştirmek için kullanabilirsiniz .


Bunun bir avantajı, tcpflowUbuntu 10.04'teki varsayılan depolarda zaten mevcut olmasıdır (justsniffer, httpry değildir). Paket bilgisi IP parçalarının doğru şekilde kaydedilmediğini - bu kullanım durumu için önemliyse bilmiyorum - belki de justsniffer bunları daha iyi ele alabilir.
maxschlepzig

Yalnızca URL’yi aldığınızdan, farketmez gibi görünmüyor. Tcpflow, paketleri arayüzde alındıklarına göre görüntüler. Böylece, dosya içeriğini yakalamaya çalışıyorsanız, sıra dışı gelen ve bozuk bir dosya üreten paketler alabilirsiniz. Ancak kullanım durumunuz soruda listelenmiştir, bunun sizin için işe yarayacağını düşünüyorum. Ayrıca sıralama veya daha sonra ne olacağına ilişkin paket verilerinin daha fazlasını görmek için grep'inizi genişletebilir (veya -o öğesini kaldırabilirsiniz).
bahamat

@bahamat "tcpflow" https URL ile çalışabilir mi?
Maulik patel,

Artan derecede, cevap hayır. Geçmişte, SSL, akış için kullanılan anahtara erişiminiz olsaydı, o anahtarla kullanılan herhangi bir trafiğin şifresini çözebileceğiniz kadar zayıftı. Bugün, çoğu site mükemmel ileri gizlilik kullanacak ve geçici anahtarları pazarlık edecek. Bugün en iyi seçenek sözde "kablodaki yumru" saydam vekildir.
bahamat

1
tarama yaparken, wifi kullanarak hiçbir şey almadım: sudo tcpflow -p -c -i wlo2 bağlantı noktası 80 | grep -oE '(GET | POST | HEAD). * HTTP / 1. [01] | Sunucu:. *'
ses

23

Bunu yapmak için httpry veya Justniffer kullanabilirsiniz.

httpry örneğin Fedora paket deposu üzerinden mevcuttur.

Örnek çağrı:

# httpry -i em1

( em1bir ağ arayüzü adını gösterir)

Örnek çıktı:

2013-09-30 21:35:20    192.168.0.1     198.252.206.16    >    POST    unix.stackexchange.com    /posts/6281/editor-heartbeat/edit    HTTP/1.1
2013-09-30 21:35:20    198.252.206.16  192.168.0.1       < HTTP/1.1   200    OK
2013-09-30 21:35:49    192.168.0.1     198.252.206.16    >    POST    unix.stackexchange.com    /posts/validate-body                 HTTP/1.1
2013-09-30 21:35:49    198.252.206.16  192.168.0.1       < HTTP/1.1   200    OK
2013-09-30 21:33:33    192.168.0.1      92.197.129.26    >    GET     cdn4.spiegel.de    /images/image-551203-breitwandaufmacher-fgoe.jpg    HTTP/1.1

(çıktı biraz kısaldı)


İstek veya yanıtın başlığını veya gövdesini nasıl gösterebilirim?
Mohammed Noureldin

hiçbir şey sudo httpry -i wlo2 var (burada wlo2 wifi aygıt adı ile)
ses

7

Ben de https için çalışması gereken ek şartı ile benzer bir şey arıyordum .

pcap tabanlı araçlar tcpflow httpry urlsnarfve diğer tcpdump kung fu http için iyi çalışır, ancak güvenli istekleriniz için şansınız kalmaz.

Ben ile geldi urldump etrafında küçük bir sarıcı, mitmproxy .
iptablestrafiği proxy'ye yönlendirmek için kullanılır, bu yüzden saydam çalışır.

$ sudo urldump   
http://docs.mitmproxy.org/en/stable/certinstall.html
http://docs.mitmproxy.org/en/stable/_static/js/modernizr.min.js
https://media.readthedocs.org/css/sphinx_rtd_theme.css
https://media.readthedocs.org/css/readthedocs-doc-embed.css
https://media.readthedocs.org/javascript/readthedocs-doc-embed.js
...

Daha fazla bilgi için README'ye bakınız .


1

Bence Wireshark istediğini yapabilir

Artı tarafta, çok güçlü, apt-get aracılığıyla kurabilirsiniz ve bir GUI ile birlikte geliyor.

Bununla birlikte, filtre sistemi karmaşıktır - ancak yerleşik iyi eğitimler vardır ve size trafiğe canlı bir başlangıç ​​ya da durma özeti verecektir.

'Http' kelimesini filtreye yazmanız muhtemelen aradığınızı size verecektir (örneğin, kullanıcılar tarafından oluşturulan ana trafik).


Bunun neden indirildiğini bilmek istersiniz. Wireshark anında arayüzü okuyabilir ve sadece http trafiğine filtre uygulayabilir.
Kevin M

@Kevin M, Cevabınızı düşürmedim. Ancak dürüst olmak gerekirse, cevabınız biraz eksik ve konu dışı. 1) Wireshark'ın tam olarak nasıl kullanılması gerektiği, yani bir filtrenin kullanılması, tam filtre ifadesi, vb. İle ilgili ayrıntıları kaçırır. GUI yaklaşımında, varsayılan görünüm, etki alanı adının yan yana gösterilmediği GET isteklerini görüntüler; bu durum kabataslak kullanım durumu için uygun değildir.
maxschlepzig

Yani: s / cevabın /
Fobinin

1

Başka bir iyi seçenek nethogs olabilir

Fedora'da çekirdek paketler arasında bulunur ve centos'ta epel deposundan alabilirsiniz.


1

Ayrıca, dsniff paketinin bir urlsnarfparçası olan (örneğin Fedora 19 ile birlikte paketlenmiş) komut satırı programı da vardır .

Örnek:

# urlsnarf -i em1
urlsnarf: listening on em1 [tcp port 80 or port 8080 or port 3128]
jhost - - [29/May/2014:10:25:09 +0200] "GET http://unix.stackexchange.com/questions HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/ HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/css/style-V5-2-2.css HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/jscfg/http/global-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/js/http/javascript-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/js/http/interface-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/js/http/netmind-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/favicon.ico HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "POST http://ocsp.thawte.com/ HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "POST http://ocsp.thawte.com/ HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
[..]

(önce SE'ye, ardından spiegel.de'ye göz atarken)

Sınırlamalar: dsnarf IPv6'yı desteklemiyor . Bu hata raporunu Fedora 19’daki 0.17 ile yeniden üretebilirim. Ayrıca Ubuntu güvenilir atm’inde de kırılıyor gibi gözüküyor.

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.