công cụ chia tập tin pcap bằng kết nối TCP? [đóng cửa]


16

Có công cụ nào để chia một tệp chụp gói (ở định dạng pcap) thành các tệp riêng cho mỗi kết nối TCP không? (khác với tập lệnh shell được phát triển tại nhà có thể cần chạy hai lần so với bản chụp ...). Một cái gì đó giống như 'theo dõi luồng TCP' của wireshark nhưng đối với dòng lệnh (Tôi sợ rằng wireshark sẽ tiêu tốn một lượng lớn bộ nhớ khi hiển thị chụp gói 700 MB)

Tôi đã xem xét tcpflow nhưng dường như nó tạo ra các tệp lớn hơn nhiều so với các tệp pcap gốc và chúng dường như không ở định dạng pcap.


Các tệp kết quả từ tcpflow không phải là pcaps, chúng là tải trọng tcp thực tế của các luồng tcp.
chris

Câu trả lời:


9

Bạn cũng có thể sử dụng PcapSplitter , một phần của gói PcapPlusPlus . Nó thực hiện chính xác những gì bạn cần (đang phân tách các tệp pcap bằng kết nối TCP hoặc UDP), đó là đa nền tảng và nó không có giới hạn về số lượng kết nối trong tệp gốc (vì vậy bạn có thể sử dụng nó để chia nhỏ tập tin pcap chứa hàng ngàn kết nối hoặc thậm chí nhiều hơn). Liên kết ở trên là dành cho mã nguồn, nhưng nếu bạn muốn một tệp nhị phân được biên dịch - đây là liên kết cho các tệp nhị phân tôi đã tạo cho một số nền tảng

EDIT: rõ ràng là một phiên bản mới của PcapPlusPlus đã được phát hành và nó chứa các nhị phân PcapSplitter cho khá nhiều nền tảng (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Tôi nghĩ rằng tốt hơn là sử dụng các nhị phân này hơn liên kết tôi đã cung cấp trước đây. Bạn có thể tìm thấy nó ở đây


10

Bạn có thể sử dụng tcpdumpđể trích xuất các phần của pcap mà bạn muốn ... giả sử bạn đang tìm kiếm các gói trong kết nối ổ cắm giữa TCP / 55777 trên một máy chủ và TCP / 80 trên một máy chủ khác. Tệp nguồn của bạn là bigfile.pcap, một kết xuất sniffer của nhiều phiên HTTP đến máy chủ web được đề cập ...

tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777

Điều đó sẽ kéo tất cả các gói đến và đi từ TCP / 55777 bigfile.pcapvà sao chép chúng vào session.pcap.


-s0bất kỳ tác dụng khi sử dụng cùng với -r?
kasperd

4

Một chút quá mức, nhưng bằng cách sử dụng tshark(vận chuyển với wireshark), bạn có thể làm với zsh:

file=file.pcap
tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -A f; do 
    tshark -r $file -2R "tcp.stream == $f[1]" -w ${(j:-:)f[2,-1]}.pcap
  done

Tạo các tệp có tên như thế 1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap(dựa trên gói đầu tiên được nhìn thấy cho mỗi kết nối).


3

tcpflow là những gì bạn muốn - chia pcaps thành một tệp cho mỗi phiên TCP

http://www.circlemud.org/jelson/software/tcpflow/


3
như đã đề cập trong câu hỏi, tôi đã thử nó và không hiểu tại sao các tệp đầu ra kết quả lại lớn hơn nhiều so với các tệp đầu vào (pcap) ...
Andre Holzner

1
Ngoài ra tcpflow dường như không thể xuất các tệp pcap.
takumar

2

Dường như có công cụ này có thể hoạt động (cá nhân tôi chưa sử dụng nó)

http://www.netresec.com/?page=SplitCap (dựa trên windows)

SplitCap là một trình phân tách tệp pcap mã nguồn mở miễn phí (như trong bia). SplitCap chia một tệp pcap lớn thành nhiều tệp dựa trên các phiên TCP và UDP, một tệp pcap mỗi phiên. SplitCap cũng có thể được sử dụng để chia tệp pcap thành một tệp pcap cho mỗi cặp máy chủ thay vì phiên.


1

lấy cảm hứng từ @sch đây là phiên bản bash:

file=cap.pcap
$tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -a f; do 
  [[ "${f[5]}" ]] || continue  # sometimes there is no stream number ex. UDP
  fileout=$(echo ${f[0]}__${f[1]}__${f[2]}__${f[3]}__${f[4]}__${f[5]} | tr -d '\r'  )
    $tshark -r $file -2R "tcp.stream == ${f[0]}" -w "$fileout.pcap"
  done
read

tên tệp sẽ như thế: stream number__time__source IP__port__destination IP__port.pcap

tr -d '\r' dành cho người dùng windows, vì tshark trong cửa sổ đầu ra CR LF.

Chỉnh sửa :

Giải pháp này với tshark rất chậm nhưng chắc chắn. SplitCap siêu nhanh nhưng khi có lỗi trong một số gói thì nó gặp sự cố, trong khi tshark chỉ thông báo cho bạn về lỗi nhưng vẫn tiếp tục:

tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.

và cuối cùng cũng có PcapSplitter siêu nhanh nhưng nó cần trình điều khiển winpcap, nó không hoạt động với trình điều khiển npcap trong windows.

Nhưng có một giải pháp cho SplitCap: sử dụng pcapfix Tôi có thể sửa các gói bị hỏng sau đó SplitCap không bao giờ gặp sự cố nữa. và đây là những gì tôi đang sử dụng, bởi vì tshark rất chậm trong việc chia tách.

và một giải pháp cho PcapSplitter tôi đã làm là tiêm dll winpcap bằng bất kỳ phương thức nào nhưng trong khi chúng tôi có SplitCap thì tại sao lại làm như vậy?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.