แรงบันดาลใจจาก @sch ที่นี่เป็นรุ่นทุบตี:
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
ชื่อไฟล์จะเป็นเช่นนั้น: stream number__time__source IP__port__destination IP__port.pcap
tr -d '\r'
ใช้สำหรับผู้ใช้ windows เนื่องจาก tshark ใน windows output CR LF
แก้ไข :
วิธีแก้ปัญหาด้วย tshark ช้ามาก แต่ก็แน่ใจ SplitCap เร็วสุด ๆ แต่เมื่อมีข้อผิดพลาดในบางแพ็คเก็ตมันก็จะล่มในขณะที่ tshark จะแจ้งให้คุณทราบถึงข้อผิดพลาดเท่านั้น แต่ดำเนินการต่อ:
tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.
และในที่สุดก็มี PcapSplitter ที่เร็วสุด แต่ก็ต้องใช้โปรแกรมควบคุม winpcap มันไม่สามารถใช้งานได้กับไดรเวอร์ npcap ใน windows
แต่มีวิธีการแก้ SplitCap: ใช้pcapfixฉันสามารถแก้ไขแพ็กเก็ตที่เสียหายแล้ว SplitCap ไม่เคยล้มเหลวอีกครั้ง และนี่คือสิ่งที่ฉันใช้ตอนนี้เพราะ tshark ช้ามากในการแยก
และวิธีการ PcapSplitter ฉันไม่ได้ฉีด winpcap dll โดยใช้วิธีการใด ๆ แต่ในขณะที่เรามี SplitCap ทำไมมันได้หรือไม่