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?