2012-02-11 27 views
33

Tôi muốn chạy tcpdump với một số tham số (Vẫn không biết phải sử dụng). Sau đó tải trang stackoverflow.com này.Cách chụp tất cả các gói HTTP bằng tcpdump

Đầu ra phải là giao tiếp HTTP. Sau đó tôi muốn sử dụng nó như là một kịch bản shell. Vì vậy, bất cứ khi nào tôi muốn kiểm tra giao tiếp HTTP của trang web.com, tôi chỉ có thể chạy script.sh site.com

Giao tiếp HTTP phải đủ đơn giản. Như sau.

GET /questions/9241391/how-to-capture-all-the-http-communication-data-using-tcp-dump 
Host: stackoverflow.com 
... 
... 

HTTP/1.1 200 OK 
Cache-Control: public, max-age=60 
Content-Length: 35061 
Content-Type: text/html; charset=utf-8 
Expires: Sat, 11 Feb 2012 15:36:46 GMT 
Last-Modified: Sat, 11 Feb 2012 15:35:46 GMT 
Vary: * 
Date: Sat, 11 Feb 2012 15:35:45 GMT 


.... 
decoded deflated data 
.... 

Bây giờ, bạn có thể cho tôi biết tôi nên sử dụng tùy chọn nào với tcpdump để chụp.

+1

trông giống như "curl -v site.com" là những gì bạn cần. :) –

Trả lời

87

Nó có thể được thực hiện bằng cách ngrep

ngrep -q -d eth1 -W byline host stackoverflow.com and port 80 
    ^^  ^  ^  
     | |  |   | 
     | |  |   | 
     | |  |   v 
     | |  |   filter expression 
     | |  |   
     | |  +--> -W is set the dump format ("normal", "byline", "single", "none") 
     | | 
     | +----------> -d is use specified device instead of the pcap default 
     | 
     +-------------> -q is be quiet ("don't print packet reception hash marks") 
+1

Lưu ý: đối với những người sử dụng ngrep 1.45 được cài đặt qua máy pha trong OS X 10.9.x/Mavericks, nó có thể gây ra "Lỗi phân đoạn: 11". jfarcand tìm thấy một cách giải quyết ở đây: https://gist.github.com/jfarcand/8302675 và nó hoạt động với tôi: 'ngrep -q -W byline -d en0 '' 'host some_hostname và cổng 80''. –

+8

Thumbup cho nghệ thuật ASCII. – neevek

19

Dựa trên những gì bạn đã đề cập, ngrep (trên Unix) và Fiddler (Windows) có thể là giải pháp tốt hơn/dễ dàng hơn.

Nếu bạn hoàn toàn muốn sử dụng tcpdump, hãy thử các tùy chọn sau

 
tcpdump -A -vvv host destination_hostname 

-A (ascii) 
-vvv (verbose output) 
Các vấn đề liên quan