2012-01-18 24 views
8

Với tệp pcap, tôi có thể trích xuất nhiều thông tin từ yêu cầu HTTP được xây dựng lại và phản hồi bằng cách sử dụng neat filters provided by Wireshark. Tôi cũng đã có thể split the pcap file into each TCP stream.Làm cách nào để sử dụng tshark để in các cặp yêu cầu-phản hồi từ tệp pcap?

Sự cố tôi đang gặp phải là tất cả các bộ lọc tuyệt vời tôi có thể sử dụng với tshark, tôi không thể tìm thấy bộ lọc cho phép tôi in toàn bộ các yêu cầu/phản hồi. Tôi đang gọi một cái gì đó như thế này:

tshark -r dump.pcap -R "tcp.stream==123 and http.request" -T fields -e http.request.uri 

Có một số tên bộ lọc tôi có thể chuyển đến -e để nhận được yêu cầu/nội dung phản hồi không? Gần nhất tôi đã đến là sử dụng cờ -V, nhưng nó cũng in ra một loạt các thông tin tôi không cần thiết và muốn tránh phải kludge ra với một bộ lọc "câm".

+0

các snarflen của chụp ban đầu là gì. Nếu bạn không thu thập gói đầy đủ, bạn có thể có dữ liệu. –

+0

Các ảnh chụp đều ổn. MTU trên giao diện tôi sử dụng là 1514 và tôi đã chụp được 1600. Tôi mở pcap trong Wireshark và có thể nhận các cặp yêu cầu-phản hồi riêng lẻ dưới dạng luồng; Tôi chỉ đang tìm cách viết kịch bản chống lại nó. –

+0

Cool - chỉ loại trừ rõ ràng nhất –

Trả lời

7

Nếu bạn sẵn sàng chuyển sang công cụ khác, tcptrace can do this bằng tùy chọn -e. Nó cũng có phần mở rộng phân tích HTTP (tùy chọn xHTTP) tạo ra các cặp yêu cầu/repsonse HTTP cho mỗi luồng TCP.

Đây là một ví dụ sử dụng:

tcptrace --csv -xHTTP -f'port=80' -lten capturefile.pcap 
  • --csv để định dạng đầu ra như dấu phẩy sperated biến
  • -xHTTP cho yêu cầu HTTP/văn bản trả lời để 'http.times' điều này cũng chuyển sang -e để tải các tải trọng của luồng TCP, vì vậy bạn thực sự không cần -e cũng như
  • -f'port = 80 ' để lọc o ut phi web giao thông
  • -l cho hình thức đầu ra dài
  • -t để cho tôi tiến bộ chỉ
  • -n để tắt độ phân giải hostname (nhanh hơn nhiều mà không này)
+0

Tôi đã sử dụng tcptrace. Nó khá hứa hẹn. Cảm ơn! Đối với một số lý do lạ, chỉ cần sử dụng 'tcptrace -e my.dump' không tách riêng các yêu cầu một cách chính xác. Tôi nghi ngờ đây chỉ là một trường hợp của tôi làm điều gì đó sai vì Wireshark làm cùng một chia tách tốt, vì vậy tôi sẽ poke vào nó nhiều hơn một chút. Nếu bạn có một lớp lót ở đầu đầu của bạn để trích xuất các cặp yêu cầu-phản hồi từ một tệp pcap chuẩn (không may với một số ít các gói bị cắt), tôi là tất cả các tai :). –

+0

thêm một ví dụ - điều này làm việc cho tôi, nhưng tôi chắc chắn bạn sẽ gặp phải vấn đề nếu yu có các gói bị cắt ngắn – rupello

0

Tôi sử dụng dòng này để hiển thị nội dung thân và phản hồi cuối cùng 10 giây (https://gist.github.com/diyism/eaa7297cbf2caff7b851):

sudo tshark -a duration:10 -w /tmp/input.pcap;for stream in `sudo tshark -r /tmp/input.pcap -R "tcp and (http.request or http.response) and !(ip.addr==192.168.0.241)" -T fields -e tcp.stream | sort -n | uniq`; do sudo tshark -q -r /tmp/input.pcap -z follow,tcp,ascii,$stream; done;sudo rm /tmp/input.pcap 
2

Nếu bạn đã chụp tệp pcap, bạn có thể thực hiện như sau để hiển thị tất cả yêu cầu + câu trả lời.

filename="capture_file.pcap" 
for stream in `tshark -r "$filename" -2 -R "tcp and (http.request or http.response)" -T fields -e tcp.stream | sort -n | uniq`; do 
    echo "==========BEGIN REQUEST==========" 
    tshark -q -r "$filename" -z follow,tcp,ascii,$stream; 
    echo "==========END REQUEST==========" 
done; 

Tôi chỉ cần thực hiện diyism trả lời dễ dàng hơn một chút để hiểu (bạn không cần sudo, và nhiều dòng kịch bản là imo đơn giản để nhìn vào)

Các vấn đề liên quan