เครื่องมือสำหรับการแยกไฟล์ pcap โดยการเชื่อมต่อ TCP? [ปิด]


16

มีเครื่องมือในการแบ่งไฟล์การจับแพ็คเก็ต (ในรูปแบบ pcap) เป็นไฟล์แยกสำหรับการเชื่อมต่อ TCP แต่ละครั้งหรือไม่? (นอกเหนือจากสคริปต์เชลล์ที่ปลูกในบ้านซึ่งอาจจำเป็นต้องเรียกใช้มากกว่าสองครั้งในการดักจับ ... ) บางอย่างเช่น 'ติดตาม TCP สตรีม' ของ wireshark แต่สำหรับบรรทัดคำสั่ง (ฉันเกรงว่า wireshark จะใช้หน่วยความจำจำนวนมากเมื่อแสดงการจับแพ็คเก็ต 700 MB)

ฉันดูที่tcpflowแต่ดูเหมือนว่าจะสร้างไฟล์ที่ใหญ่กว่าไฟล์ pcap ดั้งเดิมและดูเหมือนว่าพวกเขาจะไม่อยู่ในรูปแบบ pcap


ไฟล์ที่เป็นผลมาจาก tcpflow ไม่ใช่ pcaps เป็นไฟล์ tcp payloads จริงของสตรีม tcp
chris

คำตอบ:


9

คุณยังสามารถใช้PcapSplitterซึ่งเป็นส่วนหนึ่งของแพ็คเกจPcapPlusPlus มันทำสิ่งที่คุณต้องการ (ซึ่งแบ่งไฟล์ pcap โดยการเชื่อมต่อ TCP หรือ UDP) มันเป็นหลายแพลตฟอร์มและไม่ จำกัด จำนวนการเชื่อมต่อในไฟล์ต้นฉบับ (เพื่อให้คุณสามารถใช้เพื่อแยกขนาดใหญ่ ไฟล์ pcap ที่มีการเชื่อมต่อนับพันหรือมากกว่านั้น) ลิงค์ด้านบนมีไว้สำหรับซอร์สโค้ด แต่ถ้าคุณต้องการไบนารีที่คอมไพล์แล้ว - นี่คือลิงค์สำหรับไบนารีที่ฉันสร้างขึ้นสำหรับหลายแพลตฟอร์ม

แก้ไข:เห็นได้ชัดว่าเวอร์ชั่นใหม่ของ PcapPlusPlus ได้รับการปล่อยตัวและประกอบด้วย PcapSplitter ไบนารีสำหรับแพลตฟอร์มจำนวนมาก (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian) ฉันคิดว่าการใช้ไบนารีเหล่านี้ดีกว่าลิงก์ที่ฉันให้ไว้ก่อนหน้านี้ คุณสามารถค้นหาได้ที่นี่


10

คุณสามารถใช้tcpdumpเพื่อแยกส่วนของ pcap ที่คุณต้องการ ... สมมติว่าคุณกำลังมองหาแพ็คเก็ตในการเชื่อมต่อซ็อกเก็ตระหว่าง TCP / 55777 บนโฮสต์หนึ่งและ TCP / 80 ในอีก ไฟล์ต้นฉบับของคุณคือbigfile.pcapซึ่งเป็น sniffer dump ของเซสชัน HTTP จำนวนมากไปยังโฮสต์เว็บที่เป็นปัญหา ...

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

ที่จะดึงการส่งข้อมูลทั้งหมดไปและจาก TCP / 55777 ในและคัดลอกลงในbigfile.pcapsession.pcap


ไม่-s0ได้มีผลกระทบใด ๆ เมื่อใช้ร่วมกับ-r?
kasperd

4

overkill เล็กน้อย แต่เมื่อใช้tshark(ส่งมาพร้อมwireshark) คุณสามารถทำได้ด้วย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

ซึ่งสร้างไฟล์ชื่อเช่น1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap(ขึ้นอยู่กับแพ็กเก็ตแรกที่เห็นสำหรับการเชื่อมต่อแต่ละครั้ง)


3

tcpflow คือสิ่งที่คุณต้องการ - แยก pcaps ออกเป็นหนึ่งไฟล์ต่อเซสชัน TCP

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


3
ตามที่กล่าวไว้ในคำถามฉันลองแล้วไม่เข้าใจว่าทำไมไฟล์ผลลัพธ์ที่ส่งออกมีขนาดใหญ่กว่าไฟล์อินพุต (pcap) ...
Andre Holzner

1
tcpflow ยังดูเหมือนว่าจะไม่สามารถที่จะส่งออกไฟล์ pcap
takumar

2

ดูเหมือนจะมีเครื่องมือนี้ซึ่งอาจใช้งานได้ (ฉันไม่ได้ใช้มันเป็นการส่วนตัว)

http://www.netresec.com/?page=SplitCap (ใช้ Windows)

SplitCap เป็นตัวแยกไฟล์ pcap โอเพนซอร์สฟรี SplitCap แบ่งไฟล์ pcap ขนาดใหญ่หนึ่งไฟล์ออกเป็นหลายไฟล์ตามเซสชัน TCP และ UDP หนึ่งไฟล์ pcap ต่อเซสชัน SplitCap ยังสามารถใช้เพื่อแยกไฟล์ pcap เป็นหนึ่งไฟล์ pcap ต่อคู่โฮสต์แทนเซสชัน


1

แรงบันดาลใจจาก @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 ทำไมมันได้หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.